Le mar. 29 août 2023 à 18:30, <[email protected]> a écrit :

>
>
> Orange Restricted
>
> -----Message d'origine-----
> De : Thomas Francart <[email protected]>
> ...
> No, that's not true. This is a possible implementation for federated
> querying (*"Implementers of SPARQL 1.1 Federated Query may use the VALUES
> clause...")*, but this is transparent for you, you don't have to use the
> VALUES clause yourself.
>
>
> > Unfortunately, there is no example in that document on how to use it,
>
>
> That's because you don't have to use it
>
>         FR> you're right, I missed the "Implementers of..."
>
> Don't do federated querying :-)
> Try to use an http to debug the exact query that is being sent by Jena to
> Wikidata, this will help you understand the problem. Or maybe Jena has a
> parameter itself to debug the queries it sends to external services ?
>
>         FR> If nobody in the list provides a solution, I'll will run two
> instances of fuseki. One "local" and one "remote" and I'll check on the
> standard output of the "remote" if the "local" has issued a query with the
> clause "VALUES" 😊.


Good idea. Now I seem to remember I ran into similar problems with
Wikidata, and it was because their endpoint does not honor the VALUES
clause correctly. It is passed outside of the WHERE clause, but it works
only if it is place inside that clause.
You will be able to test that once you get the exact query that is sent to
WD.

I would be interested to know about your findings.

Thomas


>
> > Orange Restricted
> >
> > -----Message d'origine-----
> > De : RAMPARANY Fano INNOV/IT-S
> > Envoyé : mardi 29 août 2023 10:58
> > À : [email protected]
> > Objet : RE: Problem with federated queries
> >
> > Thank you for pointing us the reason of the issue. However, it seems
> that
> > introducing the subquery first doesn't seem to work either.
> >
> > I slightly modified the query you suggested to:
> >
> > PREFIX wd: <http://www.wikidata.org/entity/> PREFIX owl: <
> > http://www.w3.org/2002/07/owl#> PREFIX ex: <http://example/> PREFIX wdt:
> > <http://www.wikidata.org/prop/direct/>
> > PREFIX geof: <http://www.opengis.net/def/geosparql/function/>
> > SELECT *
> > WHERE {
> >   {
> >     SELECT ?ParisWDID ?BordeauxWDID
> >     WHERE {
> >       BIND (wd:Q90 AS ?ParisWDID)
> >       BIND (wd:Q1479 AS ?BordeauxWDID)
> >     }
> >   }
> >   SERVICE <https://query.wikidata.org/sparql> {
> >    ?ParisWDID wdt:P625 ?ParisLoc .
> >    ?BordeauxWDID wdt:P625 ?BordeauxLoc .
> >    BIND(geof:distance(?ParisLoc,?BordeauxLoc) AS ?dist)
> >   }
> > }
> >
> > Because the variables ?ParisWDID and ?BordeauxWDID should hold the
> > Wikidata identifiers. But the target query should be:
> >
> > PREFIX wd: <http://www.wikidata.org/entity/> PREFIX owl: <
> > http://www.w3.org/2002/07/owl#> PREFIX ex: <http://example/> PREFIX wdt:
> > <http://www.wikidata.org/prop/direct/>
> > PREFIX geof: <http://www.opengis.net/def/geosparql/function/>
> > SELECT *
> > WHERE {
> >   {
> >     SELECT ?ParisWDID ?BordeauxWDID
> >     WHERE {
> >       ?ParisWDID owl:sameAs ex:Paris .
> >       ?BordeauxWDID owl:sameAs ex:Bordeaux .
> >     }
> >   }
> >   SERVICE <https://query.wikidata.org/sparql> {
> >    ?ParisWDID wdt:P625 ?ParisLoc .
> >    ?BordeauxWDID wdt:P625 ?BordeauxLoc .
> >    BIND(geof:distance(?ParisLoc,?BordeauxLoc) AS ?dist)
> >   }
> > }
> >
> > As these identifiers are defined in the RDF graph and are not supposed
> > to be known when building the query.
> >
> > Unfortunately, although they use subqueries, none of the two queries
> work.
> > The error persists ☹
> >
> > Fano
> >
> >
> > Orange Restricted
> >
> > -----Message d'origine-----
> > De : Thomas Francart <[email protected]> Envoyé : lundi 28
> > août
> > 2023 18:26 À : [email protected] Objet : Re: Problem with
> > federated queries
> >
> > One typical problem is that the federated query might be executed
> > *before* the rest of the query.
> > So when you write
> >
> >   SERVICE https://query.wikidata.org/sparql {
> >    ?ParisWDID wdt:P625 ?ParisLoc .
> >    ?BordeauxWDID wdt:P625 ?BordeauxLoc .
> >    BIND(geof:distance(?ParisLoc,?BordeauxLoc) AS ?dist)
> >   }
> >
> > Then that part is sent to Wikidata *without any bindings of the
> > variables*, which is basically asking wikidata to return the distance
> > between *all* pairs of entities in the database, resulting in a timeout.
> > And this is why your second query works.
> >
> > If you want to guarantee ordering of execution, use a subquery, which
> > is logically executed first :
> >
> > PREFIX wd: http://www.wikidata.org/entity/ PREFIX owl:
> > http://www.w3.org/2002/07/owl# PREFIX ex: http://example/ PREFIX wdt:
> > http://www.wikidata.org/prop/direct/
> > PREFIX geof: http://www.opengis.net/def/geosparql/function/
> > SELECT *
> > WHERE {
> >
> > {
> >   SELECT ?ParisWDID ?BordeauxWDID
> >   WHERE {
> >     BIND(ex:Paris AS ?ParisWDID )
> >     BIND(ex:Bordeaux AS ?BordeauxWDID )
> >   }
> > }
> >
> >   ?ParisWDID owl:sameAs ex:Paris .
> >   ?BordeauxWDID owl:sameAs ex:Bordeaux .
> >   SERVICE https://query.wikidata.org/sparql {
> >    ?ParisWDID wdt:P625 ?ParisLoc .
> >    ?BordeauxWDID wdt:P625 ?BordeauxLoc .
> >    BIND(geof:distance(?ParisLoc,?BordeauxLoc) AS ?dist)
> >   }
> > }
> >
> > (note : that typical query pattern is supported in Sparnatural SPARQL
> > query builder, see
> > http://docs.sparnatural.eu/Federated-querying.html#additionnal-experim
> > ental-config--executedafter
> > )
> >
> > Le lun. 28 août 2023 à 18:08, <[email protected]> a écrit :
> >
> > >
> > > Hello,
> > >
> > > I've got a problem running this query on fuseki 4.9.0 (basically,
> > > I'd like to delegate to Wikidata, the computation of the distance
> > > between two
> > > cities) :
> > >
> > > PREFIX wd: http://www.wikidata.org/entity/ PREFIX owl:
> > > http://www.w3.org/2002/07/owl# PREFIX ex: http://example/ PREFIX wdt:
> > > http://www.wikidata.org/prop/direct/
> > > PREFIX geof: http://www.opengis.net/def/geosparql/function/
> > > SELECT *
> > > WHERE {
> > >   ?ParisWDID owl:sameAs ex:Paris .
> > >   ?BordeauxWDID owl:sameAs ex:Bordeaux .
> > >   SERVICE https://query.wikidata.org/sparql {
> > >    ?ParisWDID wdt:P625 ?ParisLoc .
> > >    ?BordeauxWDID wdt:P625 ?BordeauxLoc .
> > >    BIND(geof:distance(?ParisLoc,?BordeauxLoc) AS ?dist)
> > >   }
> > > }
> > > ____________
> > > Here is the content of my rdf graph:
> > >
> > > @prefix wd: http://www.wikidata.org/entity/ .
> > > @prefix owl: http://www.w3.org/2002/07/owl# .
> > > @prefix wdt: http://www.wikidata.org/prop/direct/ .
> > > @prefix ex: http://example/ .
> > >
> > > wd:Q90 owl:sameAs ex:Paris .
> > >
> > > wd:Q1479 owl:sameAs ex:Bordeaux .
> > >
> > > ____________
> > > Here is the trace on the standard output:
> > >
> > > 17:44:59 INFO  Fuseki          :: [8] POST
> > > http://localhost:3030/sparql/sparql
> > > 17:44:59 INFO  Fuseki          :: [8] Query = PREFIX wd:
> > > http://www.wikidata.org/entity/ PREFIX owl:
> > > http://www.w3.org/2002/07/owl# PREFIX ex: http://example/ PREFIX wdt:
> > > http://www.wikidata.org/prop/direct/  PREFIX geof:
> > > http://www.opengis.net/def/geosparql/function/  SELECT * WHERE {
> > >  ?ParisWDID owl:sameAs ex:Paris .   ?BordeauxWDID owl:sameAs
> ex:Bordeaux
> > .
> > >  SERVICE https://query.wikidata.org/sparql {    ?ParisWDID wdt:P625
> > > ?ParisLoc .    ?BordeauxWDID wdt:P625 ?BordeauxLoc .
> > > BIND(geof:distance(?ParisLoc,?BordeauxLoc) AS ?dist)   } }
> > > 17:46:08 WARN  Fuseki          :: [8] RC = 500 :
> > > com.google.gson.stream.MalformedJsonException: Unterminated string
> > > at line
> > > 19922828 column 49 path $.results.bindings[855041].ParisLoc.value
> > > org.apache.jena.sparql.resultset.ResultSetException:
> > > com.google.gson.stream.MalformedJsonException: Unterminated string
> > > at line
> > > 19922828 column 49 path $.results.bindings[855041].ParisLoc.value
> > >       at
> > > org.apache.jena.riot.rowset.rw.rs_json.RowSetJSONStreaming.moveToNex
> > > t(
> > > RowSetJSONStreaming.java:214)
> > > ~[fuseki-server.jar:4.9.0]
> > >       at
> > > org.apache.jena.riot.rowset.rw.rs_json.RowSetJSONStreaming.moveToNex
> > > t(
> > > RowSetJSONStreaming.java:66)
> > > ~[fuseki-server.jar:4.9.0]
> > > ...
> > >       at
> > > org.apache.jena.riot.rowset.rw.rs_json.IteratorRsJSON.computeNextAct
> > > ua
> > > l(IteratorRsJSON.java:136)
> > > ~[fuseki-server.jar:4.9.0]
> > >       at
> > > org.apache.jena.riot.rowset.rw.rs_json.IteratorRsJSON.moveToNext(Ite
> > > ra
> > > torRsJSON.java:72)
> > > ~[fuseki-server.jar:4.9.0]
> > >       at
> > > org.apache.jena.atlas.iterator.IteratorSlotted.hasNext(IteratorSlott
> > > ed
> > > .java:63)
> > > ~[fuseki-server.jar:4.9.0]
> > >       at
> > > org.apache.jena.riot.rowset.rw.rs_json.RowSetJSONStreaming.computeNe
> > > xt
> > > Actual(RowSetJSONStreaming.java:225)
> > > ~[fuseki-server.jar:4.9.0]
> > >       at
> > > org.apache.jena.riot.rowset.rw.rs_json.RowSetJSONStreaming.moveToNex
> > > t(
> > > RowSetJSONStreaming.java:210)
> > > ~[fuseki-server.jar:4.9.0]
> > >       ... 112 more
> > > 17:46:08 INFO  Fuseki          :: [8] 500 Server Error (68,499 s)
> > >
> > > ____________
> > > I verified that when replacing the variables ?ParisWDID and
> > > ?BordeauxWDID with their values, the query is processed correctly.
> > > Thus
> > this query works:
> > >
> > > PREFIX wd: http://www.wikidata.org/entity/ PREFIX owl:
> > > http://www.w3.org/2002/07/owl# PREFIX ex: http://example/ PREFIX wdt:
> > > http://www.wikidata.org/prop/direct/
> > > PREFIX geof: http://www.opengis.net/def/geosparql/function/
> > > SELECT *
> > > WHERE {
> > > SERVICE https://query.wikidata.org/sparql {
> > >    wd:Q90 wdt:P625 ?ParisLoc .
> > >    wd:Q1479 wdt:P625 ?BordeauxLoc .
> > >    BIND(geof:distance(?ParisLoc,?BordeauxLoc) AS ?dist) } }
> > >
> > > ____________
> > > Thank you for any hint on what I did wrong
> > >
> > > Kind regards,
> > >
> > > Fano
> > >
> > >
> > >
> > >
> > > Orange Restricted
> > >
> > > ____________________________________________________________________
> > > __ ______________________________________
> > > Ce message et ses pieces jointes peuvent contenir des informations
> > > confidentielles ou privilegiees et ne doivent donc pas etre
> > > diffuses, exploites ou copies sans autorisation. Si vous avez recu
> > > ce message par erreur, veuillez le signaler a l'expediteur et le
> > > detruire ainsi que les pieces jointes. Les messages electroniques
> > > etant susceptibles d'alteration, Orange decline toute responsabilite
> > > si ce message a ete altere, deforme ou falsifie. Merci.
> > >
> > > This message and its attachments may contain confidential or
> > > privileged information that may be protected by law; they should not
> > > be distributed, used or copied without authorisation.
> > > If you have received this email in error, please notify the sender
> > > and delete this message and its attachments.
> > > As emails may be altered, Orange is not liable for messages that
> > > have been modified, changed or falsified.
> > > Thank you.
> > >
> >
> >
> > --
> >
> > *Thomas Francart* -* SPARNA*
> > Web de *données* | Architecture de l'*information* | Accès aux
> > *connaissances*
> > blog : blog.sparna.fr, site : sparna.fr, linkedin :
> > fr.linkedin.com/in/thomasfrancart
> > tel :  +33 (0)6.71.11.25.97, skype : francartthomas
> >
> > ______________________________________________________________________
> > ______________________________________
> > Ce message et ses pieces jointes peuvent contenir des informations
> > confidentielles ou privilegiees et ne doivent donc pas etre diffuses,
> > exploites ou copies sans autorisation. Si vous avez recu ce message
> > par erreur, veuillez le signaler a l'expediteur et le detruire ainsi
> > que les pieces jointes. Les messages electroniques etant susceptibles
> > d'alteration, Orange decline toute responsabilite si ce message a ete
> > altere, deforme ou falsifie. Merci.
> >
> > This message and its attachments may contain confidential or
> > privileged information that may be protected by law; they should not
> > be distributed, used or copied without authorisation.
> > If you have received this email in error, please notify the sender and
> > delete this message and its attachments.
> > As emails may be altered, Orange is not liable for messages that have
> > been modified, changed or falsified.
> > Thank you.
> >
>
>
> --
>
> *Thomas Francart* -* SPARNA*
> Web de *données* | Architecture de l'*information* | Accès aux
> *connaissances*
> blog : blog.sparna.fr, site : sparna.fr, linkedin :
> fr.linkedin.com/in/thomasfrancart
> tel :  +33 (0)6.71.11.25.97, skype : francartthomas
>
> ____________________________________________________________________________________________________________
> Ce message et ses pieces jointes peuvent contenir des informations
> confidentielles ou privilegiees et ne doivent donc
> pas etre diffuses, exploites ou copies sans autorisation. Si vous avez
> recu ce message par erreur, veuillez le signaler
> a l'expediteur et le detruire ainsi que les pieces jointes. Les messages
> electroniques etant susceptibles d'alteration,
> Orange decline toute responsabilite si ce message a ete altere, deforme ou
> falsifie. Merci.
>
> This message and its attachments may contain confidential or privileged
> information that may be protected by law;
> they should not be distributed, used or copied without authorisation.
> If you have received this email in error, please notify the sender and
> delete this message and its attachments.
> As emails may be altered, Orange is not liable for messages that have been
> modified, changed or falsified.
> Thank you.
>
-- 

*Thomas Francart* -* SPARNA*
Web de *données* | Architecture de l'*information* | Accès aux
*connaissances*
blog : blog.sparna.fr, site : sparna.fr, linkedin :
fr.linkedin.com/in/thomasfrancart
tel :  +33 (0)6.71.11.25.97, skype : francartthomas

Reply via email to