Class DataQueryImpl<T extends org.apache.jena.rdf.model.RDFNode>
java.lang.Object
org.aksw.jena_sparql_api.data_query.impl.DataQueryImpl<T>
- All Implemented Interfaces:
DataQuery<T>
- Direct Known Subclasses:
FacetedDataQueryImpl
public class DataQueryImpl<T extends org.apache.jena.rdf.model.RDFNode>
extends Object
implements DataQuery<T>
Optional paths
Given the following graph patterns, are the some algebraic relations that hold between them?
(a) { OPTIONAL { X } }
(b) { OPTIONAL { X OPTIONAL Y } }
(c) { OPTIONAL { X Y } }
c: If for some binding of X there is no suitable binding of Y, the whole binding will be dropped
Maybe optional should be part of the traversal api?
fwd('foo').opt().fwd('bar')
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected org.apache.jena.sparql.syntax.Elementgrouped mode (false): default semantic of construct queries partition mode (true): each row is individually mapped to a resource, used for facet value countsprotected org.aksw.jenax.dataaccess.sparql.datasource.RDFDataSourceprotected org.apache.jena.sparql.core.Varfilter/only affect this variable by default convenient if there is more than one primary key variable,protected List<org.apache.jena.sparql.syntax.Element>protected org.aksw.jenax.sparql.fragment.api.Fragment1protected Longprotected Longprotected booleanprotected List<org.apache.jena.sparql.core.Var>protected Randomprotected booleanprotected booleanprotected List<org.apache.jena.query.SortCondition>protected org.apache.jena.graph.Nodeprotected org.apache.jena.sparql.syntax.Template -
Constructor Summary
ConstructorsConstructorDescriptionDataQueryImpl(org.aksw.jenax.dataaccess.sparql.datasource.RDFDataSource dataSource, org.aksw.jenax.sparql.fragment.api.Fragment1 baseRelation, org.apache.jena.sparql.syntax.Template template, Class<T> resultClass) DataQueryImpl(org.aksw.jenax.dataaccess.sparql.datasource.RDFDataSource dataSource, org.apache.jena.sparql.syntax.Element baseElement, List<org.apache.jena.sparql.core.Var> primaryKeyVars, org.apache.jena.graph.Node superRootNode, org.apache.jena.sparql.core.Var defaultVar, org.apache.jena.sparql.syntax.Template template, Class<T> resultClass) DataQueryImpl(org.aksw.jenax.dataaccess.sparql.datasource.RDFDataSource dataSource, org.apache.jena.sparql.syntax.Element baseQueryPattern, org.apache.jena.sparql.core.Var rootVar, org.apache.jena.sparql.syntax.Template template, Class<T> resultClass) DataQueryImpl(org.apache.jena.rdfconnection.SparqlQueryConnection conn, org.aksw.jenax.sparql.fragment.api.Fragment1 baseRelation, org.apache.jena.sparql.syntax.Template template, Class<T> resultClass) Deprecated.DataQueryImpl(org.apache.jena.rdfconnection.SparqlQueryConnection conn, org.apache.jena.sparql.syntax.Element baseElement, List<org.apache.jena.sparql.core.Var> primaryKeyVars, org.apache.jena.graph.Node superRootNode, org.apache.jena.sparql.core.Var defaultVar, org.apache.jena.sparql.syntax.Template template, Class<T> resultClass) Deprecated.DataQueryImpl(org.apache.jena.rdfconnection.SparqlQueryConnection conn, org.apache.jena.sparql.syntax.Element baseQueryPattern, org.apache.jena.sparql.core.Var rootVar, org.apache.jena.sparql.syntax.Template template, Class<T> resultClass) Deprecated. -
Method Summary
Modifier and TypeMethodDescriptionadd(org.apache.jena.rdf.model.Property property) addOptional(org.apache.jena.rdf.model.Property property) addOrderBy(Path path, int direction) addOrderBy(org.apache.jena.graph.Node node, int direction) A template resolver enables traversal of the template and injection of further triple patterns.static org.apache.jena.sparql.syntax.TemplateapplyNodeTransform(org.apache.jena.sparql.syntax.Template template, org.apache.jena.sparql.graph.NodeTransform xform) <U extends org.apache.jena.rdf.model.RDFNode>
DataQuery<U>org.apache.jena.sparql.syntax.Elementio.reactivex.rxjava3.core.Single<org.aksw.commons.util.range.CountInfo>count()io.reactivex.rxjava3.core.Single<org.aksw.commons.util.range.CountInfo>org.aksw.jenax.dataaccess.sparql.datasource.RDFDataSourcedataSource(org.aksw.jenax.dataaccess.sparql.datasource.RDFDataSource dataSource) io.reactivex.rxjava3.core.Flowable<T>exec()io.reactivex.rxjava3.core.Single<org.apache.jena.rdf.model.Model>org.aksw.jenax.sparql.fragment.impl.Conceptfilter(org.aksw.jenax.sparql.fragment.api.Fragment1 concept) filter(org.apache.jena.sparql.expr.Expr expr) filterDirect(org.apache.jena.sparql.syntax.Element element) filterUsing(org.aksw.jenax.sparql.fragment.api.Fragment relation, String... attrNames) Join the base element on vars corresponding to attrName with another relation Method is subject to be replaced with a more general mechanism based on RelationletsHibernate-like get method which resolves an attribute of the resultClass to a SPARQL variable of the underlying partitioned query's template The result is a Node that can be used in Jena SPARQLExprexpressions, which can be subsequently passed to e.g.org.apache.jena.sparql.core.VarList<org.apache.jena.sparql.core.Var>getRoot()org.apache.jena.graph.Nodebooleanbooleanbooleanorg.apache.jena.graph.NodenodeForPath(Path path) ordered(boolean onOrOff) List<org.apache.jena.sparql.core.Var>pseudoRandom(Random pseudoRandom) Setting a random number generator (rng) makes query execution deterministic: Random effects on result sets will be processed in the client: Randomly ordered result sets will be fully loaded into the client and shuffeled in respect to the given rng.randomOrder(boolean onOrOff) org.apache.jena.sparql.core.VarresolveAttrToVar(String attr) resolver()sample(boolean onOrOff) toSimpleSteps(Path path) Strip a path from steps of non-basic steps, such as optional ones.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.aksw.jena_sparql_api.data_query.api.DataQuery
baseRelation, connection, connection, exclude, exclude, exclude, exclude, filter, limit, offset, only, only, only, only, ordered, randomOrder, sample, toConstructQuery
-
Field Details
-
dataSource
protected org.aksw.jenax.dataaccess.sparql.datasource.RDFDataSource dataSource -
baseElement
protected org.apache.jena.sparql.syntax.Element baseElementgrouped mode (false): default semantic of construct queries partition mode (true): each row is individually mapped to a resource, used for facet value counts -
-
superRootNode
protected org.apache.jena.graph.Node superRootNode -
defaultVar
protected org.apache.jena.sparql.core.Var defaultVarfilter/only affect this variable by default convenient if there is more than one primary key variable, -
template
protected org.apache.jena.sparql.syntax.Template template -
dataNodes
-
limit
-
offset
-
filter
protected org.aksw.jenax.sparql.fragment.api.Fragment1 filter -
directFilters
-
ordered
protected boolean ordered -
randomOrder
protected boolean randomOrder -
sample
protected boolean sample -
pseudoRandom
-
resultClass
-
sortConditions
-
projectedPaths
-
-
Constructor Details
-
DataQueryImpl
-
DataQueryImpl
-
DataQueryImpl
public DataQueryImpl(org.aksw.jenax.dataaccess.sparql.datasource.RDFDataSource dataSource, org.apache.jena.sparql.syntax.Element baseElement, List<org.apache.jena.sparql.core.Var> primaryKeyVars, org.apache.jena.graph.Node superRootNode, org.apache.jena.sparql.core.Var defaultVar, org.apache.jena.sparql.syntax.Template template, Class<T> resultClass) -
DataQueryImpl
@Deprecated public DataQueryImpl(org.apache.jena.rdfconnection.SparqlQueryConnection conn, org.aksw.jenax.sparql.fragment.api.Fragment1 baseRelation, org.apache.jena.sparql.syntax.Template template, Class<T> resultClass) Deprecated. -
DataQueryImpl
@Deprecated public DataQueryImpl(org.apache.jena.rdfconnection.SparqlQueryConnection conn, org.apache.jena.sparql.syntax.Element baseQueryPattern, org.apache.jena.sparql.core.Var rootVar, org.apache.jena.sparql.syntax.Template template, Class<T> resultClass) Deprecated. -
DataQueryImpl
@Deprecated public DataQueryImpl(org.apache.jena.rdfconnection.SparqlQueryConnection conn, org.apache.jena.sparql.syntax.Element baseElement, List<org.apache.jena.sparql.core.Var> primaryKeyVars, org.apache.jena.graph.Node superRootNode, org.apache.jena.sparql.core.Var defaultVar, org.apache.jena.sparql.syntax.Template template, Class<T> resultClass) Deprecated.
-
-
Method Details
-
as
-
dataSource
public org.aksw.jenax.dataaccess.sparql.datasource.RDFDataSource dataSource()- Specified by:
dataSourcein interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
dataSource
public DataQuery<T> dataSource(org.aksw.jenax.dataaccess.sparql.datasource.RDFDataSource dataSource) - Specified by:
dataSourcein interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
getDefaultVar
public org.apache.jena.sparql.core.Var getDefaultVar()- Specified by:
getDefaultVarin interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
limit
-
offset
-
sample
-
isSampled
public boolean isSampled() -
ordered
-
isOrdered
public boolean isOrdered() -
isRandomOrder
public boolean isRandomOrder()- Specified by:
isRandomOrderin interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
randomOrder
- Specified by:
randomOrderin interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
pseudoRandom
Setting a random number generator (rng) makes query execution deterministic: Random effects on result sets will be processed in the client: Randomly ordered result sets will be fully loaded into the client and shuffeled in respect to the given rng. TODO We may need extra an extra 'deterministic' attribute to indicate whether to sort result sets - the problem is, that the same query on data loaded at different times may yield different results. For practical purposes it rarely happens that the same query yields different results if there were no changes in the data. But maybe it could happen if a DB did something similar to postgres' vacuum process?- Specified by:
pseudoRandomin interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>- Parameters:
pseudoRandom-- Returns:
-
fetchPredicates
public org.aksw.jenax.sparql.fragment.impl.Concept fetchPredicates()- Specified by:
fetchPredicatesin interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
getRoot
-
addOptional
- Specified by:
addOptionalin interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
add
-
filter
-
filterDirect
- Specified by:
filterDirectin interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
peek
-
filterUsing
public DataQuery<T> filterUsing(org.aksw.jenax.sparql.fragment.api.Fragment relation, String... attrNames) Join the base element on vars corresponding to attrName with another relation Method is subject to be replaced with a more general mechanism based on Relationlets- Specified by:
filterUsingin interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
resolveAttrToVar
-
get
Hibernate-like get method which resolves an attribute of the resultClass to a SPARQL variable of the underlying partitioned query's template The result is a Node that can be used in Jena SPARQLExprexpressions, which can be subsequently passed to e.g. filter(expr) of this class for filtering. -
filter
-
getSuperRootNode
public org.apache.jena.graph.Node getSuperRootNode()- Specified by:
getSuperRootNodein interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
getPrimaryKeyVars
-
toConstructQueryNew
- Specified by:
toConstructQueryNewin interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
applyNodeTransform
public static org.apache.jena.sparql.syntax.Template applyNodeTransform(org.apache.jena.sparql.syntax.Template template, org.apache.jena.sparql.graph.NodeTransform xform) -
toSimpleSteps
Strip a path from steps of non-basic steps, such as optional ones. -
exec
-
addOrderBy
A template resolver enables traversal of the template and injection of further triple patterns. So essentially it is the Resource API with the addition of allowing DataResolution references.- Specified by:
addOrderByin interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
addOrderBy
- Specified by:
addOrderByin interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
baseElement
public org.apache.jena.sparql.syntax.Element baseElement()- Specified by:
baseElementin interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
primaryKeyVars
- Specified by:
primaryKeyVarsin interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
execConstruct
public io.reactivex.rxjava3.core.Single<org.apache.jena.rdf.model.Model> execConstruct()- Specified by:
execConstructin interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
count
public io.reactivex.rxjava3.core.Single<org.aksw.commons.util.range.CountInfo> count() -
count
-
resolver
-
nodeForPath
- Specified by:
nodeForPathin interfaceDataQuery<T extends org.apache.jena.rdf.model.RDFNode>
-
getAttr
-