- 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