Re: Back to basics.

Salutations to all of you,

Hello Gerard - you said :

>I'm trying to put together a RDF "core" system (read, write, store,
>manipulate... just what we all would like to do with it at the most
>abstract level...) and to start I'm looking for a parser.
>I've tried some of them, including an (self-) modified version of SiRPAC
>and I get systematically different results.
>There seem to be trouble with the Bag support among them.

It seems that we are more or less at the same point. No expert of the 
list answered to your "Back to basics" message at this time. Although 
I am very new to RDF, I'll will try, but keep in mind that I am a 
newbye. I hope that someone will correct me if I am wrong.

My first remark : it is not suprising that we have different results, 
as they are just printouts of programs. The question is : are they 
correct results or not - did the different parsers correctly parse 
the graph ? They all could have, just having different printouts. The 
job of the parser is to allow to build a data stucture that a program 
and algorithms will use to do something useful.

At this time, I personaly have only tried RDF Filter, and I don't 
know for the others, but the way it is implemented seems to be very 
powerful : it's "event driven", allowing you to construct the data 
structure (the graph) in the way you want to.

SiRPAC (1.14 and Online) is right in the way it deals with the bag, 
the referent used being "aboutEach", and not "About" : Ora Lassila is 
the (famous !) creator of each page of the bag, not the creator of 
the bag.

I looked at RDF Filter source code, about this problem. It appears 
that it would be possible to  implement the desired behaviour : the 
RDFHandler (the object which has to take appropriate action when 
receiving an "rdf event"), gets an information called "subjectType" 
along with the triple. This information, that is not used in the 
printouts of the TestRDFFilter, is precisly "aboutEach" in our case. 
If we keep everything in memory when parsing the RDF, it should not 
be difficult to get the correct behaviour.

The other difference between RDF Filter and SiRPAC is only about 
resolving or not the relative URI of the bag resource to absolute 
form. The bag resource is identified by the ID "pages", and it is 
included in the document. Its URI, relative to the URL of the 
containing document, is "#pages" - the result of RDF Filter. I don't 
agree with the "pages" (without #) of your modified SiRPAC. SiRPAC 
resolves this relative URL, and therefore gives "url of the 
document#pages". Having the RDFHandler resolve the relative URL to 
absolute is easy (in java : new URL(docURL, relativURLString)).

About the enumeration, you have a question about syntax. I don't know 
the answer, but syntax is not really the question here - what is 
important is to know what the property means ! Nevertheless, as it is 
a property, and as such a resource, it is identified by a URI, and I 
would vote for "...-ns#_1" (something that is defined within the 
document at "http://...-ns").

I hope this helps. Feel free to contact me, I would be happy if we 
can help each other, sharing experiences, as I think that we are more 
or less at the same level. The level of discussion on the list, at 
least since I subscribed, seems to be higher than our current 
preoccupations.

Best regards,

>--- example2.rdf ------
><?xml version="1.0"?>
><RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>     xmlns:DC="http://purl.org/metadata/dublin_core/">
> <Bag ID="pages">
>   <li resource="http://foo.org/foo.html" />
>   <li resource="http://bar.org/bar.html" />
> </Bag>
> <Description aboutEach="#pages">
>   <DC:Creator>Ora Lassila</DC:Creator>
> </Description>
></RDF>
>
>---- SiRPAC Download Version 1.14 ----
>triple("http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
>"file:D:\Program\java\RDF\SiRPAC-1.14\lassila-example-2.rdf.txt#pages",
>"http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag").
>triple("http://www.w3.org/1999/02/22-rdf-syntax-ns_1",
>"file:D:\Program\java\RDF\SiRPAC-1.14\lassila-example-2.rdf.txt#pages",
>"http://foo.org/foo.html").
>triple("http://www.w3.org/1999/02/22-rdf-syntax-ns_2",
>"file:D:\Program\java\RDF\SiRPAC-1.14\lassila-example-2.rdf.txt#pages",
>"http://bar.org/bar.html").
>triple("http://purl.org/metadata/dublin_core/Creator","http://foo.org 
>/foo.html","Ora
>Lassila").
>triple("http://purl.org/metadata/dublin_core/Creator","http://bar.org 
>/bar.html","Ora
>Lassila").
>
>----- Modified Version of SiRPAC ---------
>triple("http://www.w3.org/1999/02/22-rdf-syntax-ns#type","pages",
>"http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag").
>triple("http://www.w3.org/1999/02/22-rdf-syntax-ns_1","pages","http:/ 
>/foo.org/foo.html").
>
>triple("http://www.w3.org/1999/02/22-rdf-syntax-ns_2","pages","http:/ 
>/bar.org/bar.html").
>
>triple("http://purl.org/metadata/dublin_core/Creator","genid1","Ora
>Lassila").
>
>----- RDF FILTER -----
>{http://www.w3.org/1999/02/22-rdf-syntax-ns#type, #pages,
>http://www.w3.org/1999
>/02/22-rdf-syntax-ns#Bag}
>{http://www.w3.org/1999/02/22-rdf-syntax-ns#_1, #pages,
>http://foo.org/foo.html}
>{http://www.w3.org/1999/02/22-rdf-syntax-ns#_2, #pages,
>http://bar.org/bar.html}
>{http://purl.org/metadata/dublin_core/Creator, #pages, "Ora Lassila"
>(lang=null)}
>
>------ SiRPAC OnLine  -------
>triple('http://www.w3.org/1999/02/22-rdf-syntax-ns#type','online#pages',
>
>       'http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag').
>triple('http://www.w3.org/1999/02/22-rdf-syntax-ns#_1','online#pages',
>       'http://foo.org/foo.html').
>triple('http://www.w3.org/1999/02/22-rdf-syntax-ns#_2','online#pages',
>       'http://bar.org/bar.html').
>triple('http://purl.org/metadata/dublin_core/Creator','http://foo.org 
>/foo.html',
>
>       'Ora Lassila').
>triple('http://purl.org/metadata/dublin_core/Creator','http://bar.org 
>/bar.html',
>
>       'Ora Lassila').
>
>----- RDF API: ParseAndSerialize -----
>Exception in thread "main" aboutEach and aboutEachPrefix are not
>supported in the stream mode
>
>---------- end copy&paste ------

Francois-Paul Servant
33 1 45 54 46 72 ; 170 rue de Lourmel 75015 PARIS
mailto:hypersol@micronet.fr
http://www.hypersolutions.fr

Received on Thursday, 18 May 2000 18:29:25 UTC