private Var getTypeSubject(final Type type) { //we just need the first pattern since all the patterns in this type map are the same subject final StatementPattern pattern = typeMap.get(type).iterator().next(); return pattern.getSubjectVar(); }
/** * Override this if you are able to determine the cardinality based not only on the subjectVar itself * but also the other vars (e.g. the predicate value might determine a subject subset). */ protected double getSubjectCardinality(StatementPattern sp) { return getSubjectCardinality(sp.getSubjectVar()); }
/** * Override this if you are able to determine the cardinality based not only on the subjectVar itself * but also the other vars (e.g. the predicate value might determine a subject subset). */ protected double getSubjectCardinality(StatementPattern sp) { return getSubjectCardinality(sp.getSubjectVar()); }
/** * Gets the set of variables that are relevant for the constructor. This method accumulates all subject, * predicate and object variables from the supplied statement patterns, but ignores any context variables. */ private Set<Var> getConstructVars(Collection<StatementPattern> statementPatterns) { Set<Var> vars = new LinkedHashSet<Var>(statementPatterns.size() * 2); for (StatementPattern sp : statementPatterns) { vars.add(sp.getSubjectVar()); vars.add(sp.getPredicateVar()); vars.add(sp.getObjectVar()); } return vars; }
/** * Gets the set of variables that are relevant for the constructor. This method accumulates all subject, * predicate and object variables from the supplied statement patterns, but ignores any context variables. */ private Set<Var> getConstructVars(Collection<StatementPattern> statementPatterns) { Set<Var> vars = new LinkedHashSet<>(statementPatterns.size() * 2); for (StatementPattern sp : statementPatterns) { vars.add(sp.getSubjectVar()); vars.add(sp.getPredicateVar()); vars.add(sp.getObjectVar()); } return vars; }
/** * Gets the set of variables that are relevant for the constructor. This method accumulates all subject, * predicate and object variables from the supplied statement patterns, but ignores any context variables. */ private Set<Var> getConstructVars(Collection<StatementPattern> statementPatterns) { Set<Var> vars = new LinkedHashSet<Var>(statementPatterns.size() * 2); for (StatementPattern sp : statementPatterns) { vars.add(sp.getSubjectVar()); vars.add(sp.getPredicateVar()); vars.add(sp.getObjectVar()); } return vars; }
private Set<Var> getProjectionVars(Collection<StatementPattern> statementPatterns) { Set<Var> vars = new LinkedHashSet<>(statementPatterns.size() * 2); for (StatementPattern sp : statementPatterns) { vars.add(sp.getSubjectVar()); vars.add(sp.getPredicateVar()); vars.add(sp.getObjectVar()); if (sp.getContextVar() != null) { vars.add(sp.getContextVar()); } } return vars; } }
public void setGeometryPattern(StatementPattern sp) { if (sp.getSubjectVar().hasValue()) { throw new IllegalArgumentException("Subject cannot be bound: " + sp); } if (!sp.getPredicateVar().hasValue()) { throw new IllegalArgumentException("Predicate must be bound: " + sp); } if (sp.getObjectVar().hasValue()) { throw new IllegalArgumentException("Object cannot be bound: " + sp); } this.geoStatement = sp; }
private void append(StatementPattern pattern, StringBuilder buffer) { if (pattern == null) return; buffer.append(" "); buffer.append("StatementPattern\n"); append(pattern.getSubjectVar(), buffer); append(pattern.getPredicateVar(), buffer); append(pattern.getObjectVar(), buffer); }
String renderPattern(StatementPattern thePattern) throws Exception { return renderValueExpr(thePattern.getSubjectVar()) + " " + renderValueExpr(thePattern.getPredicateVar()) + " " + "" + renderValueExpr(thePattern.getObjectVar()) + ".\n"; } }
String renderPattern(StatementPattern thePattern) throws Exception { return renderValueExpr(thePattern.getSubjectVar()) + " " + renderValueExpr(thePattern.getPredicateVar()) + " " + "" + renderValueExpr(thePattern.getObjectVar()) + ".\n"; } }
String renderPattern(StatementPattern thePattern) throws Exception { return renderValueExpr(thePattern.getSubjectVar()) + " " + renderValueExpr(thePattern.getPredicateVar()) + " " + "" + renderValueExpr(thePattern.getObjectVar()) + ".\n"; } }
@Override public void meet(final StatementPattern node) throws QueryRulesetException { if (!(node.getSubjectVar().hasValue() || node.getPredicateVar().hasValue() || node.getObjectVar().hasValue())) { throw new QueryRulesetException("Statement pattern with no constants would match every statement:\n" + node + "\nFrom parsed query:\n" + te); } } });
private void updateVarMap(HashMultimap<String, StatementPattern> varMap, Set<StatementPattern> bin) { for (StatementPattern sp : bin) { varMap.remove(sp.getSubjectVar().getName(), sp); varMap.remove(sp.getObjectVar().getName(), sp); } removeInvalidBins(varMap, false); }
@Override protected double getCardinality(StatementPattern sp) { Double card = spcalc == null ? null : spcalc.getCardinality(sp, boundVars); if (card == null) { //fallback to default cardinality calculation card = (hasValue(sp.getSubjectVar(), boundVars) ? 1.0 : 10.0) * (hasValue(sp.getPredicateVar(), boundVars) ? 1.0 : 10.0) * (hasValue(sp.getObjectVar(), boundVars) ? 1.0 : 10.0) * (hasValue(sp.getContextVar(), boundVars) ? 1.0 : 10.0); } return card; }
@Override public boolean equals(Object other) { if (other instanceof StatementPattern) { StatementPattern o = (StatementPattern)other; return subjectVar.equals(o.getSubjectVar()) && predicateVar.equals(o.getPredicateVar()) && objectVar.equals(o.getObjectVar()) && nullEquals(contextVar, o.getContextVar()) && scope.equals(o.getScope()); } return false; }
@Override public boolean equals(Object other) { if (other instanceof StatementPattern) { StatementPattern o = (StatementPattern)other; return subjectVar.equals(o.getSubjectVar()) && predicateVar.equals(o.getPredicateVar()) && objectVar.equals(o.getObjectVar()) && nullEquals(contextVar, o.getContextVar()) && scope.equals(o.getScope()); } return false; }
private void processPropertySearches(final TupleExpr tupleExpr, final Collection<Var> searchProperties) { final MatchStatementVisitor matchStatements = new MatchStatementVisitor(searchProperties); tupleExpr.visit(matchStatements); for (final StatementPattern matchStatement: matchStatements.matchStatements) { final Var subject = matchStatement.getSubjectVar(); if (subject.hasValue() && !(subject.getValue() instanceof Resource)) { throw new IllegalArgumentException("Query error: Found " + subject.getValue() + ", expected an IRI or BNode"); } Validate.isTrue(subject.hasValue() || subject.getName() != null); Validate.isTrue(!matchStatement.getObjectVar().hasValue() && matchStatement.getObjectVar().getName() != null); buildQuery(tupleExpr, matchStatement); } }
@Override public StatementPattern clone() { StatementPattern clone = (StatementPattern)super.clone(); clone.setSubjectVar(getSubjectVar().clone()); clone.setPredicateVar(getPredicateVar().clone()); clone.setObjectVar(getObjectVar().clone()); if (getContextVar() != null) { clone.setContextVar(getContextVar().clone()); } return clone; } }
@Override public StatementPattern clone() { StatementPattern clone = (StatementPattern)super.clone(); clone.setSubjectVar(getSubjectVar().clone()); clone.setPredicateVar(getPredicateVar().clone()); clone.setObjectVar(getObjectVar().clone()); if (getContextVar() != null) { clone.setContextVar(getContextVar().clone()); } return clone; } }