- From: Jeen Broekstra <jeen@aduna.biz>
- Date: Wed, 05 Jan 2005 10:21:36 +0100
- To: "Peter F. Patel-Schneider" <pfps@research.bell-labs.com>
- Cc: jos.deroo@agfa.com, www-rdf-logic@w3.org
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