Re: Is a non-RDF triples syntax out of charter?

Jonathan Borden wrote:
> Jeff Heflin wrote:
> >
> > ... Furthermore, there is certainly nothing in the charter that
> > says the ontology language's syntax must be formed from RDF triples.
> What is wrong with? (assume daml:collection, and forget about the RDF
> expansion into daml:List. etc.)
> <Class rdf:ID="foo">
>         <oneOf>
>                 <Thing rdf:resource="#A"/>
>                 <Thing rdf:resource="#B"/>
>                 <Thing rdf:resource="#C"/>
>         </oneOf>
> </Class>
> This really isn't that bad XML.

Your right, it isn't bad XML. In fact it is probably how I would suggest
such a thing be written in XML. Unfortunately, it's not RDF. A property
can only have a single subelement (the value of the property), unless
you use "parseType=".  Thus, the three "Thing" subelements of the
"oneOf" element are broken. That is, you can't assume daml:collection,
it must be stated explicitly. This is a syntactic wort. Common sense
tells you you shouldn't need it, but you can't write this in RDF without
it (and when you use it, you're not really writing RDF).

> An advantage of RDF's XML syntax is that it gives us nested class
> definitions for free e.g.
> <Class rdf:ID="bar">
>         <intersectionOf>
>                     <Class>
>                             <Restriction>
>                                     <onProperty rdf:resource="#a">
>                                     <toClass rdf:resource="#foo">
>                             </Restriction>
>                     </Class>
>             ...
>         </intersectionOf>
> </Class>

Once again, this is fine XML, although maybe a little excessive (one
might argue whether you need the Class subelement of intersectionOf).
However, RDF won't allow this syntax. The problem is RDF syntax must be
striped (meaning you alternate Class/Property/Class/Property/etc.).
Assuming you follow RDF naming conventions of initial caps for classes
and initial lower case for properties, then you have a Restriction class
as the immediate child of the Class class. This is a no-no in RDF
because it violates the striping rule. To make this work, you would have
to add a "hasRestriction" property between Class and Restriction. (Note
that DAML+OIL took the route of not requiring the second Class element,
this makes it more compact, but new users are often confused by thinking
of a Restriction as a Class).

> My questions are:
> What do I get by using another XML syntax? (what do I _actually get_)
> What does it cost me?
> I need concrete answers to these questions.

By using another XML syntax you get:

1) more freedom in the design of your syntax. Thus you can make it more
intuitive and ease the learning barrier for users

2) your syntax can more easily rule out things that shouln't be allowed.
For example, a daml:Restriction shouldn't mix "toClass" with "hasClass"
or "hasValue."

3) the semantics of the language is easier to specify, because it
doesn't have to represent all of the meta information included by the

What does it cost?

1) existing RDFS agents will not be able to understand your WebOnt
ontologies (they can understand small portions of DAML+OIL ontologies.)

2) people may need to convert existing RDF Schemas in order to use

Honestly, that's all I can think of. Maybe someone else can suggest

> In the absense of an  actual concrete syntax I can't judge if the benefits
> would be worth the cost, regardless of what the charter allows.

I agree that it hard to see these things without a concrete syntax. For
an example of concrete syntax that uses RDF-triples, see DAML+OIL[1].
That's about as good as it will get. Although I haven't suggested a
complete syntax for a non-RDF approach yet, I provide some examples of
what it could look like in my first message on this subject[2].




Received on Friday, 29 March 2002 11:25:28 UTC