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

it.unibz.inf.ontop.iq.node.ExtensionalDataNode Maven / Gradle / Ivy

package it.unibz.inf.ontop.iq.node;

import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Sets;
import it.unibz.inf.ontop.dbschema.RelationDefinition;
import it.unibz.inf.ontop.iq.LeafIQTree;
import it.unibz.inf.ontop.iq.exception.QueryNodeTransformationException;
import it.unibz.inf.ontop.iq.transform.node.HomogeneousQueryNodeTransformer;
import it.unibz.inf.ontop.model.term.Variable;
import it.unibz.inf.ontop.model.term.VariableOrGroundTerm;
import it.unibz.inf.ontop.model.term.functionsymbol.Predicate;
import it.unibz.inf.ontop.utils.ImmutableCollectors;

import java.util.Collection;
import java.util.Map;
import java.util.Optional;

/**
 * TODO: explain
 */
public interface ExtensionalDataNode extends LeafIQTree {

    RelationDefinition getRelationDefinition();

    ImmutableMap getArgumentMap();

    @Override
    ExtensionalDataNode acceptNodeTransformer(HomogeneousQueryNodeTransformer transformer)
            throws QueryNodeTransformationException;

    static  ImmutableMap union(ImmutableMap argumentMap1, ImmutableMap argumentMap2) {
        return Sets.union(argumentMap1.keySet(), argumentMap2.keySet()).stream()
                // For better readability
                .sorted()
                .collect(ImmutableCollectors.toMap(
                        i -> i,
                        i -> Optional.ofNullable(argumentMap1.get(i)).orElseGet(() -> argumentMap2.get(i))));
    }

    static ImmutableMap restrictTo(ImmutableMap argumentMap, java.util.function.Predicate indexes) {
        return argumentMap.entrySet().stream()
                .filter(e -> indexes.test(e.getKey()))
                .collect(ImmutableCollectors.toMap());
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy