Re: LANG: OWL non-xml syntax

[this begins as an answer to Jonathan's question,
  but later turns into an explanation on the pro's and con's of DL-style
  vs frame-style]

Jonathan Borden wrote:

> the production <description>
> 
> [[
> <description> ::= <classID>
>    | <slot>
>    | unionOf( <description> {,<description>} )
>    | intersectionOf( <description> {,<description>} )
>    | complementOf( <description> )
>    | oneOf( <individualID> {,<individualID>} )
>    | localRange( <propertyID> , <description-or-datatype> )
>    | required( <propertyID> , <description-or-datatype> )
>    | value( <propertyID> , <individualID> )
>    | value( <propertyID> , <dataValue> )
>    | minCardinality( <propertyID> , <integer> )
>   Require at least integer values for propertyID.
>    | maxCardinality( <propertyID> , <integer> )
>   Require at most integer values for propertyID.
>    | cardinality( <propertyID> , <integer> )
>   Require exactly integer values for propertyID.
> ]]
> 
> should this instead be something like <description-component> and then
> <description> ::= <description-component>*
> 
> i.e. a description is composed of zero or more (perhaps one or more) of the
> following...

No.
The idea is that a <description> is an implicit definition of a class.
E.g Cardinality(father,1) defines the "class of all things with one father"
(to re-use the example from the previous msg).
Such implicit definitions of classes can be recursively combined to create 
more complicated implicit definitions of classes (e.g using unionOf, 
intersectionOf, etc).
Such implicit definitions can be given a name using DefinedClass and 
PrimitiveClass.
(The analog with the DAML+OIL style as explained in my previous msg should be 
apparent).

It's important (and perhaps counterintuitive, or at least not immediately 
obvious) that any <description> is a description of a class:
e.g. localRange(father, person) is the class of all things all of whose 
fathers are persons, and
required(father, person) is the class of all things that have at least one 
father who is person.
Then stating that
   DefinedClass(person, cardinality(father,1),localRange(father,person))
amounts to stating that persons are exactly the intersection of these two 
classes, ie persons are the intersection of "all things with one father" and 
"all things all of whose fathers are persons".

All of this is DL-style modelling in its full expressive but hard-to-grasp 
glory. Do you see why the frame-style modelling is so much easier to grasp 
(but also much less expressive)? And why having only section 4 as OWL (ie 
having only DAML+OIL) would make the language very hard to grasp for many people?

Frank.
    ----

PS:
I'm not sure why you thought it should be different?
I'm guessing now, but the iteration you were looking for happens in the 
production DefinedClass and PrimitiveClass: a class is defined as one or more 
<description>'s.

Hope this helped.

Received on Friday, 22 March 2002 18:43:57 UTC