- From: Dave Beckett <dave.beckett@bristol.ac.uk>
- Date: Thu, 26 Aug 2004 10:40:08 +0100
- To: "Seaborne, Andy" <andy.seaborne@hp.com>
- Cc: RDF Data Access Working Group <public-rdf-dawg@w3.org>
On Thu, 26 Aug 2004 09:47:46 +0100, "Seaborne, Andy" <andy.seaborne@hp.com> wrote:
> These are example of things that would like to see clearly decided: its not
> that here are no answers or approaches here but I think these are some of
> the decision points.
>
> Andy
Sorry, but I find this presentation rather confusing.
> == Test case 1 : union case:
>
> a.rdf:
> :r :p :v .
There are so many ':'s I didn't even notice a.rdf:
This is a document a.rdf with one triple
:r :p :v .
>
> b.rdf:
> :r :p :v .
A document b.rdf with one triple
:r :p :v .
>
> This has one result:
> SELECT * WHERE { ?x ?y ?z }
SELECT *
WHERE
( ?x ?y ?z )
result is
?x ?y ?z
:r :p :v
>
> But this has two if source information is retained, and one if it is not:
> SELECT * WHERE { ?x ?y ?z ?src }
Please can we stick to the original BRQL syntax which is much clearer
about what is a triple:
SELECT *
WHERE
SOURCE ?src (?x ?y ?z)
Here you can see where the triples are, and where the source
information is (proposed). RDF is not quads.
> I find that strange. It is explicable but, in RDF terms, there is only one
> statement. There are two statings. Are we querying statements or statings?
The answers are not given.
You are ask if the result is either:
1) If source information is retained
?src ?x ?y ?z
a.rdf :r :p :v
b.rdf :r :p :v
2) If it is not retained.
?src ?x ?y ?z
NULL :r :p :v
(I'm not defining what NULL is)
3) or maybe as an alternative to 2)
?x ?y ?z
:r :p :v
but that might surprise users that there is not even an unbound ?src.
This is related to the points I brought up in my email. There is a
cost to providing this feature in terms of interoperability - queries
with source information can return different results if source
information is not supported or not available.
> (Syntax is quads-like [*].)
Please don't do that.
> == Test case 2: inference
>
> Data:
> a1.rdf:
^- uri
and triples:
> :x rdf:type :C1 .
> :C1 rdfs:subClassOf :C2 .
>
> Query:
> SELECT * WHERE { ?x rdf:type :C2 }
SELECT *
WHERE
(?x rdf:type :C2 )
>
> ?x = :x
> ?src = <a.rdf> maybe.
There is no ?src in this query.
>
> Now suppose:
> a2.rdf:
^-uri
and triples:
> :x rdf:type :C1 .
> :x rdf:type :C2 .
> :C1 rdfs:subClassOf :C2 .
>
> Now ?src = <a.rdf>
Ditto.
> but a1.rdf and a2.rdf have the RDFS-same information.
> Should it be the same whether :x rdf:type :C2 .is explicit or inferred?
> (Forward rules systems where rules are run at ingestion time would not be
> able to differentiate).
>
> == Test case 3: Inference by multiple routes:
>
> Now if:
>
> a.rdf:
1 triple:
> :x rdf:type :C1 .
> b.rdf:
1 triple:
> :C1 rdfs:subClassOf :C2 .
>
> With a.rdf + b.rdf: get ?x = :x, but what is ?src
You do not give a query. What is the '+' operation on URIs ?
>
> And if:
>
> a.rdf:
2 triples:
> :x rdf:type :C1 .
> :C1 rdfs:subClassOf :C2 .
>
> b.rdf:
1 triple:
> :C1 rdfs:subClassOf :C2 .
>
> the RDF merge is the same but there are two ways to get the :x rdf:type :C2.
> and there is only one query solution.
RDF merge? I think this example is more about union query than
source and would be better in a different thread (no mention of ?src
here).
>
> Seems to be getting a step on the way to proofs here.
>
> Andy
>
> [*] The modified syntax does not cover SOURCE precisely because it is
> unclear if it applies to a triple or a graph pattern. This syntax is quads
> so is triple-based - its not very clear. Maty should have an explit
> "SRC(?x)" and a plain triple.
Thanks
Dave
Received on Thursday, 26 August 2004 09:41:32 UTC