- From: Olaf Hartig <olaf.hartig@liu.se>
- Date: Thu, 15 Aug 2024 08:41:53 +0000
- To: "tl@rat.io" <tl@rat.io>, "public-rdf-star-wg@w3.org" <public-rdf-star-wg@w3.org>
Hi Thomas,
I just want to respond to your analysis of querying in RDF* (i.e., my
earlier work prior to the RDF-star CG), because your claims about it
are wrong.
On Thu, 2024-08-08 at 18:02 +0200, Thomas Lörtsch wrote:
> [...]
>
> QUERYING IN RDF*
> ================
>
> In a paper on RDF* and SPARQL* [0] the following example data is
> given:
>
> :bob foaf:name "Bob" .
> <<:bob foaf:age 23>> dct:creator <http://example.com/crawlers#c1> ;
> dct:source <http://example.net/listing.html> .
>
> Note that this is RDF*, not RDF-star, and the statement ':bob
> foaf:age 23' is considered to be true in the graph, i.e. stated.
>
> Then the following query is presented:
>
> SELECT ?x ?age ?src
> WHERE { <<?x foaf:age ?age>> dct:source ?src . }
>
> Since the ?src is explicitly asked for, the query seems sensible. But
> what if one doesn’t care for the source? What if one doesn’t care if
> a source annotation is provided at all? What if one isn’t even aware
> of the possibility that an annotation might have be added? It seems
> that a query for people's age that isn’t aware of that peculiarity
> will not return Bob’s age.
> IIUC the following query
>
> SELECT ?x ?age
> WHERE { ?x foaf:age ?age . }
>
> will not return any results, although Bob’s age is considered to be
> "in the graph".
Wrong! By the evaluation semantics for SPARQL* as defined in the paper
(see Definition 3 in [0]), the result of this query over the example
data above consists of the solution mapping
m = { ?x -> :bob, ?age -> 23 }.
Notice that the formula in Definition 3 says η[B] ⊆ T+(G*), where
T+(G*) denotes the set of all RDF* triples in RDF* graph G*, including
those that are (recursively) embedded in other RDF* triples of G* (as
defined in Section 2.1 of the paper).
> Also the query over embedded triples wouldn’t find any people’s age
> that is not annotated, i.e. that is stated in a plain triple.
Of course not. The graph pattern of that query is explicitly asking for
embedded triples that have the dct:source annotation. The query to
always retrieve the age and optionally the source (if there is one)
needs to be written as follows (assuming the SPARQL* semantics as
defined in the paper!).
SELECT ?x ?age ?src
WHERE {
?x foaf:age ?age .
OPTIONAL {
<<?x foaf:age ?age>> dct:source ?src .
}
}
> [...]
>
> [0] Olaf Hartig: Foundations of RDF* and SPARQL* - An Alternative
> Approach to Statement-Level Metadata in RDF, June 2017,
> http://olafhartig.de/files/Hartig_AMW2017_RDFStar.pdf
> [1]
> https://lists.w3.org/Archives/Public/public-rdf-star-wg/2024Aug/0032.html
Received on Thursday, 15 August 2024 08:42:00 UTC