Class EntityQueryRx
java.lang.Object
org.aksw.jena_sparql_api.rx.entity.engine.EntityQueryRx
Methods for the execution of
EntityQueryBasics- Author:
- raven
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <ITEM,KEY, VALUE>
io.reactivex.rxjava3.core.FlowableTransformer<ITEM,Map.Entry<KEY, VALUE>> aggregateConsecutiveItemsWithSameKey(Function<? super ITEM, KEY> itemToKey, org.aksw.commons.collector.domain.Aggregator<? super ITEM, ?, VALUE> aggregator) A generic flowable transformer that groups consecutive items that evaluate to the same key.static EntityQueryImplalignVariables(EntityQueryImpl query) Create a transformed copy of the query where all variables that need to join have the same name whereas variables that are not supposed to join have been remappedstatic EntityQueryBasicstatic AggObjectGraphcreateGraphAggregator(org.apache.jena.sparql.syntax.Template template, Set<? extends org.apache.jena.graph.Node> trackedTemplateNodes, Map<org.apache.jena.graph.Node, org.apache.jena.sparql.expr.ExprList> idMap, ExprListEval exprListEval, Supplier<org.apache.jena.graph.Graph> graphSupplier) Create an aggregator whose accumulators accumulate graphs from Bindings w.r.t.static Function<org.apache.jena.sparql.engine.binding.Binding,org.apache.jena.graph.Node> createKeyFunction(org.apache.jena.graph.Node root, Map<org.apache.jena.graph.Node, org.apache.jena.sparql.expr.ExprList> idMapping, ExprListEval exprListEval) Based on the information present inEntityQueryBasicreturn a function that deterministically yields the same node (possibly a blank node) when passing equivalent bindings to it.static List<org.apache.jena.query.SortCondition>createSortConditionsFromExprs(Iterable<org.apache.jena.sparql.expr.Expr> exprs, int dir) Create sort conditions with the given directions from an iterable ofExprsstatic List<org.apache.jena.query.SortCondition>createSortConditionsFromVars(Iterable<org.apache.jena.sparql.core.Var> vars, int dir) Util function to create sort conditions from variables and a directionstatic Function<org.apache.jena.sparql.algebra.Table,AggObjectGraph.AccObjectGraph> createTableToGraphMapper(org.apache.jena.sparql.syntax.Template template, Set<? extends org.apache.jena.graph.Node> trackedTemplateNodes, Map<org.apache.jena.graph.Node, org.apache.jena.sparql.expr.ExprList> idMapping, ExprListEval exprListEval, Supplier<org.apache.jena.graph.Graph> graphSupplier) Util function to yield a mapper from tables to graphs based on the provided arguments.static org.apache.jena.graph.NodedefaultEvalToNode(org.apache.jena.sparql.expr.ExprList exprs, org.apache.jena.sparql.engine.binding.Binding binding) One of the many ways to create always the same node (equals) from the values obtained by evaluating a list of expressions w.r.t.static io.reactivex.rxjava3.core.Flowable<org.apache.jena.rdf.model.RDFNode>execConstructEntities(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryBasic queryEx, Supplier<org.apache.jena.graph.Graph> graphSupplier, ExprListEval exprListEval) Execute a CONSTRUCT query w.r.t.static io.reactivex.rxjava3.core.Flowable<org.apache.jena.sparql.core.Quad>execConstructEntitiesNg(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryBasic queryEx) static io.reactivex.rxjava3.core.Flowable<org.apache.jena.sparql.core.Quad>execConstructEntitiesNg(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryBasic queryEx, Supplier<org.apache.jena.graph.Graph> graphSupplier, ExprListEval exprListEval) Stream the result of an entity query as named graphsstatic io.reactivex.rxjava3.core.Flowable<org.apache.jena.sparql.core.Quad>execConstructEntitiesNg(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryImpl query) static io.reactivex.rxjava3.core.Flowable<org.apache.jena.sparql.core.Quad>execConstructEntitiesNg(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryImpl query, Supplier<org.apache.jena.graph.Graph> graphSupplier) static io.reactivex.rxjava3.core.Flowable<org.apache.jena.sparql.core.Quad>execConstructEntitiesNg(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryImpl queryEx, Supplier<org.apache.jena.graph.Graph> graphSupplier, ExprListEval exprListEval) static io.reactivex.rxjava3.core.Flowable<GraphPartitionWithEntities>execConstructPartitionedOld(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryBasic queryEx, Supplier<org.apache.jena.graph.Graph> graphSupplier, ExprListEval exprListEval) static io.reactivex.rxjava3.core.Flowable<GraphPartitionWithEntities>execConstructPartitionedOld(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryImpl queryEx, Supplier<org.apache.jena.graph.Graph> graphSupplier, ExprListEval exprListEval) static io.reactivex.rxjava3.core.Flowable<org.apache.jena.rdf.model.RDFNode>execConstructRooted(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryBasic query) Execute a partitioned query.static io.reactivex.rxjava3.core.Flowable<org.apache.jena.rdf.model.RDFNode>execConstructRooted(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryBasic query, Supplier<org.apache.jena.graph.Graph> graphSupplier) Execute a partitioned query.static io.reactivex.rxjava3.core.Flowable<GraphPartitionWithEntities>execQueryActual(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, List<org.apache.jena.sparql.core.Var> partitionVars, Set<org.apache.jena.graph.Node> trackedTemplateNodes, org.apache.jena.query.Query selectQuery, Function<org.apache.jena.sparql.algebra.Table, AggObjectGraph.AccObjectGraph> tableToGraph) static io.reactivex.rxjava3.core.Flowable<Map.Entry<org.apache.jena.sparql.engine.binding.Binding,org.apache.jena.sparql.algebra.Table>> execSelectPartitioned(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, org.apache.jena.query.Query selectQuery, List<org.apache.jena.sparql.core.Var> partitionVars) Execute a SPARQL select query and partition its result set by the given partition variables.static List<org.apache.jena.sparql.core.Var>getEntityVars(org.apache.jena.graph.Node root, Map<org.apache.jena.graph.Node, org.apache.jena.sparql.expr.ExprList> idMapping) static Set<org.apache.jena.sparql.core.Var>getEssentialProjectVars(org.apache.jena.sparql.syntax.Template template, Map<org.apache.jena.graph.Node, org.apache.jena.sparql.expr.ExprList> idMapping) Return the sets of variables used in the template and the id mapping.static GraphPartitionJoinmerge(String groupName, List<org.apache.jena.sparql.core.Var> partitionVars, Collection<? extends GraphPartitionJoin> gps, boolean isOptional) static EntityQueryImplmergeFetchGroups(EntityQueryImpl query) Merges all graph partitions with the same fetch group name into a single graph partition.static org.apache.jena.query.QueryprependToOrderBy(org.apache.jena.query.Query query, List<org.apache.jena.query.SortCondition> sortConditions) Prepend a given sequence of sort conditions to those already in the query (if there are already any).static org.apache.jena.query.QuerypreprocessQueryForPartitionWithoutSubSelect(org.apache.jena.query.Query baseQuery, List<org.apache.jena.sparql.core.Var> partitionVars, Set<org.apache.jena.sparql.core.Var> requiredVars, boolean sortRowsByPartitionVars) Return a SELECT query from the given query where - it is ensured that all partitionVars are part of the projection (if they aren't already) - distinct is applied in preparation to instantiation of construct templates (where duplicates can be ignored) - if sortRowsByPartitionVar is true then result bindings are sorted by the primary key vars so that bindings that belong together are consecutive - In case of a construct template without variables variable free is handledstatic org.apache.jena.query.QuerypreprocessQueryForPartitionWithSubSelect(org.apache.jena.query.Query entityQuery, List<org.apache.jena.sparql.core.Var> partitionVars, org.apache.jena.sparql.syntax.Element attributeElement, Set<org.apache.jena.sparql.core.Var> requiredVars, List<org.apache.jena.query.SortCondition> partitionOrderBy, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGenerator) processEntityQuery(EntityQueryBasic queryEx, boolean forceSubSelect) processEntityQuery(EntityQueryBasic queryEx, boolean forceSubSelect, Supplier<org.apache.jena.graph.Graph> graphSupplier, ExprListEval exprListEval) Execute a CONSTRUCT query using partitions.
-
Constructor Details
-
EntityQueryRx
public EntityQueryRx()
-
-
Method Details
-
execConstructEntitiesNg
public static io.reactivex.rxjava3.core.Flowable<org.apache.jena.sparql.core.Quad> execConstructEntitiesNg(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryImpl query) -
execConstructEntitiesNg
public static io.reactivex.rxjava3.core.Flowable<org.apache.jena.sparql.core.Quad> execConstructEntitiesNg(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryImpl query, Supplier<org.apache.jena.graph.Graph> graphSupplier) -
execConstructEntitiesNg
public static io.reactivex.rxjava3.core.Flowable<org.apache.jena.sparql.core.Quad> execConstructEntitiesNg(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryImpl queryEx, Supplier<org.apache.jena.graph.Graph> graphSupplier, ExprListEval exprListEval) -
execConstructRooted
public static io.reactivex.rxjava3.core.Flowable<org.apache.jena.rdf.model.RDFNode> execConstructRooted(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryBasic query) Execute a partitioned query. See#execConstructEntities(SparqlQueryConnection, EntityQueryBasic, Supplier, ExprListEval) -
execConstructRooted
public static io.reactivex.rxjava3.core.Flowable<org.apache.jena.rdf.model.RDFNode> execConstructRooted(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryBasic query, Supplier<org.apache.jena.graph.Graph> graphSupplier) Execute a partitioned query. See#execConstructEntities(SparqlQueryConnection, EntityQueryBasic, Supplier, ExprListEval) -
alignVariables
Create a transformed copy of the query where all variables that need to join have the same name whereas variables that are not supposed to join have been remapped- Parameters:
query-- Returns:
-
assembleEntityAndAttributeParts
-
mergeFetchGroups
Merges all graph partitions with the same fetch group name into a single graph partition.- Parameters:
queryRaw-- Returns:
-
merge
public static GraphPartitionJoin merge(String groupName, List<org.apache.jena.sparql.core.Var> partitionVars, Collection<? extends GraphPartitionJoin> gps, boolean isOptional) -
execSelectPartitioned
public static io.reactivex.rxjava3.core.Flowable<Map.Entry<org.apache.jena.sparql.engine.binding.Binding,org.apache.jena.sparql.algebra.Table>> execSelectPartitioned(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, org.apache.jena.query.Query selectQuery, List<org.apache.jena.sparql.core.Var> partitionVars) Execute a SPARQL select query and partition its result set by the given partition variables.- Parameters:
conn-selectQuery-partitionVars-- Returns:
-
execConstructPartitionedOld
public static io.reactivex.rxjava3.core.Flowable<GraphPartitionWithEntities> execConstructPartitionedOld(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryImpl queryEx, Supplier<org.apache.jena.graph.Graph> graphSupplier, ExprListEval exprListEval) -
execConstructPartitionedOld
public static io.reactivex.rxjava3.core.Flowable<GraphPartitionWithEntities> execConstructPartitionedOld(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryBasic queryEx, Supplier<org.apache.jena.graph.Graph> graphSupplier, ExprListEval exprListEval) -
processEntityQuery
public static EntityQueryRx.EntityQueryProcessed processEntityQuery(EntityQueryBasic queryEx, boolean forceSubSelect) -
processEntityQuery
public static EntityQueryRx.EntityQueryProcessed processEntityQuery(EntityQueryBasic queryEx, boolean forceSubSelect, Supplier<org.apache.jena.graph.Graph> graphSupplier, ExprListEval exprListEval) Execute a CONSTRUCT query using partitions.- Parameters:
conn-queryEx-graphSupplier-exprListEval-- Returns:
-
execQueryActual
public static io.reactivex.rxjava3.core.Flowable<GraphPartitionWithEntities> execQueryActual(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, List<org.apache.jena.sparql.core.Var> partitionVars, Set<org.apache.jena.graph.Node> trackedTemplateNodes, org.apache.jena.query.Query selectQuery, Function<org.apache.jena.sparql.algebra.Table, AggObjectGraph.AccObjectGraph> tableToGraph) -
execConstructEntities
public static io.reactivex.rxjava3.core.Flowable<org.apache.jena.rdf.model.RDFNode> execConstructEntities(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryBasic queryEx, Supplier<org.apache.jena.graph.Graph> graphSupplier, ExprListEval exprListEval) Execute a CONSTRUCT query w.r.t. partitions. For every partition a graph fragment is constructed based on bindings that fell into the partition. In addition, designate all values in that partition that were bound to the node referred to byEntityQueryBasic#getEntityNode()as 'roots' of that partition. Roots serve as designated starting points for traversal of the graph fragment. Each root is returned as as separateRDFNodeinstance that holds a reference to that partition's graph.- Parameters:
conn-queryEx-graphSupplier-exprListEval-- Returns:
-
execConstructEntitiesNg
public static io.reactivex.rxjava3.core.Flowable<org.apache.jena.sparql.core.Quad> execConstructEntitiesNg(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryBasic queryEx) -
execConstructEntitiesNg
public static io.reactivex.rxjava3.core.Flowable<org.apache.jena.sparql.core.Quad> execConstructEntitiesNg(org.aksw.jenax.dataaccess.sparql.factory.execution.query.QueryExecutionFactoryQuery conn, EntityQueryBasic queryEx, Supplier<org.apache.jena.graph.Graph> graphSupplier, ExprListEval exprListEval) Stream the result of an entity query as named graphs- Returns:
-
createTableToGraphMapper
public static Function<org.apache.jena.sparql.algebra.Table,AggObjectGraph.AccObjectGraph> createTableToGraphMapper(org.apache.jena.sparql.syntax.Template template, Set<? extends org.apache.jena.graph.Node> trackedTemplateNodes, Map<org.apache.jena.graph.Node, org.apache.jena.sparql.expr.ExprList> idMapping, ExprListEval exprListEval, Supplier<org.apache.jena.graph.Graph> graphSupplier) Util function to yield a mapper from tables to graphs based on the provided arguments. -
createKeyFunction
public static Function<org.apache.jena.sparql.engine.binding.Binding,org.apache.jena.graph.Node> createKeyFunction(org.apache.jena.graph.Node root, Map<org.apache.jena.graph.Node, org.apache.jena.sparql.expr.ExprList> idMapping, ExprListEval exprListEval) Based on the information present inEntityQueryBasicreturn a function that deterministically yields the same node (possibly a blank node) when passing equivalent bindings to it.- Parameters:
root-idMapping-exprListEval-- Returns:
-
getEntityVars
-
createGraphAggregator
public static AggObjectGraph createGraphAggregator(org.apache.jena.sparql.syntax.Template template, Set<? extends org.apache.jena.graph.Node> trackedTemplateNodes, Map<org.apache.jena.graph.Node, org.apache.jena.sparql.expr.ExprList> idMap, ExprListEval exprListEval, Supplier<org.apache.jena.graph.Graph> graphSupplier) Create an aggregator whose accumulators accumulate graphs from Bindings w.r.t. to the provided mapping information.- Parameters:
template-idMap-exprListEval-graphSupplier-- Returns:
-
defaultEvalToNode
public static org.apache.jena.graph.Node defaultEvalToNode(org.apache.jena.sparql.expr.ExprList exprs, org.apache.jena.sparql.engine.binding.Binding binding) One of the many ways to create always the same node (equals) from the values obtained by evaluating a list of expressions w.r.t. a given binding.- Parameters:
exprs-binding-- Returns:
-
aggregateConsecutiveItemsWithSameKey
public static <ITEM,KEY, io.reactivex.rxjava3.core.FlowableTransformer<ITEM,VALUE> Map.Entry<KEY, aggregateConsecutiveItemsWithSameKeyVALUE>> (Function<? super ITEM, KEY> itemToKey, org.aksw.commons.collector.domain.Aggregator<? super ITEM, ?, VALUE> aggregator) A generic flowable transformer that groups consecutive items that evaluate to the same key. For every group an accumulator is created that receives the items.- Type Parameters:
ITEM- The incoming item typeKEY- The type of the keys derived from the itemsVALUE- The type of the value accumulated from the items- Parameters:
itemToKey- A function that yiels an item's keyaggregator- An aggregator for computing a value from the set of items with the same key- Returns:
-
getEssentialProjectVars
public static Set<org.apache.jena.sparql.core.Var> getEssentialProjectVars(org.apache.jena.sparql.syntax.Template template, Map<org.apache.jena.graph.Node, org.apache.jena.sparql.expr.ExprList> idMapping) Return the sets of variables used in the template and the id mapping.- Parameters:
objectQuery-- Returns:
-
prependToOrderBy
public static org.apache.jena.query.Query prependToOrderBy(org.apache.jena.query.Query query, List<org.apache.jena.query.SortCondition> sortConditions) Prepend a given sequence of sort conditions to those already in the query (if there are already any). Duplicate sort conditions are removed in the process- Parameters:
query-sortConditions- The sort conditions. If null or empty this method becomes a no-op.- Returns:
- The input query
-
createSortConditionsFromExprs
public static List<org.apache.jena.query.SortCondition> createSortConditionsFromExprs(Iterable<org.apache.jena.sparql.expr.Expr> exprs, int dir) Create sort conditions with the given directions from an iterable ofExprs -
createSortConditionsFromVars
public static List<org.apache.jena.query.SortCondition> createSortConditionsFromVars(Iterable<org.apache.jena.sparql.core.Var> vars, int dir) Util function to create sort conditions from variables and a direction -
preprocessQueryForPartitionWithSubSelect
public static org.apache.jena.query.Query preprocessQueryForPartitionWithSubSelect(org.apache.jena.query.Query entityQuery, List<org.apache.jena.sparql.core.Var> partitionVars, org.apache.jena.sparql.syntax.Element attributeElement, Set<org.apache.jena.sparql.core.Var> requiredVars, List<org.apache.jena.query.SortCondition> partitionOrderBy, org.aksw.commons.collections.generator.Generator<org.apache.jena.sparql.core.Var> varGenerator) -
preprocessQueryForPartitionWithoutSubSelect
public static org.apache.jena.query.Query preprocessQueryForPartitionWithoutSubSelect(org.apache.jena.query.Query baseQuery, List<org.apache.jena.sparql.core.Var> partitionVars, Set<org.apache.jena.sparql.core.Var> requiredVars, boolean sortRowsByPartitionVars) Return a SELECT query from the given query where - it is ensured that all partitionVars are part of the projection (if they aren't already) - distinct is applied in preparation to instantiation of construct templates (where duplicates can be ignored) - if sortRowsByPartitionVar is true then result bindings are sorted by the primary key vars so that bindings that belong together are consecutive - In case of a construct template without variables variable free is handled- Parameters:
baseQuery-partitionVars-requiredVars- The variables that need to be projected in the resulting querysortRowsByPartitionVar-- Returns:
-