All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.aksw.jena_sparql_api.utils.NfUtils Maven / Gradle / Ivy

There is a newer version: 3.17.0-1
Show newest version
package org.aksw.jena_sparql_api.utils;

import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;

import org.aksw.commons.collections.SetUtils;
import org.apache.jena.sparql.core.Var;
import org.apache.jena.sparql.expr.Expr;

import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;


public class NfUtils {
    public static Set getVarsMentioned(Iterable> clauses) {
        Set result = new HashSet();

        for(Iterable clause : clauses) {
            Set tmp = ClauseUtils.getVarsMentioned(clause);
            tmp.addAll(tmp);
        }

        return result;
    }
    
    public static Set> canonicalize(Iterable> clauses) {
        Set> result = StreamSupport.stream(clauses.spliterator(), false)
            .map(clause -> ClauseUtils.canonicalize(clause))
            .collect(Collectors.toSet());
        
        return result;
    }    
    
    /**
     * Create equivalence classes for clauses of a normal form
     * 
     * 
     */
    public static Multimap, Set> createStructuralEquivalenceClasses(Iterable> clauses) {
        Multimap, Set> result = HashMultimap.create();

        for(Iterable clause : clauses) {
            Set clazz = ClauseUtils.canonicalize(clause);
            result.put(clazz, SetUtils.asSet((Set)clause));
        }

        return result;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy