- From: Frank van Harmelen <Frank.van.Harmelen@cs.vu.nl>
- Date: Sat, 23 Mar 2002 00:43:05 +0100
- To: WebOnt WG <www-webont-wg@w3.org>
[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