I will check it. Thanks for your help.
2018-07-11 20:43 GMT+09:00 Andy Seaborne <[email protected]>: > On 11/07/18 10:00, Myungjin Lee wrote: > >> Thank you for your help. >> >> As you know, there are several triple stores such as Virtuoso, >> AllegroGraph, >> and so forth. >> So I want to develop Jena base interfaces for different triple stores. >> I know that some triple stores already support Jena, but some triple >> stores >> that are not famous only support SPARQL endpoint. >> > > Have you looked at Jena's RDFConnection? > > > >> For these triple stores, I need some classes that implements Jena >> interfaces. >> It is one of classes and methods to return NodeIterator from SPARQL >> result. >> >> I thought there are, maybe, a simple way to create NodeIterator from >> ResultSet. >> But your code is a good solution for me. >> >> Thank you. >> >> >> >> -----Original Message----- >> From: Lorenz Buehmann <[email protected]> >> Sent: Wednesday, July 11, 2018 3:25 PM >> To: [email protected] >> Subject: Re: Create NodeIterator from SPARQL Result >> >> A NodeIterator for what? A ResultSet wraps an iterator of QuerySolution >> objects, each of which contains the mapping of a variable name to the >> corresponding RDF resource (if bound). Thus, each QuerySolution can wrap a >> set of nodes... >> >> Clearly, you could generate a wrapping iterator by yourself. Just >> implement >> the NodeIterator interface and the corresponding methods. The constructor >> indeed should take the ResultSet and a variable name as arguments (if you >> want all nodes for each QuerySolution, it'S also >> possible) - the rest is straightforward Java coding. >> >> >> Untested stub: >> >> >> class ResultSetWrappingNodeIterator implements NodeIterator { >> >> final ResultSet rs; >> >> final String varName; >> >> ResultSetWrappingNodeIterator(ResultSet rs, String varName) { >> >> this.rs = rs; >> >> this.varName = varName; >> >> } >> >> >> public RDFNode next() { >> >> return rs.next().get(varName).asNode(); >> >> } >> >> >> ... >> >> } >> >> >> >> On 11.07.2018 07:27, Myungjin Lee wrote: >> >>> Hi. >>> >>> >>> I have a question. I am developing small application with Jena and ARQ. >>> >>> >>> Is it possible to create NodeIterator instance from SPARQL result? >>> >>> In Jena and ARQ APIs, SPARQL query(qexec.execSelect() method) returns >>> an instance of ResultSet interface. >>> >>> >>> But I want to create a method that returns NodeIterator instance after >>> executing SPARQL query like below. >>> >>> >>> public NodeIterator getObjects(Resource s, Property p) { >>> >>> String queryString = "SELECT ?o WHERE { <" + s.getURI() + >>> "> <" + >>> p.getURI() + "> ?o . }"; >>> >>> Query query = QueryFactory.create(queryString); >>> >>> QueryExecution qexec = >>> QueryExecutionFactory.sparqlService("SPARQL_ENDPOINT_ADDRESS", query); >>> >>> ResultSet results = qexec.execSelect(); >>> >>> NodeIterator ni = ??? // to create NodeIterator instance >>> from ResultSet >>> >>> return ni; >>> >>> } >>> >>> >>> Is it possible? >>> >>> Thank you for your help. >>> >>> >>> Best regards, >>> >>> Myungjin Lee >>> >>> >>> >> >> >>
