/** * Turns an RDF model, with properties and classes from the result set * vocabulary, into a SPARQL result set. The result set formed is a copy in * memory. * * @param model * @return ResultSet */ public static ResultSet fromRDF(Model model) { return new RDFInput(model); } }
/** * Process a result set encoded in RDF according to * <code>@link{http://www.w3.org/2001/sw/DataAccess/tests/result-set}#</code> * * @param model */ public RDFInput(Model model) { buildFromDumpFormat(model); }
private void buildOneResource(Resource root) { buildVariables(root); int count = buildPreprocess(root); if ( root.getModel().contains(null, ResultSetGraphVocab.index, (RDFNode)null) ) buildRowsOrdered(root, count); else buildRows(root); }
Model m = ModelFactory.createDefaultModel(); m.read(input, null); return RDFInput.fromRDF(m); Model m = ModelFactory.createDefaultModel(); m.read(input, null, "TURTLE"); return RDFInput.fromRDF(m); Model m = ModelFactory.createDefaultModel(); m.read(input, null, "N3"); return RDFInput.fromRDF(m); Model m = ModelFactory.createDefaultModel(); m.read(input, null, "N-TRIPLES"); return RDFInput.fromRDF(m);
private void buildFromDumpFormat(Model resultsModel) { varNames = new ArrayList<>(); StmtIterator sIter = resultsModel.listStatements(null, RDF.type, ResultSetGraphVocab.ResultSet); for ( ; sIter.hasNext() ; ) { // For each root Statement s = sIter.nextStatement(); Resource root = s.getSubject(); buildOneResource(root); } sIter.close(); reset(); }
private void buildRowsOrdered(Resource root, int count) { Model m = root.getModel(); // Assume one result set per file. for ( int index = 1 ;; index++ ) { Literal ind = m.createTypedLiteral(index); StmtIterator sIter = m.listStatements(null, ResultSetGraphVocab.index, ind); if ( !sIter.hasNext() ) break; Statement s = sIter.nextStatement(); if ( sIter.hasNext() ) Log.warn(this, "More than one solution: index = " + index); Resource soln = s.getSubject(); Binding rb = buildBinding(soln); rows.add(rb); sIter.close(); } if ( rows.size() != count ) Log.warn(this, "Found " + rows.size() + ": expected " + count); }
@Test public void test_RS_3() { ResultSetRewindable rs1 = new ResultSetMem() ; Model model = RDFOutput.encodeAsModel(rs1) ; rs1.reset() ; ResultSet rs2 = RDFInput.fromRDF(model) ; assertTrue(ResultSetCompare.equalsByTerm(rs1, rs2)) ; }
private void buildRows(Resource root) { // Now the results themselves int count = 0; StmtIterator solnIter = root.listProperties(ResultSetGraphVocab.solution); for ( ; solnIter.hasNext() ; ) { Resource soln = solnIter.nextStatement().getResource(); count++; Binding rb = buildBinding(soln); rows.add(rb); } solnIter.close(); if ( root.hasProperty(ResultSetGraphVocab.size) ) { try { int size = root.getRequiredProperty(ResultSetGraphVocab.size).getInt(); if ( size != count ) Log.warn(this, "Warning: Declared size = " + size + " : Count = " + count); } catch (JenaException rdfEx) {} } }
@Test public void test_RS_4() { ResultSetRewindable rs1 = makeRewindable("x", org.apache.jena.graph.NodeFactory.createURI("tag:local")) ; Model model = RDFOutput.encodeAsModel(rs1) ; rs1.reset() ; ResultSetRewindable rs2 = ResultSetFactory.makeRewindable(RDFInput.fromRDF(model)) ; boolean b = ResultSetCompare.equalsByTerm(rs1, rs2) ; if ( ! b ) { rs1.reset() ; rs2.reset() ; ResultSetFormatter.out(rs1) ; ResultSetFormatter.out(rs2) ; } assertTrue(b) ; }
/** * Turns an RDF model, with properties and classes from the result set * vocabulary, into a SPARQL result set. The result set formed is a copy in * memory. * * @param model * @return ResultSet */ static public ResultSet makeResults(Model model) { return new RDFInput(model); }
/** * Turns an RDF model, with properties and classes from the result set * vocabulary, into a SPARQL result set which is rewindable (has a * .reset()operation). The result set formed is a copy in memory. * * @param model * @return ResultSetRewindable */ static public ResultSetRewindable makeRewindable(Model model) { return new RDFInput(model); }