本文整理汇总了Java中org.openrdf.query.algebra.StatementPattern.replaceWith方法的典型用法代码示例。如果您正苦于以下问题:Java StatementPattern.replaceWith方法的具体用法?Java StatementPattern.replaceWith怎么用?Java StatementPattern.replaceWith使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.openrdf.query.algebra.StatementPattern
的用法示例。
在下文中一共展示了StatementPattern.replaceWith方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: apply
import org.openrdf.query.algebra.StatementPattern; //导入方法依赖的package包/类
/**
* Transform a statement pattern according to OWL-2 subclass axiom.
*
* @param node the node to transform
* @return list of nodes to visit next
*/
@Override
public List<QueryModelNode> apply(StatementPattern node) {
List<QueryModelNode> next = newNextList();
StatementPattern left = node.clone();
// replace the object with the subclass
StatementPattern right
= new StatementPattern(
node.getSubjectVar(),
node.getPredicateVar(),
new ConstVar(vf.createURI(ce1)),
node.getContextVar());
node.replaceWith(
new Union(left, right));
next.add(left);
next.add(right);
return next;
}
示例2: apply
import org.openrdf.query.algebra.StatementPattern; //导入方法依赖的package包/类
/**
* Transform a statement pattern according to OWL-2 subproperty axiom.
*
* @param node the node to transform
* @return list of nodes to visit next
*/
@Override
public List<QueryModelNode> apply(StatementPattern node) {
List<QueryModelNode> next = newNextList();
StatementPattern left = node.clone();
// replace the predicate with the subproperty
StatementPattern right
= new StatementPattern(
node.getSubjectVar(),
new ConstVar(vf.createURI(op1)),
node.getObjectVar(),
node.getContextVar());
node.replaceWith(
new Union(left, right));
next.add(left);
next.add(right);
return next;
}
示例3: apply
import org.openrdf.query.algebra.StatementPattern; //导入方法依赖的package包/类
/**
* Transform a statement pattern according to OWL-2 inverse properties
* axiom.
*
* @param node the node to transform
* @return list of nodes to visit next
*/
@Override
public List<QueryModelNode> apply(StatementPattern node) {
List<QueryModelNode> next = newNextList();
Var s = node.getSubjectVar();
Var p = node.getPredicateVar();
Var o = node.getObjectVar();
Var c = node.getContextVar();
URI uri = (URI) p.getValue();
String op = uri.stringValue();
Var p2;
// check if need to replace with op1 or op2
if (op.equals(op1)) {
p2 = new ConstVar(vf.createURI(op2));
} else {
p2 = new ConstVar(vf.createURI(op1));
}
StatementPattern left = node.clone();
// switch subject and object and replace predicate
StatementPattern right = new StatementPattern(o, p2, s, c);
node.replaceWith(new Union(left, right));
next.add(left);
next.add(right);
return next;
}
示例4: meetSP
import org.openrdf.query.algebra.StatementPattern; //导入方法依赖的package包/类
@Override
protected void meetSP(final StatementPattern node) throws Exception {
final StatementPattern sp = node.clone();
final Var predVar = sp.getPredicateVar();
final URI pred = (URI) predVar.getValue();
final String predNamespace = pred.getNamespace();
final Var objVar = sp.getObjectVar();
final Var cntxtVar = sp.getContextVar();
if (objVar != null &&
!RDF.NAMESPACE.equals(predNamespace) &&
!SESAME.NAMESPACE.equals(predNamespace) &&
!RDFS.NAMESPACE.equals(predNamespace)
&& !EXPANDED.equals(cntxtVar)) {
final URI transPropUri = (URI) predVar.getValue();
if (inferenceEngine.isTransitiveProperty(transPropUri)) {
node.replaceWith(new TransitivePropertySP(sp.getSubjectVar(), sp.getPredicateVar(), sp.getObjectVar(), sp.getContextVar()));
}
}
}
示例5: meetSP
import org.openrdf.query.algebra.StatementPattern; //导入方法依赖的package包/类
/**
* Check whether any solution for the {@link StatementPattern} could be derived from
* reflexive property inference, and if so, replace the pattern with a union of itself and the
* reflexive solution.
*/
@Override
protected void meetSP(StatementPattern node) throws Exception {
// Only applies when the predicate is defined and reflexive
final Var predVar = node.getPredicateVar();
if (predVar.getValue() != null && inferenceEngine.isReflexiveProperty((URI) predVar.getValue())) {
final StatementPattern originalSP = node.clone();
// The reflexive solution is a ZeroLengthPath between subject and
// object: they can be matched to one another, whether constants or
// variables.
final Var subjVar = node.getSubjectVar();
final Var objVar = node.getObjectVar();
final ZeroLengthPath reflexiveSolution = new ZeroLengthPath(subjVar, objVar);
node.replaceWith(new InferUnion(originalSP, reflexiveSolution));
}
}
示例6: apply
import org.openrdf.query.algebra.StatementPattern; //导入方法依赖的package包/类
/**
* Transform a statement pattern to infer triples for a predicate variable.
*
* @param node the node to transform
* @return list of nodes to visit next
*/
@Override
public List<QueryModelNode> apply(StatementPattern node) {
List<QueryModelNode> next = newNextList();
StatementPattern left = node.clone();
next.add(left);
TupleExpr right = assignPredicates(predicates, node.clone(), next);
node.replaceWith(new Union(left, right));
return next;
}
示例7: apply
import org.openrdf.query.algebra.StatementPattern; //导入方法依赖的package包/类
/**
* Transform a statement pattern according to OWL-2 property chain
* axiom.
*
* @param node the node to transform
* @return list of nodes to visit next
*/
@Override
public List<QueryModelNode> apply(StatementPattern node) {
List<QueryModelNode> next = newNextList();
Var s = node.getSubjectVar();
Var o = node.getObjectVar();
Var c = node.getContextVar();
TupleExpr left = node.clone();
TupleExpr right = getChain(s, o, c);
node.replaceWith(new Union(left, right));
next.add(left);
next.add(right);
return next;
}
示例8: meetSP
import org.openrdf.query.algebra.StatementPattern; //导入方法依赖的package包/类
@Override
protected void meetSP(StatementPattern node) throws Exception {
StatementPattern sp = node.clone();
final Var predVar = sp.getPredicateVar();
URI pred = (URI) predVar.getValue();
String predNamespace = pred.getNamespace();
final Var objVar = sp.getObjectVar();
final Var cntxtVar = sp.getContextVar();
if (objVar != null &&
!RDF.NAMESPACE.equals(predNamespace) &&
!SESAME.NAMESPACE.equals(predNamespace) &&
!RDFS.NAMESPACE.equals(predNamespace)
&& !EXPANDED.equals(cntxtVar)) {
/**
*
* { ?a ?pred ?b .}\n" +
" UNION " +
" { ?b ?pred ?a }
*/
URI predUri = (URI) predVar.getValue();
URI invPropUri = inferenceEngine.findInverseOf(predUri);
if (invPropUri != null) {
Var subjVar = sp.getSubjectVar();
Union union = new InferUnion();
union.setLeftArg(sp);
union.setRightArg(new StatementPattern(objVar, new Var(predVar.getName(), invPropUri), subjVar, cntxtVar));
node.replaceWith(union);
}
}
}
示例9: meetSP
import org.openrdf.query.algebra.StatementPattern; //导入方法依赖的package包/类
@Override
protected void meetSP(final StatementPattern node) throws Exception {
final StatementPattern currentNode = node.clone();
final Var subVar = node.getSubjectVar();
final Var predVar = node.getPredicateVar();
final Var objVar = node.getObjectVar();
final Var conVar = node.getContextVar();
if (predVar != null && objVar != null && objVar.getValue() != null && RDF.TYPE.equals(predVar.getValue()) && !EXPANDED.equals(conVar)) {
final List<Set<Resource>> intersections = inferenceEngine.getIntersectionsImplying((URI) objVar.getValue());
if (intersections != null && !intersections.isEmpty()) {
final List<TupleExpr> joins = new ArrayList<>();
for (final Set<Resource> intersection : intersections) {
final Set<Resource> sortedIntersection = new TreeSet<>(new ResourceComparator());
sortedIntersection.addAll(intersection);
// Create a join tree of all statement patterns in the
// current intersection.
final TupleExpr joinTree = createJoinTree(new ArrayList<>(sortedIntersection), subVar, conVar);
if (joinTree != null) {
joins.add(joinTree);
}
}
if (!joins.isEmpty()) {
// Combine all the intersection join trees for the type
// together into a union tree. This will be a join tree if
// only one intersection exists.
final TupleExpr unionTree = createUnionTree(joins);
// Union the above union tree of intersections with the
// original node.
final Union union = new InferUnion(unionTree, currentNode);
node.replaceWith(union);
log.trace("Replacing node with inferred intersection union: " + union);
}
}
}
}
示例10: meetSP
import org.openrdf.query.algebra.StatementPattern; //导入方法依赖的package包/类
/**
* Checks whether the StatementPattern is a type query whose solutions could be inferred by
* someValuesFrom inference, and if so, replaces the node with a union of itself and any
* possible inference.
*/
@Override
protected void meetSP(StatementPattern node) throws Exception {
final Var subjVar = node.getSubjectVar();
final Var predVar = node.getPredicateVar();
final Var objVar = node.getObjectVar();
// Only applies to type queries where the type is defined
if (predVar != null && RDF.TYPE.equals(predVar.getValue()) && objVar != null && objVar.getValue() instanceof Resource) {
final Resource typeToInfer = (Resource) objVar.getValue();
Map<Resource, Set<URI>> relevantSvfRestrictions = inferenceEngine.getSomeValuesFromByRestrictionType(typeToInfer);
if (!relevantSvfRestrictions.isEmpty()) {
// We can infer the queried type if it is to a someValuesFrom restriction (or a
// supertype of one), and the node in question (subjVar) is the subject of a triple
// whose predicate is the restriction's property and whose object is an arbitrary
// node of the restriction's value type.
final Var valueTypeVar = new Var("t-" + UUID.randomUUID());
final Var svfPredVar = new Var("p-" + UUID.randomUUID());
final Var neighborVar = new Var("n-" + UUID.randomUUID());
neighborVar.setAnonymous(true);
final StatementPattern membershipPattern = new DoNotExpandSP(neighborVar,
new Var(RDF.TYPE.stringValue(), RDF.TYPE), valueTypeVar);
final StatementPattern valuePattern = new StatementPattern(subjVar, svfPredVar, neighborVar);
final InferJoin svfPattern = new InferJoin(membershipPattern, valuePattern);
// Use a FixedStatementPattern to contain the appropriate (predicate, value type)
// pairs, and check each one against the general pattern.
final FixedStatementPattern svfPropertyTypes = new FixedStatementPattern(svfPredVar,
new Var(OWL.SOMEVALUESFROM.stringValue(), OWL.SOMEVALUESFROM), valueTypeVar);
for (Resource svfValueType : relevantSvfRestrictions.keySet()) {
for (URI svfProperty : relevantSvfRestrictions.get(svfValueType)) {
svfPropertyTypes.statements.add(new NullableStatementImpl(svfProperty,
OWL.SOMEVALUESFROM, svfValueType));
}
}
final InferJoin svfInferenceQuery = new InferJoin(svfPropertyTypes, svfPattern);
node.replaceWith(new InferUnion(node.clone(), svfInferenceQuery));
}
}
}
示例11: meetSP
import org.openrdf.query.algebra.StatementPattern; //导入方法依赖的package包/类
/**
* Checks whether the StatementPattern is a type query whose solutions could be inferred
* by allValuesFrom inference, and if so, replaces the node with a union of itself and any
* possible inference.
*/
@Override
protected void meetSP(StatementPattern node) throws Exception {
final Var subjVar = node.getSubjectVar();
final Var predVar = node.getPredicateVar();
final Var objVar = node.getObjectVar();
// Only applies to type queries where the type is defined
if (predVar != null && RDF.TYPE.equals(predVar.getValue()) && objVar != null && objVar.getValue() instanceof Resource) {
final Resource typeToInfer = (Resource) objVar.getValue();
Map<Resource, Set<URI>> relevantAvfRestrictions = inferenceEngine.getAllValuesFromByValueType(typeToInfer);
if (!relevantAvfRestrictions.isEmpty()) {
// We can infer the queried type if, for an allValuesFrom restriction type
// associated with the queried type, some anonymous neighboring node belongs to the
// restriction type and has the node in question (subjVar) as a value for the
// restriction's property.
final Var avfTypeVar = new Var("t-" + UUID.randomUUID());
final Var avfPredVar = new Var("p-" + UUID.randomUUID());
final Var neighborVar = new Var("n-" + UUID.randomUUID());
neighborVar.setAnonymous(true);
final StatementPattern membershipPattern = new DoNotExpandSP(neighborVar,
new Var(RDF.TYPE.stringValue(), RDF.TYPE), avfTypeVar);
final StatementPattern valuePattern = new StatementPattern(neighborVar, avfPredVar, subjVar);
final InferJoin avfPattern = new InferJoin(membershipPattern, valuePattern);
// Use a FixedStatementPattern to contain the appropriate (restriction, predicate)
// pairs, and check each one against the general pattern.
final FixedStatementPattern avfPropertyTypes = new FixedStatementPattern(avfTypeVar,
new Var(OWL.ONPROPERTY.stringValue(), OWL.ONPROPERTY), avfPredVar);
for (Resource avfRestrictionType : relevantAvfRestrictions.keySet()) {
for (URI avfProperty : relevantAvfRestrictions.get(avfRestrictionType)) {
avfPropertyTypes.statements.add(new NullableStatementImpl(avfRestrictionType,
OWL.ONPROPERTY, avfProperty));
}
}
final InferJoin avfInferenceQuery = new InferJoin(avfPropertyTypes, avfPattern);
node.replaceWith(new InferUnion(node.clone(), avfInferenceQuery));
}
}
}
示例12: meetSP
import org.openrdf.query.algebra.StatementPattern; //导入方法依赖的package包/类
@Override
protected void meetSP(StatementPattern node) throws Exception {
StatementPattern sp = node.clone();
final Var predVar = sp.getPredicateVar();
URI pred = (URI) predVar.getValue();
String predNamespace = pred.getNamespace();
final Var objVar = sp.getObjectVar();
final Var cntxtVar = sp.getContextVar();
if (objVar != null &&
!RDF.NAMESPACE.equals(predNamespace) &&
!SESAME.NAMESPACE.equals(predNamespace) &&
!RDFS.NAMESPACE.equals(predNamespace)
&& !EXPANDED.equals(cntxtVar)) {
/**
*
* { ?a ?pred ?b .}\n" +
" UNION " +
" { ?b ?pred ?a }
*/
URI symmPropUri = (URI) predVar.getValue();
if(inferenceEngine.isSymmetricProperty(symmPropUri)) {
Var subjVar = sp.getSubjectVar();
Union union = new InferUnion();
union.setLeftArg(sp);
union.setRightArg(new StatementPattern(objVar, predVar, subjVar, cntxtVar));
node.replaceWith(union);
}
}
}
示例13: meetSP
import org.openrdf.query.algebra.StatementPattern; //导入方法依赖的package包/类
@Override
protected void meetSP(final StatementPattern node) throws Exception {
final Var subVar = node.getSubjectVar();
final Var predVar = node.getPredicateVar();
final Var objVar = node.getObjectVar();
final Var conVar = node.getContextVar();
if (predVar != null && objVar != null && objVar.getValue() != null && objVar.getValue() instanceof Resource && RDF.TYPE.equals(predVar.getValue()) && !EXPANDED.equals(conVar)) {
final Resource object = (Resource) objVar.getValue();
if (inferenceEngine.isEnumeratedType(object)) {
final Set<BindingSet> solutions = new LinkedHashSet<>();
final Set<Resource> enumeration = inferenceEngine.getEnumeration(object);
for (final Resource enumType : enumeration) {
final QueryBindingSet qbs = new QueryBindingSet();
qbs.addBinding(subVar.getName(), enumType);
solutions.add(qbs);
}
if (!solutions.isEmpty()) {
final BindingSetAssignment enumNode = new BindingSetAssignment();
enumNode.setBindingSets(solutions);
node.replaceWith(enumNode);
log.trace("Replacing node with inferred one of enumeration: " + enumNode);
}
}
}
}
示例14: meetSP
import org.openrdf.query.algebra.StatementPattern; //导入方法依赖的package包/类
@Override
protected void meetSP(final StatementPattern node) throws Exception {
final StatementPattern sp = node.clone();
final Var predVar = sp.getPredicateVar();
final URI pred = (URI) predVar.getValue();
final String predNamespace = pred.getNamespace();
final Var objVar = sp.getObjectVar();
final Var cntxtVar = sp.getContextVar();
if (objVar != null &&
!RDF.NAMESPACE.equals(predNamespace) &&
!SESAME.NAMESPACE.equals(predNamespace) &&
!RDFS.NAMESPACE.equals(predNamespace)
&& !EXPANDED.equals(cntxtVar)) {
/**
*
* { ?subProp rdfs:subPropertyOf ub:worksFor . ?y ?subProp <http://www.Department0.University0.edu> }\n" +
" UNION " +
" { ?y ub:worksFor <http://www.Department0.University0.edu> }
*/
// String s = UUID.randomUUID().toString();
// Var subPropVar = new Var(s);
// StatementPattern subPropOf = new StatementPattern(subPropVar, new Var("c-" + s, SESAME.DIRECTSUBPROPERTYOF), predVar, EXPANDED);
// StatementPattern subPropOf2 = new StatementPattern(sp.getSubjectVar(), subPropVar, objVar, EXPANDED);
// InferJoin join = new InferJoin(subPropOf, subPropOf2);
// join.getProperties().put(InferConstants.INFERRED, InferConstants.TRUE);
// node.replaceWith(join);
// Collection<URI> parents = inferenceEngine.findParents(inferenceEngine.subPropertyOfGraph, (URI) predVar.getValue());
// if (parents != null && parents.size() > 0) {
// StatementPatterns statementPatterns = new StatementPatterns();
// statementPatterns.patterns.add(node);
// Var subjVar = node.getSubjectVar();
// for (URI u : parents) {
// statementPatterns.patterns.add(new StatementPattern(subjVar, new Var(predVar.getName(), u), objVar));
// }
// node.replaceWith(statementPatterns);
// }
// if (parents != null && parents.size() > 0) {
// VarCollection vc = new VarCollection();
// vc.setName(predVar.getName());
// vc.values.add(predVar);
// for (URI u : parents) {
// vc.values.add(new Var(predVar.getName(), u));
// }
// Var subjVar = node.getSubjectVar();
// node.replaceWith(new StatementPattern(subjVar, vc, objVar, node.getContextVar()));
// }
final URI subprop_uri = (URI) predVar.getValue();
final Set<URI> parents = InferenceEngine.findParents(inferenceEngine.getSubPropertyOfGraph(), subprop_uri);
if (parents != null && parents.size() > 0) {
final String s = UUID.randomUUID().toString();
final Var typeVar = new Var(s);
final FixedStatementPattern fsp = new FixedStatementPattern(typeVar, new Var("c-" + s, RDFS.SUBPROPERTYOF), predVar, cntxtVar);
// fsp.statements.add(new NullableStatementImpl(subprop_uri, RDFS.SUBPROPERTYOF, subprop_uri));
//add self
parents.add(subprop_uri);
for (final URI u : parents) {
fsp.statements.add(new NullableStatementImpl(u, RDFS.SUBPROPERTYOF, subprop_uri));
}
final StatementPattern rdfType = new DoNotExpandSP(sp.getSubjectVar(), typeVar, sp.getObjectVar(), cntxtVar);
final InferJoin join = new InferJoin(fsp, rdfType);
join.getProperties().put(InferConstants.INFERRED, InferConstants.TRUE);
node.replaceWith(join);
}
}
}
示例15: meetSP
import org.openrdf.query.algebra.StatementPattern; //导入方法依赖的package包/类
/**
* Checks whether facts matching the StatementPattern could be derived using
* has-value inference, and if so, replaces the StatementPattern node with a
* union of itself and any such possible derivations.
*/
@Override
protected void meetSP(StatementPattern node) throws Exception {
final Var subjVar = node.getSubjectVar();
final Var predVar = node.getPredicateVar();
final Var objVar = node.getObjectVar();
// We can reason over two types of statement patterns:
// { ?var rdf:type :Restriction } and { ?var :property ?value }
// Both require defined predicate
if (predVar != null && predVar.getValue() != null) {
final URI predURI = (URI) predVar.getValue();
if (RDF.TYPE.equals(predURI) && objVar != null && objVar.getValue() != null
&& objVar.getValue() instanceof Resource) {
// If the predicate is rdf:type and the type is specified, check whether it can be
// inferred using any hasValue restriction(s)
final Resource objType = (Resource) objVar.getValue();
final Map<URI, Set<Value>> sufficientValues = inferenceEngine.getHasValueByType(objType);
if (sufficientValues.size() > 0) {
final Var valueVar = new Var("v-" + UUID.randomUUID());
TupleExpr currentNode = node.clone();
for (URI property : sufficientValues.keySet()) {
final Var propVar = new Var(property.toString(), property);
final TupleExpr valueSP = new DoNotExpandSP(subjVar, propVar, valueVar);
final FixedStatementPattern relevantValues = new FixedStatementPattern(objVar, propVar, valueVar);
for (Value value : sufficientValues.get(property)) {
relevantValues.statements.add(new NullableStatementImpl(objType, property, value));
}
currentNode = new InferUnion(currentNode, new InferJoin(relevantValues, valueSP));
}
node.replaceWith(currentNode);
}
}
else {
// If the predicate has some hasValue restriction associated with it, then finding
// that the object belongs to the appropriate type implies a value.
final Map<Resource, Set<Value>> impliedValues = inferenceEngine.getHasValueByProperty(predURI);
if (impliedValues.size() > 0) {
final Var rdfTypeVar = new Var(RDF.TYPE.stringValue(), RDF.TYPE);
final Var typeVar = new Var("t-" + UUID.randomUUID());
final Var hasValueVar = new Var(OWL.HASVALUE.stringValue(), OWL.HASVALUE);
final TupleExpr typeSP = new DoNotExpandSP(subjVar, rdfTypeVar, typeVar);
final FixedStatementPattern typeToValue = new FixedStatementPattern(typeVar, hasValueVar, objVar);
final TupleExpr directValueSP = node.clone();
for (Resource type : impliedValues.keySet()) {
// { ?var rdf:type :type } implies { ?var :property :val } for certain (:type, :val) pairs
for (Value impliedValue : impliedValues.get(type)) {
typeToValue.statements.add(new NullableStatementImpl(type, OWL.HASVALUE, impliedValue));
}
}
node.replaceWith(new InferUnion(new InferJoin(typeToValue, typeSP), directValueSP));
}
}
}
}