Re: RDF as a syntax for OWL (was Re: same-syntax extensions to RDF)

Peter F. Patel-Schneider wrote:

> I am trying to determine just what is being demonstrated here.
> 
> Are you saying that you find it easy to build a complete parser
> (i.e., translator) for OWL in RDF/XML?  Are you saying that you
> find it easy to build an incomplete parser for OWL in RDF/XML?  Are
> you saying that you find it easy to build a species validator for
> OWL in RDF/XML?

I am somewhat hesitant to enter into this debate as I personally have
not as much experience with handling OWL data as you and Bijan 
probably have, but the one thing that haunts me in this is that you 
both seem to insist on *parsing* OWL in RDF/XML. And I can't help but 
wonder if abandoning this approach for validation in favor of 
*querying* (or using rules, for all I care) for 'well-formedness' 
would make everything a bit easier.

Perhaps I don't understand the parameters of the task at hand too
well, but I also have the feeling that perhaps you are not applying
the right tools to the job. Your quoted figures for an OWL parser from 
RDF/XML seem to assume a DOM structure but no RDF toolkit, i.e. you 
are directly trying to construct OWL from the XML syntax (you mention 
a 'nice internal data structure' but a graph data structure is not the 
same as an RDF toolkit).

My hunch is that actually _using_ the triples through an RDF API/query 
language instead of trying to bypass it will make life easier (and no, 
I'm not claiming that it is trivial or very easy, I merely have the 
impression that it is not as fiendishly difficult as you make it out 
to be).

To take Bijan's example of checking that a class expression such as:

     <owl:Restriction>
         <owl:onProperty rdf:resource="P"/>
         <owl:someValuesFrom rdf:resource="C"/>
     </owl:restriction>

is 'well-formed', i.e. is exactly formulated as such and has no extra
or missing triples, is simply a matter of doing some queries.

construct distinct *
from {R} rdf:type {owl:Restriction};
          owl:onProperty {Prop};
          owl:someValuesFrom {Val}

retrieves a subgraph that you can check (using any RDF toolkit's
utility methods) quite easily for the existence/omission of triples.

Granted, many query languages in the current set of RDF tools perhaps
still miss the expressiveness to make this as painless as it might be 
(I'm thinking of explicit support for containers and collections, 
here, which many tools still miss, and aggregation functions such as 
count(), min(), etc.), but I still have the feeling this would be a 
good approach.

If you have experience to the contrary, it would be interesting to 
learn at what point you found the RDF toolkit/API/query language that 
you worked with lacking.

Jeen
-- 
Jeen Broekstra          Aduna BV
Knowledge Engineer      Julianaplein 14b, 3817 CS Amersfoort
http://aduna.biz        The Netherlands
tel. +31(0)33 46599877  fax. +31(0)33 46599877

Received on Wednesday, 5 January 2005 09:20:58 UTC