@Override public void startQueryResult(List<String> bindingNames) throws TupleQueryResultHandlerException { tupleVariablesFound = true; if (!documentStarted) { startDocument(); } // Copy supplied column headers list and make it unmodifiable bindingNames = new ArrayList<String>(bindingNames); this.bindingNames = Collections.unmodifiableList(bindingNames); try { out.writeInt(this.bindingNames.size()); for (String bindingName : this.bindingNames) { writeString(bindingName); } List<Value> nullTuple = Collections.nCopies(this.bindingNames.size(), (Value)null); previousBindings = new ListBindingSet(this.bindingNames, nullTuple); nextNamespaceID = 0; } catch (IOException e) { throw new TupleQueryResultHandlerException(e); } }
@Override public void startQueryResult(List<String> bindingNames) throws TupleQueryResultHandlerException { tupleVariablesFound = true; if (!documentStarted) { startDocument(); } // Copy supplied column headers list and make it unmodifiable bindingNames = new ArrayList<String>(bindingNames); this.bindingNames = Collections.unmodifiableList(bindingNames); try { out.writeInt(this.bindingNames.size()); for (String bindingName : this.bindingNames) { writeString(bindingName); } List<Value> nullTuple = Collections.nCopies(this.bindingNames.size(), (Value)null); previousBindings = new ListBindingSet(this.bindingNames, nullTuple); nextNamespaceID = 0; } catch (IOException e) { throw new TupleQueryResultHandlerException(e); } }
@Override public void startQueryResult(List<String> bindingNames) throws TupleQueryResultHandlerException { tupleVariablesFound = true; if (!documentStarted) { startDocument(); } // Copy supplied column headers list and make it unmodifiable bindingNames = new ArrayList<>(bindingNames); this.bindingNames = Collections.unmodifiableList(bindingNames); try { out.writeInt(this.bindingNames.size()); for (String bindingName : this.bindingNames) { writeString(bindingName); } List<Value> nullTuple = Collections.nCopies(this.bindingNames.size(), (Value)null); previousBindings = new ListBindingSet(this.bindingNames, nullTuple); nextNamespaceID = 0; } catch (IOException e) { throw new TupleQueryResultHandlerException(e); } }
@Override public BindingSet populateNewBean(String[] line) { List<Value> values = new ArrayList<>(line.length); for (String valueString : line) { Value v = null; if (valueString.startsWith("_:")) { v = valueFactory.createBNode(valueString.substring(2)); } else if (!"".equals(valueString)) { if (numberPattern.matcher(valueString).matches()) { v = parseNumberPatternMatch(valueString); } else { try { v = valueFactory.createIRI(valueString); } catch (IllegalArgumentException e) { v = valueFactory.createLiteral(valueString); } } } values.add(v); } return new ListBindingSet(bindingNames, values.toArray(new Value[values.size()])); } }
return new ListBindingSet(bindingNames, values.toArray(new Value[values.size()]));
@Override public VisibilityBindingSet read(final Kryo kryo, final Input input, final Class<VisibilityBindingSet> aClass) { final String visibility = input.readString(); final int bindingCount = input.readInt(); final ArrayList<String> namesList = new ArrayList<String>(bindingCount); final ArrayList<Value> valuesList = new ArrayList<Value>(bindingCount); for (int i = bindingCount; i > 0; i--) { namesList.add(input.readString()); final String valueString = input.readString(); final IRI type = VF.createIRI(input.readString()); valuesList.add(makeValue(valueString, type)); } final BindingSet bindingSet = new ListBindingSet(namesList, valuesList); return new VisibilityBindingSet(bindingSet, visibility); } }
@Override public BindingSet visit(ASTBindingSet node, Object data) throws VisitorException { @SuppressWarnings("unchecked") List<Var> vars = (List<Var>)data; List<String> names = new ArrayList<String>(vars.size()); for (Var var : vars) { names.add(var.getName()); } int numberOfBindingValues = node.jjtGetNumChildren(); if (numberOfBindingValues != vars.size()) { throw new VisitorException( "number of values in bindingset does not match variables in BINDINGS clause"); } Value[] values = new Value[numberOfBindingValues]; for (int i = 0; i < numberOfBindingValues; i++) { ValueExpr ve = (ValueExpr)node.jjtGetChild(i).jjtAccept(this, null); if (ve != null) { Value v = getValueForExpr(ve); values[i] = v; } } BindingSet result = new ListBindingSet(names, values); return result; }
@Override public BindingSet visit(ASTBindingSet node, Object data) throws VisitorException { @SuppressWarnings("unchecked") List<Var> vars = (List<Var>)data; List<String> names = new ArrayList<>(vars.size()); for (Var var : vars) { names.add(var.getName()); } int numberOfBindingValues = node.jjtGetNumChildren(); if (numberOfBindingValues != vars.size()) { throw new VisitorException( "number of values in bindingset does not match variables in BINDINGS clause"); } Value[] values = new Value[numberOfBindingValues]; for (int i = 0; i < numberOfBindingValues; i++) { ValueExpr ve = (ValueExpr)node.jjtGetChild(i).jjtAccept(this, null); if (ve != null) { Value v = getValueForExpr(ve); values[i] = v; } } BindingSet result = new ListBindingSet(names, values); return result; }
@Override public BindingSet visit(ASTBindingSet node, Object data) throws VisitorException { @SuppressWarnings("unchecked") List<Var> vars = (List<Var>)data; List<String> names = new ArrayList<String>(vars.size()); for (Var var : vars) { names.add(var.getName()); } int numberOfBindingValues = node.jjtGetNumChildren(); if (numberOfBindingValues != vars.size()) { throw new VisitorException( "number of values in bindingset does not match variables in BINDINGS clause"); } Value[] values = new Value[numberOfBindingValues]; for (int i = 0; i < numberOfBindingValues; i++) { ValueExpr ve = (ValueExpr)node.jjtGetChild(i).jjtAccept(this, null); if (ve != null) { Value v = getValueForExpr(ve); values[i] = v; } } BindingSet result = new ListBindingSet(names, values); return result; }
BindingSet bindingSet = new ListBindingSet(columnNames, contextIter.next()); contexts.add(bindingSet);
return new ListBindingSet(bindingNames, values.toArray(new Value[values.size()]));
return new ListBindingSet(bindingNames, values.toArray(new Value[values.size()]));
Literal namespace = vf.createLiteral(ns.getName()); BindingSet bindingSet = new ListBindingSet(columnNames, prefix, namespace); namespaces.add(bindingSet);
final Multiset<BindingSet> expectedSolutions1 = HashMultiset.create(); final List<String> varNames = Arrays.asList("x", "friendOfFriend"); expectedSolutions1.add(new ListBindingSet(varNames, alice, eve)); expectedSolutions1.add(new ListBindingSet(varNames, alice, eve)); expectedSolutions1.add(new ListBindingSet(varNames, bob, alice)); expectedSolutions1.add(new ListBindingSet(varNames, carol, alice)); expectedSolutions1.add(new ListBindingSet(varNames, dan, eve)); expectedSolutions1.add(new ListBindingSet(varNames, eve, bob)); expectedSolutions1.add(new ListBindingSet(varNames, eve, carol)); + "}"; final Multiset<BindingSet> expectedSolutions2 = HashMultiset.create(); expectedSolutions2.add(new ListBindingSet(varNames, alice, eve)); expectedSolutions2.add(new ListBindingSet(varNames, bob, alice)); expectedSolutions2.add(new ListBindingSet(varNames, carol, alice)); expectedSolutions2.add(new ListBindingSet(varNames, dan, eve)); expectedSolutions2.add(new ListBindingSet(varNames, eve, bob)); expectedSolutions2.add(new ListBindingSet(varNames, eve, carol));
@Test public void testSingleStatementPattern() throws Exception { // Insert data insert(OWL.THING, RDF.TYPE, OWL.CLASS); insert(FOAF.PERSON, RDF.TYPE, OWL.CLASS, 1); insert(FOAF.PERSON, RDFS.SUBCLASSOF, OWL.THING); insert(VF.createIRI("urn:Alice"), RDF.TYPE, FOAF.PERSON); dao.flush(); // Define query and expected results final String query = "SELECT * WHERE {\n" + " ?individual a ?type .\n" + "}"; final List<String> varNames = Arrays.asList("individual", "type"); final Multiset<BindingSet> expectedSolutions = HashMultiset.create(); expectedSolutions.add(new ListBindingSet(varNames, OWL.THING, OWL.CLASS)); expectedSolutions.add(new ListBindingSet(varNames, FOAF.PERSON, OWL.CLASS)); expectedSolutions.add(new ListBindingSet(varNames, VF.createIRI("urn:Alice"), FOAF.PERSON)); // Execute pipeline and verify results testPipelineQuery(query, expectedSolutions); }
@Test public void testMultiConstruct() throws Exception { // Insert data final IRI alice = VF.createIRI("urn:Alice"); final IRI bob = VF.createIRI("urn:Bob"); final IRI eve = VF.createIRI("urn:Eve"); final IRI friend = VF.createIRI("urn:friend"); final IRI knows = VF.createIRI("urn:knows"); final IRI person = VF.createIRI("urn:Person"); insert(alice, friend, bob); insert(bob, knows, eve); insert(eve, knows, alice); // Define query and expected results final String query = "CONSTRUCT {\n" + " ?x rdf:type owl:Thing .\n" + " ?x rdf:type <urn:Person> .\n" + "} WHERE { ?x <urn:knows> ?y }"; final Multiset<BindingSet> expected = HashMultiset.create(); final List<String> varNames = Arrays.asList("subject", "predicate", "object"); expected.add(new ListBindingSet(varNames, bob, RDF.TYPE, OWL.THING)); expected.add(new ListBindingSet(varNames, bob, RDF.TYPE, person)); expected.add(new ListBindingSet(varNames, eve, RDF.TYPE, OWL.THING)); expected.add(new ListBindingSet(varNames, eve, RDF.TYPE, person)); // Test query testPipelineQuery(query, expected); }
final List<String> varNames = Arrays.asList("A", "B"); final Multiset<BindingSet> expectedSolutions = HashMultiset.create(); expectedSolutions.add(new ListBindingSet(varNames, person, FOAF.PERSON)); expectedSolutions.add(new ListBindingSet(varNames, FOAF.PERSON, person)); expectedSolutions.add(new ListBindingSet(varNames, thing, OWL.THING)); expectedSolutions.add(new ListBindingSet(varNames, OWL.THING, thing));
final List<String> varNames = Arrays.asList("x", "y1", "y2"); final Multiset<BindingSet> expected1 = HashMultiset.create(); expected1.add(new ListBindingSet(varNames, alice, alice, bob)); expected1.add(new ListBindingSet(varNames, alice, eve, bob)); expected1.add(new ListBindingSet(varNames, bob, eve, bob)); + "}"; final Multiset<BindingSet> expected2 = HashMultiset.create(); expected2.add(new ListBindingSet(varNames, alice, bob, bob));
@Test public void testIterationGivenBindingSet() throws QueryEvaluationException { BindingSet solution = new ListBindingSet(Arrays.asList("b", "c"), VF.createIRI("urn:Bob"), VF.createIRI("urn:Charlie")); HashMap<String, String> nameMap = new HashMap<>();
final List<String> varNames = Arrays.asList("A", "B"); final Multiset<BindingSet> expectedSolutions = HashMultiset.create(); expectedSolutions.add(new ListBindingSet(varNames, person, FOAF.PERSON)); expectedSolutions.add(new ListBindingSet(varNames, FOAF.PERSON, person)); expectedSolutions.add(new ListBindingSet(varNames, thing, OWL.THING)); expectedSolutions.add(new ListBindingSet(varNames, OWL.THING, thing));