Thanks Andy, both approaches work well.
Miguel > On 20 Jul 2015, at 23:00, Andy Seaborne <[email protected]> wrote: > > Hi Miguel, > > See one of the staticon QueryExecutionFactory that takes a QuerySolution. > > Make > [[ > String sparql2 = > "prefix : <http://www.example.org/test#> " + > "Select ?o where {?X :p2 ?o}"; > ]] > and set ?X (QuerySolutionMap) to the bnode or change so ?o is in in that slot: > > Select ?o2 where {?o :p2 ?o2} > > Andy > > On 20/07/15 18:10, Miguel Bento Alves wrote: >> I have a program where I need to re-use the data returned from sparql >> commands in others sparql commands. However, I can't figure out how can I >> do this when blank nodes are returned. How can I make reference to a blank >> node returned by a sparql command in other sparql command? I tried to >> simplify my problem in example listed below (is only a short example that >> is not my real case). I want to get: >> :s01;:o01 >> :s21;:o22 >> :s11;:o12 >> >> (I need the code line to replace "//How should construct here the sparql >> command?" to put the code returning the desire results) >> >> Miguel >> >> public class Test15 { >> >> public static void main(String[] args) { >> String myData = >> "@prefix : <http://www.example.org/test#> . \n" + >> ":s01 :p1 [:p2 :o02] .\n" + >> ":s11 :p1 :os11 .\n" + >> ":os11 :p2 :o12 . \n" + >> ":s21 :p1 :os21 .\n" + >> ":os21 :p2 :o22 . "; >> >> Model m = ModelFactory.createDefaultModel(); >> >> m.read( new ByteArrayInputStream( myData.getBytes() ), null, "TTL" >> ); >> >> String sparql1 = >> "prefix : <http://www.example.org/test#> " + >> "Select ?p ?o where {?p :p1 ?o}"; >> >> String sparql2 = >> "prefix : <http://www.example.org/test#> " + >> "Select ?o where {_P1_ :p2 ?o}"; >> >> QueryExecution qe = QueryExecutionFactory.create(sparql1, m); >> >> ResultSet rs = qe.execSelect(); >> while(rs.hasNext()) { >> QuerySolution qs = rs.next(); >> String inner_sparql2 = ""; >> if(qs.get("o").isAnon()) { >> "//How should construct here the sparql command?" >> } >> else { >> inner_sparql2 = sparql2.replace("_P1_", "<"+ qs.get("o") + >> ">"); >> } >> if(inner_sparql2.length()>0) { >> QueryExecution qe2 = >> QueryExecutionFactory.create(inner_sparql2, m); >> >> ResultSet rs2 = qe2.execSelect(); >> >> while(rs2.hasNext()) { >> QuerySolution qs2 = rs2.next(); >> System.out.println(qs.get("p") +";"+qs2.get("o")); >> } >> } >> } >> } >> } >> >
