Re: Test cases: source of a triple

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