Hi Rupert, all I want to add only one consideration that I missed in the previous email. Subqueries are completely in SPARQL1.1, but both Jena [1] (with syntaxARQ) and Virtuoso support it as you can easily see querying DBpedia.
Best. -- Andrea Giovanni Nuzzolese Semantic Technology Laboratory (STLab) Institute for Cognitive Science and Technology (ISTC) National Research Council (CNR) Via Nomentana 56, Roma - Itay [1] http://jena.sourceforge.net/ARQ/sub-select.html On Jun 13, 2011, at 7:30 PM, Andrea Giovanni Nuzzolese wrote: > Hi Rupert, all > > my impression is that the limit in the construct should work only at the > level of the constraints that the user have provided in the FieldQuery. > To be to be as clearly as possible I take again my previous query example in > which I want to find at most 3 same as entities of > <http://www4.wiwiss.fu-berlin.de/factbook/resource/United_States> > > { > "selected": ["http:\/\/www.w3.org\/2000\/01\/rdf-schema#label", > "http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#type"], > "offset": "0", > "limit": "3", > "constraints": [ {"type": "reference", "field": > "http:\/\/www.w3.org\/2002\/07\/owl#sameAs", "value": > "http:\/\/www4.wiwiss.fu-berlin.de\/factbook\/resource\/United_States"}] > } > > To select at most the right number of entities the query should be converted > into a construct like the following > > CONSTRUCT { > ?id <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?v_1 . > ?id <http://www.w3.org/2000/01/rdf-schema#label> ?v_2 . > <http://www.iks-project.eu/ontology/rick/query/QueryResultSet> > <http://www.iks-project.eu/ontology/rick/query/queryResult> ?id . > } > WHERE { > { > SELECT ?id > WHERE { ?id > <http://www.w3.org/2002/07/owl#sameAs><http://www4.wiwiss.fu-berlin.de/factbook/resource/United_States> > } > LIMIT 3 > } > OPTIONAL { ?id <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?v_1 . } . > OPTIONAL { ?id <http://www.w3.org/2000/01/rdf-schema#label> ?v_2 . } > } > ORDER BY DESC ( <LONG::IRI_RANK> (?id) ) > > In this way the limit works on the number of entities to fetch and not the > number of solutions. > > Best. > > -- > Andrea Giovanni Nuzzolese > Semantic Technology Laboratory (STLab) > Institute for Cognitive Science and Technology (ISTC) > National Research Council (CNR) > Via Nomentana 56, Roma - Itay > > On Jun 13, 2011, at 6:47 PM, Rupert Westenthaler wrote: > >> Hi Andrea, all >> >> While working on this I discovered something else: >> >> The "LIMIT" of SPARQL is based on solutions. For the Entityhub its >> semantic is that is defines the number of entities to select. >> >> When selecting multiple variables there is the possibility (actually >> it is very likely) that there are multiple solutions/entity. Therefore >> it can no longer be predicted how many entities are selected by a >> SPARQL query. This also affects CONSTRUCT queries as it will restrict >> the numbers of triples added to the resulting graph. >> >> Is if there is any possibility to work around this problem? >> >> best >> Rupert Westenthaler >> >> On Thu, Jun 9, 2011 at 3:57 PM, Andrea Giovanni Nuzzolese >> <[email protected]> wrote: >>> The issue is STANBOL-222. >>> >>> Best. >>> Andrea >>> >>> On Jun 9, 2011, at 9:54 AM, Rupert Westenthaler wrote: >>> >>>> Hi >>>> >>>> Thx a lot. I was aware of the fact that optional constraints do cause >>>> this problem, but I have not known that rewriting the query like this >>>> can solve this problem. >>>> I will try to change the generation of SPARQL queries tomorrow on the >>>> way back from Berlin to Salzburg. >>>> >>>> would be nice if you could create a JIRA issue for that >>>> >>>> best >>>> Rupert >>>> >>>> On Wed, Jun 8, 2011 at 7:20 PM, Andrea Giovanni Nuzzolese >>>> <[email protected]> wrote: >>>>> Hi, >>>>> I am trying to use the query service provided by the EntityHub. >>>>> The JSON field query I wrote is the following >>>>> { >>>>> "selected": ["http:\/\/www.w3.org\/2000\/01\/rdf-schema#label", >>>>> "http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#type"], >>>>> "offset": "0", >>>>> "limit": "3", >>>>> "constraints": [ >>>>> { >>>>> "type": "reference", >>>>> "field": "http:\/\/www.w3.org\/2002\/07\/owl#sameAs", >>>>> "value": >>>>> "http:\/\/www4.wiwiss.fu-berlin.de\/factbook\/resource\/United_States", >>>>> }] >>>>> } >>>>> and aims to find all the owl:sameAs entities of the entity >>>>> <http://www4.wiwiss.fu-berlin.de/factbook/resource/United_States> in >>>>> DBpedia. >>>>> But instead of the graph with the expected results I always receive the >>>>> error >>>>> javax.ws.rs.WebApplicationException: >>>>> org.apache.stanbol.entityhub.servicesapi.site.ReferencedSiteException: >>>>> Unable execute Query on remote site http://dbpedia.org/sparql >>>>> The sparql construct serialized by the EntityHub is the following >>>>> CONSTRUCT { >>>>> ?id <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?v_1 . >>>>> ?id <http://www.w3.org/2000/01/rdf-schema#label> ?v_2 . >>>>> <http://www.iks-project.eu/ontology/rick/query/QueryResultSet> >>>>> <http://www.iks-project.eu/ontology/rick/query/queryResult> ?id . >>>>> } >>>>> WHERE { >>>>> { {?id <http://www.w3.org/2002/07/owl#sameAs> >>>>> <http://www4.wiwiss.fu-berlin.de/factbook/resource/United_States> }} >>>>> { OPTIONAL { ?id <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?v_1 . >>>>> } >>>>> } >>>>> { OPTIONAL { ?id <http://www.w3.org/2000/01/rdf-schema#label> ?v_2 . } } >>>>> } >>>>> ORDER BY DESC ( <LONG::IRI_RANK> (?id) ) LIMIT 3 >>>>> If you try to run this construct directly on the SPARQL endpoint of >>>>> dbpedia >>>>> the response is always "Virtuoso 42000 Error The estimated execution time >>>>> 0 >>>>> (sec) exceeds the limit of 1500 (sec)." >>>>> It seems that the problem is in the graph patterns containing optional as >>>>> they are bound to the whole default graph ( {OPTIONAL{triple pattern} } is >>>>> equivalent to { {} OPTIONAL {triple pattern} }. >>>>> In fact the query works properly both if you substitute the three graph >>>>> patterns into one graph pattern as follows >>>>> ... >>>>> WHERE { >>>>> ?id <http://www.w3.org/2002/07/owl#sameAs> >>>>> <http://www4.wiwiss.fu-berlin.de/factbook/resource/United_States> . >>>>> OPTIONAL { ?id <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?v_1 . } >>>>> OPTIONAL { ?id <http://www.w3.org/2000/01/rdf-schema#label> ?v_2 . } >>>>> } >>>>> ... >>>>> >>>>> and if you bind the optional to the global solution of the WHERE clause, >>>>> i.e. >>>>> ... >>>>> WHERE { >>>>> {{?id <http://www.w3.org/2002/07/owl#sameAs> >>>>> <http://www4.wiwiss.fu-berlin.de/factbook/resource/United_States> . }} >>>>> OPTIONAL { ?id <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?v_1 . } >>>>> . >>>>> OPTIONAL { ?id <http://www.w3.org/2000/01/rdf-schema#label> ?v_2 . } >>>>> } >>>>> ... >>>>> >>>>> >>>>> Regards. >>>>> -- >>>>> Andrea Giovanni Nuzzolese >>>>> Semantic Technology Laboratory (STLab) >>>>> Institute for Cognitive Science and Technology (ISTC) >>>>> National Research Council (CNR) >>>>> Via Nomentana 56, Roma - Itay >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> | Rupert Westenthaler [email protected] >>>> | Bodenlehenstraße 11 ++43-699-11108907 >>>> | A-5500 Bischofshofen >>> >>> -- >>> Andrea Giovanni Nuzzolese >>> Semantic Technology Laboratory (STLab) >>> Institute for Cognitive Science and Technology (ISTC) >>> National Research Council (CNR) >>> Via Nomentana 56, Roma - Itay >>> >>> >>> >>> >>> >>> >>> >> >> >> >> -- >> | Rupert Westenthaler [email protected] >> | Bodenlehenstraße 11 ++43-699-11108907 >> | A-5500 Bischofshofen > > > > > > > >
