W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > October to December 2004

Re: Simple source tests

From: Alberto Reggiori <alberto@asemantics.com>
Date: Tue, 26 Oct 2004 16:28:40 +0200
Message-Id: <55063738-275B-11D9-9F6B-0011242E4018@asemantics.com>
Cc: RDF Data Access Working Group <public-rdf-dawg@w3.org>
To: Kendall Grant Clark <kendall@monkeyfist.com>


some more thoughts about SOURCE and how to inline more than one graph 
into the same URI source...

On Oct 19, 2004, at 4:49 PM, Kendall Clark wrote:

>
> On Tue, Oct 19, 2004 at 03:33:30PM +0100, Seaborne, Andy wrote:
>
>> A Named Container (of triples) is part of the overall collection and 
>> has a
>> a name.  The collection is all the triplesand also the way to view 
>> all the
>> triples.
>
> Uh... Hmm, still lost. Must just be me. I'll keep at it.
>
>> I don't think anyone has proposed a syntax for a single file 
>> containing
>> multiple graphs.
>
> TriX doesn't do this? From the DTD:
>
> <!ELEMENT TriX  (graph*)>
>
> Did you mean some other kind of syntax?

we got some other syntax

	http://lists.w3.org/Archives/Public/www-rdf-interest/2004Feb/0209.html

in other words, our software given a foo3.rdf data file like

<?xml version="1.0"?>
<rdf:RDF
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:foo="http://foo.com/foo/"
         xmlns:rdfstore="http://rdfstore.sourceforge.net/contexts/"
 >

<rdf:Description rdf:ID="graph1" foo:title="foo1" />
<rdf:Description rdf:ID="graph2" foo:title="foo2" />

<rdf:Description rdf:ID="foo" foo:foo1="title" 
rdfstore:context="#graph1" />
<rdf:Description rdf:ID="foo" foo:foo1="title" 
rdfstore:context="#graph2" />

</rdf:RDF>

it can run SPARQL queries like

PREFIX baz: <http://foo.com/foo/>
SELECT DISTINCT
         ?s ?p ?o
FROM
         <foo3.rdf>
WHERE
         SOURCE ?src (?s ?p ?o)
                     (?src baz:title ?kk)

and get results

?s = file:/foo3.rdf#foo
?p = http://foo.com/foo/foo1
?o = title

Matched: 1 rows

the SELECT DISTINCT is needed to remove duplicates as a quads model is 
being used - a rule to address the 'distinct' (bug) issue for the 
example about could be (i.e. to remove duplicates and show an 
RDF-merged view over triples):
	
	- make results implicitly DISTINCT if not ?src if being mentioned into 
the SELECT part
	- if not ?src info requested into SELECT just show the RDF-merge view 
of the quads (merge)

In fact the modified query

PREFIX baz: <http://foo.com/foo/>
SELECT
         ?src ?s ?p ?o
FROM
         <foo3.rdf>
WHERE
         SOURCE ?src (?s ?p ?o)
                     (?src baz:title ?kk)

gives

?p = http://foo.com/foo/foo1
?src = file:/foo3.rdf#graph1
?o = title
?s = file:/foo3.rdf#foo

?p = http://foo.com/foo/foo1
?src = file:/foo3.rdf#graph2
?o = title
?s = file:/foo3.rdf#foo

Matched: 2 rows

and the more general query

PREFIX baz: <http://foo.com/foo/>
SELECT
         ?src ?s ?p ?o
FROM
         <foo3.rdf>
WHERE
         SOURCE ?src (?s ?p ?o)

gives (note the empty/NULL ?src for the first two matches)

?src =
?s = file:/foo3.rdf#graph1
?o = foo1
?p = http://foo.com/foo/title

?src =
?s = file:/foo3.rdf#graph2
?o = foo2
?p = http://foo.com/foo/title

?src = file:/foo3.rdf#graph1
?s = file:/foo3.rdf#foo
?o = title
?p = http://foo.com/foo/foo1

?src = file:/foo3.rdf#graph2
?s = file:/foo3.rdf#foo
?o = title
?p = http://foo.com/foo/foo1

Matched: 4 rows

(the above queries can be directly tried at 
http://demo2.asemantics.com/rdfstore/rdql/ )

We also have a more generic rdfstore:contextnodeID which allows graphs 
to be bNodes as well - as far as I can see there might be an issue with 
bNodes, which might be accidentally shared between different graphs if 
expressed into the same physical document

	http://lists.w3.org/Archives/Public/www-archive/2004Oct/0010.html

but it could be easily be avoided if they are being checked while 
parsing/processing them - and be sure that the parser/engine croaks 
accordingly.

Another (non-standard) N-Triples alike syntax for expressing Comma 
Separated Values (CSV) multiple graphs into a single source URI is the 
so called Quads

	http://robustai.net/sailor/grammar/Quads.html

which we use extensively when returning N-Triples if quads are 
available instead.

I think CWM/N3 has formulae for similar tricks - but I can not speak 
about those. TriX too.

Anyway, this discussion might be not directly relevant to the CNC 
proposal and discussion - but it is good to bear in mind perhaps while 
designing the SOURCE details.

cheers

Alberto

-
Alberto Reggiori, Senior Partner, R&D @Semantics S.R.L.
alberto@asemantics.com  www.asemantics.com
Milan Office, milano@asemantics.com,   +39 0332 667092
Received on Tuesday, 26 October 2004 14:28:43 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:15:21 GMT