Test cases: source of a triple

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

== Test case 1 : union case:

  a.rdf:
  :r :p :v .

  b.rdf:
  :r :p :v .


This has one result:
    SELECT * WHERE { ?x ?y ?z }

But this has two if source information is retained, and one if it is not:
    SELECT * WHERE { ?x ?y ?z ?src }

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?

(Syntax is quads-like [*].)

== Test case 2: inference

Data:
  a1.rdf:
  :x rdf:type :C1 .
  :C1 rdfs:subClassOf :C2 .

Query:
    SELECT * WHERE { ?x rdf:type :C2 }

?x = :x
?src = <a.rdf> maybe.

Now suppose:
  a2.rdf:
  :x rdf:type :C1 .
  :x rdf:type :C2 .
  :C1 rdfs:subClassOf :C2 .

Now ?src = <a.rdf>

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:
  :x rdf:type :C1 .

  b.rdf:
  :C1 rdfs:subClassOf :C2 .

With a.rdf + b.rdf: get ?x = :x, but what is ?src

And if:

  a.rdf:
  :x rdf:type :C1 .
  :C1 rdfs:subClassOf :C2 .

  b.rdf:
  :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.

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.

Received on Thursday, 26 August 2004 08:48:04 UTC