- From: Olaf Hartig <olaf.hartig@liu.se>
- Date: Fri, 22 Jan 2021 14:48:54 +0100
- To: public-rdf-star@w3.org
On fredag 22 januari 2021 kl. 14:19:43 CET Pierre-Antoine Champin wrote:
> On 22/01/2021 12:59, thomas lörtsch wrote:
> >> On 21. Jan 2021, at 16:43, Pierre-Antoine Champin
> >> <pierre-antoine.champin@ercim.eu> wrote:
> >>
> >> +1 to what Olaf wrote below.
> >>
> >> As an example, I used Jos' implementation of RDF* in EYE, and William Van
Woensel super-nice N3 editor, to illustrate this with a small example:
> >> http://ppr.cs.dal.ca:3002/n3/editor/s/j7yBphsy
> >>
> >> In this example, I have two predicates that link files to triples:
> >>
> >> * :contains keeps referential opacity (nothing to do)
> >>
> >> * :entailsForMe has some form of referential transparency (implemented
> >> through N3 rules: any triple with the same meaning as one contained in
> >> the file is also entailed for me by that file)>>
> >> By running it in EYE (click "execute"), you can see that the conclusions
contain:
> >> :report :contains <<:superman :can :fly>>.
> >> :report :entailsForMe <<:superman :can :fly>>.
> >> :report :entailsForMe <<:clark :can :fly>>.
> >>
> >> but NOT
> >>
> >> :report :contains <<:clark :can :fly>>.
> >
> > Paraphrasing James’ question to Olaf: how would you do that in SPARQL?
>
> AFAIK, you can not write recursive queries in SPARQL, which makes it a
> limited rule langue compared to N3. But a simplified version of my N3
> example would be
>
> CONSTRUCT {
> ?file :entailsForMe <<?s2 ?p2 ?o2>>.
> } WHERE {
> ?file :contains <<?s ?p ?o>>.
> ?s owl:sameAs ?s2.
> ?p owl:sameAs ?p2.
> ?o owl:sameAs ?o2.
> }
I assume you wanted to write the following query instead, right?
CONSTRUCT {
?file :entailsForMe <<?s2 ?p2 ?o2>>.
} WHERE {
?file :entailsForMe <<?s ?p ?o>>.
?s owl:sameAs ?s2.
?p owl:sameAs ?p2.
?o owl:sameAs ?o2.
}
Olaf
Received on Friday, 22 January 2021 13:49:11 UTC