Hi Joshua
Sorry to revisit this thread
In one of the links you kindly provided there is a great example for using
PSS in a construct ( see below)
I really like the example. It's neat that you combine the models together
in a new model before writing it out.

I have a similar problem but I want to run a series of select queries
combing the results of the resultsets before doing something with all the
results.

I've tried a couple ways of doing this but I keep hitting hurdles.
The obvious way is to add each resultset querysolution into a
list<querysolution> and then use an iterator over the list.
But then I can't cast the list Iterator as a resultset which I would like
to do to try and reuse variables in the code whether the it is running
multiple selects or just one.

Is using a list<querysolution>.iterator() the best way to achieve the
outcome?
Cheers
Phil


public class DBPediaQuery {
  public static void main( String[] args ) {
    final String dbpedia = "http://dbpedia.org/sparql";;
    final ParameterizedSparqlString queryString
      = new ParameterizedSparqlString(
            "PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>"+
            "PREFIX dbo: <http://dbpedia.org/ontology/>" +
            "CONSTRUCT WHERE {" +
            "  ?s a dbo:Place ." +
            "  ?s geo:lat ?lat ." +
            "  ?s geo:long ?long ." +
            "}" );
    Model allResults = ModelFactory.createDefaultModel();
    for ( String mountain : new String[] { "Mount_Monadnock",
"Mount_Lafayette" } ) {
      queryString.setIri( "?s", "http://dbpedia.org/resource/"; + mountain );
      QueryExecution exec = QueryExecutionFactory.sparqlService(
dbpedia, queryString.toString() );
      Model results = exec.execConstruct();
      allResults.add( results );
    }
    allResults.setNsPrefix( "geo", "http://www.w3.org/2003/01/geo/wgs84_pos#"; );
    allResults.setNsPrefix( "dbo", "http://dbpedia.org/ontology/"; );
    allResults.setNsPrefix( "dbr", "http://dbpedia.org/resource/"; );
    allResults.write( System.out, "N3" );
  }}




On Thu, Aug 22, 2013 at 5:42 PM, Joshua TAYLOR <[email protected]>wrote:

> > On 8/22/13 9:19 AM, "Phil Ashworth" <[email protected]> wrote:
> >
> >>Hi Guys
> >>I noticed the documentation states*
> >>"
> >>QuerySolutionMap initialBinding = new
> >>QuerySolutionMap();initialBinding.add("name", personResource);qe =
> >>QueryExecutionFactory.create(query, dataset, initialBinding);*
> >>
> >>* *
> >>
> >>*This is often much simpler than the string equivalent since you don't
> >>have
> >>to escape quotes in literals. (Beware that this doesn't work for
> >>sparqlService, which is a great shame. It would be nice to spend some
> time
> >>remedying that.) "*
> >>
> >>I'm actually in the situation that I would like to bind variables for a
> >>sparqlService.
>
> On Thu, Aug 22, 2013 at 12:27 PM, Rob Vesse <[email protected]> wrote:
> > See ParamaterizedSparqlString -
> >
> http://jena.apache.org/documentation/query/parameterized-sparql-strings.htm
> > l
>
> In addition to the documentation, there are some code samples floating
> around the web, too.
>
> This stack overflow answer has code demonstrating the use of a
> parameterized SPARQL string:
>
> http://stackoverflow.com/questions/16737653/get-latitude-and-longitude-of-a-place-dbpedia
>
> Additionally, if you need more than one set of bindings, there's an
> not-too-old (about 3 weeks) about programmatically constructing a
> VALUES block for query here (which doesn't use a
> ParameterizedSparqlString):
>
> http://mail-archives.apache.org/mod_mbox/jena-users/201308.mbox/%3cca+q4jnn9vce94x2mmepuhnwjsj4kxeksrtuwf8n43jsc37c...@mail.gmail.com%3E
>
> //JT
>
> --
> Joshua Taylor, http://www.cs.rpi.edu/~tayloj/
>

Reply via email to