@Override public boolean hasBinding(final String bindingName) { return set.hasBinding(bindingName); }
@Override public boolean contains(String varName) { return bs.hasBinding(varName); }
/** * A utility function that helps construct the keys used by {@link KeyValueAggregationStateStore}. * * @param vars - Which variables within the binding set to use for the key's values. (not null) * @param bindingSet - The binding set the key is being constructed from. (not null) * @return A comma delimited list of the binding values, leading with the side. */ private static String makeCommaDelimitedValues(final List<String> vars, final BindingSet bindingSet) { requireNonNull(vars); requireNonNull(bindingSet); // Make a an ordered list of the binding set variables. final List<String> values = new ArrayList<>(); for(final String var : vars) { values.add( bindingSet.hasBinding(var) ? bindingSet.getBinding(var).getValue().toString() : "" ); } // Return a comma delimited list of those values. return Joiner.on(",").join(values); } }
@Override public String convert(final BindingSet bindingSet, final VariableOrder varOrder) { requireNonNull(bindingSet); requireNonNull(varOrder); // Convert each Binding to a String. final List<String> bindingStrings = new ArrayList<>(); for(final String varName : varOrder) { if(bindingSet.hasBinding(varName)) { // Add a value to the binding set. final Value value = bindingSet.getBinding(varName).getValue(); final RyaType ryaValue = RdfToRyaConversions.convertValue(value); final String bindingString = ryaValue.getData() + TYPE_DELIM + ryaValue.getDataType(); bindingStrings.add(bindingString); } else { // Add a null value to the binding set. bindingStrings.add(NULL_VALUE_STRING); } } // Join the bindings using the binding delim. return Joiner.on(BINDING_DELIM).join(bindingStrings); }
/** * Create a new {@link BindingSet} that only includes the bindings whose names appear within the {@code variableOrder}. * If no binding is found for a variable, then that binding is just omitted from the resulting object. * * @param variableOrder - Defines which bindings will be kept. (not null) * @param bindingSet - Contains the source {@link Binding}s. (not null) * @return A new {@link BindingSet} containing only the specified bindings. */ public static BindingSet keepBindings(final VariableOrder variableOrder, final BindingSet bindingSet) { requireNonNull(variableOrder); requireNonNull(bindingSet); final MapBindingSet result = new MapBindingSet(); for(final String bindingName : variableOrder) { if(bindingSet.hasBinding(bindingName)) { final Binding binding = bindingSet.getBinding(bindingName); result.addBinding(binding); } } return result; } }
protected boolean isUnbound(Var var, BindingSet bindings) { if (var == null) { return false; } else { return bindings.hasBinding(var.getName()) && bindings.getValue(var.getName()) == null; } }
protected boolean isUnbound(Var var, BindingSet bindings) { if (var == null) { return false; } else { return bindings.hasBinding(var.getName()) && bindings.getValue(var.getName()) == null; } }
protected boolean isUnbound(Var var, BindingSet bindings) { if (var == null) { return false; } else { return bindings.hasBinding(var.getName()) && bindings.getValue(var.getName()) == null; } }
protected boolean isUnbound(Var var, BindingSet bindings) { if (var == null) { return false; } else { return bindings.hasBinding(var.getName()) && bindings.getValue(var.getName()) == null; } }
protected boolean isUnbound(Var var, BindingSet bindings) { if (var == null) { return false; } else { return bindings.hasBinding(var.getName()) && bindings.getValue(var.getName()) == null; } }
@Override public byte[] convert(BindingSet bindingSet, VariableOrder varOrder) throws BindingSetConversionException { checkNotNull(bindingSet); checkNotNull(varOrder); // A list that holds all of the byte segments that will be concatenated at the end. // This minimizes byte[] construction. final List<byte[]> byteSegments = new LinkedList<>(); try { for(final String varName: varOrder) { // Only write information for a variable name if the binding set contains it. if(bindingSet.hasBinding(varName)) { final RyaType rt = RdfToRyaConversions.convertValue(bindingSet.getBinding(varName).getValue()); final byte[][] serializedVal = RyaContext.getInstance().serializeType(rt); byteSegments.add(serializedVal[0]); byteSegments.add(serializedVal[1]); } // But always write the value delimiter. If a value is missing, you'll see two delimiters next to each-other. byteSegments.add(DELIM_BYTES); } return concat(byteSegments); } catch (RyaTypeResolverException e) { throw new BindingSetConversionException("Could not convert the BindingSet into a byte[].", e); } }
@Override public void meet(Var var) { if (!var.hasValue() && bindings.hasBinding(var.getName())) { Value value = bindings.getValue(var.getName()); var.setValue(value); } } }
public PathIteration(StrictEvaluationStrategy evaluationStrategyImpl, Scope scope, Var startVar, TupleExpr pathExpression, Var endVar, Var contextVar, long minLength, BindingSet bindings) throws QueryEvaluationException { this.evaluationStrategyImpl = evaluationStrategyImpl; this.scope = scope; this.startVar = startVar; this.endVar = endVar; this.startVarFixed = startVar.hasValue() || bindings.hasBinding(startVar.getName()); this.endVarFixed = endVar.hasValue() || bindings.hasBinding(endVar.getName()); this.pathExpression = pathExpression; this.contextVar = contextVar; this.currentLength = minLength; this.bindings = bindings; this.reportedValues = makeSet(); this.unreportedValues = makeSet(); this.valueQueue = makeQueue(); createIteration(); }
@Override public void meet(Var var) { if (!var.hasValue() && bindings.hasBinding(var.getName())) { Value value = bindings.getValue(var.getName()); var.setValue(value); } } }
public PathIteration(StrictEvaluationStrategy evaluationStrategyImpl, Scope scope, Var startVar, TupleExpr pathExpression, Var endVar, Var contextVar, long minLength, BindingSet bindings) throws QueryEvaluationException { this.evaluationStrategyImpl = evaluationStrategyImpl; this.scope = scope; this.startVar = startVar; this.endVar = endVar; this.startVarFixed = startVar.hasValue() || bindings.hasBinding(startVar.getName()); this.endVarFixed = endVar.hasValue() || bindings.hasBinding(endVar.getName()); this.pathExpression = pathExpression; this.contextVar = contextVar; this.currentLength = minLength; this.bindings = bindings; this.reportedValues = makeSet(); this.unreportedValues = makeSet(); this.valueQueue = makeQueue(); createIteration(); }
@Test public void testSimpleTupleQueryUnicodeSparql() throws Exception { testCon.add(alexander, name, Александър); StringBuilder queryBuilder = new StringBuilder(); queryBuilder.append(" PREFIX foaf: <" + FOAF_NS + ">"); queryBuilder.append(" SELECT ?person"); queryBuilder.append(" WHERE { ?person foaf:name '"); queryBuilder.append(Александър.getLabel()).append("' .}"); TupleQueryResult result = testCon.prepareTupleQuery( QueryLanguage.SPARQL, queryBuilder.toString()).evaluate(); try { assertTrue(result != null); assertTrue(result.hasNext()); while (result.hasNext()) { BindingSet solution = result.next(); assertTrue(solution.hasBinding("person")); assertEquals(alexander, solution.getValue("person")); } } finally { result.close(); } }
@Test(expected = QueryEvaluationException.class) public void testSimpleTupleQueryUnicode() throws Exception { testCon.add(alexander, name, Александър); StringBuilder queryBuilder = new StringBuilder(); queryBuilder.append(" SELECT person"); queryBuilder.append(" FROM {person} foaf:name {").append(Александър.getLabel()).append("}"); queryBuilder.append(" USING NAMESPACE foaf = <" + FOAF_NS + ">"); TupleQueryResult result = testCon.prepareTupleQuery(QueryLanguage.SERQL, queryBuilder.toString()).evaluate(); try { assertTrue(result != null); assertTrue(result.hasNext()); while (result.hasNext()) { BindingSet solution = result.next(); assertTrue(solution.hasBinding("person")); assertEquals(alexander, solution.getValue("person")); } } finally { result.close(); } }
/** * A rewrite using SPARQL rather than SeRQL. */ @Test @Override public void testSimpleTupleQueryUnicode() throws Exception { testCon.add(alexander, name, Александър); StringBuilder queryBuilder = new StringBuilder(); queryBuilder.append(" PREFIX foaf: <" + FOAF_NS + ">"); queryBuilder.append(" SELECT ?person"); queryBuilder.append(" WHERE { ?person foaf:name '"); queryBuilder.append(Александър.getLabel()).append("' .}"); TupleQueryResult result = testCon.prepareTupleQuery( QueryLanguage.SPARQL, queryBuilder.toString()).evaluate(); try { assertTrue(result != null); assertTrue(result.hasNext()); while (result.hasNext()) { BindingSet solution = result.next(); assertTrue(solution.hasBinding("person")); assertEquals(alexander, solution.getValue("person")); } } finally { result.close(); } }
@Test public void testPreparedTupleQueryUnicodeSparql() throws Exception { testCon.add(alexander, name, Александър); StringBuilder queryBuilder = new StringBuilder(); queryBuilder.append(" PREFIX foaf: <" + FOAF_NS + ">"); queryBuilder.append(" SELECT ?person"); queryBuilder.append(" WHERE { ?person foaf:name '"); queryBuilder.append(Александър.getLabel()).append("' .}"); TupleQuery query = testCon.prepareTupleQuery(QueryLanguage.SPARQL, queryBuilder.toString()); query.setBinding("name", Александър); TupleQueryResult result = query.evaluate(); try { assertTrue(result != null); assertTrue(result.hasNext()); while (result.hasNext()) { BindingSet solution = result.next(); assertTrue(solution.hasBinding("person")); assertEquals(alexander, solution.getValue("person")); } } finally { result.close(); } }
@Test(expected = QueryEvaluationException.class) public void testPreparedTupleQueryUnicode() throws Exception { testCon.add(alexander, name, Александър); StringBuilder queryBuilder = new StringBuilder(); queryBuilder.append(" SELECT person"); queryBuilder.append(" FROM {person} foaf:name {name}"); queryBuilder.append(" USING NAMESPACE foaf = <" + FOAF_NS + ">"); TupleQuery query = testCon.prepareTupleQuery(QueryLanguage.SERQL, queryBuilder.toString()); query.setBinding("name", Александър); TupleQueryResult result = query.evaluate(); try { assertTrue(result != null); assertTrue(result.hasNext()); while (result.hasNext()) { BindingSet solution = result.next(); assertTrue(solution.hasBinding("person")); assertEquals(alexander, solution.getValue("person")); } } finally { result.close(); } }