UPDATE: examples of layering

		Commentary on the Various Layering Possibilities

Here are some comments on the various layering possibilities.


A) Here is a bit of syntax showing some potential differences between RDF
syntax for OWL and an XML syntax for OWL.  I will use a fairly simple
defined class. 

A1/ RDF Syntax (roughly DAML+OIL syntax):

<rdfs:Class rdf:ID="gop">
  <owl:sameClassAs>
    <owl:intersectionOf>
      <owl:List>
        <owl:first rdf:resource="Person" />
        <owl:rest>
          <owl:List>
	    <owl:first>
	      <owl:Restriction owl:onProperty="child" owl:minCardinality="1"/>
	        <owl:List>	    
		  <owl:Restriction owl:onProperty="child">
		    <owl:toClass>
		      <owl:Restriction owl:onProperty="child">
		        <owl:toClass>
			  <owl:unionOf>
			    <owl:List>
			      <owl:first rdf:resource="Doctor" />
			      <owl:rest>
			        <owl:List>
				  <owl:first rdf:resource="Laywer" />
				  <owl:rest rdf:resource="owl:nil" />
			        </owl:List>
			      </owl:rest
			    </owl:List>
			  </owl:unionOf>
		        </owl:toClass>
		      </owl:Restriction>
		    </owl:toClass>
		  </owl:Restriction>
	        </owl:List>
	      </owl:Restriction>
	    </owl:first>
	    <owl:rest rdf:resource="owl:nil" />
          </owl:List>
        </owl:rest>
      </owl:List>
    </owl:intersectionOf>
  </owl:sameClassAs>
</rdfs:Class>

Not only is this ugly, it is very fragile.

A2/ One possible XML Syntax:

<owl:definedClass owl:name="gop">
  <owl:class owl:name="Person">
  <owl:minCardinality owl:onProperty="child" owl:cardinality="1"/>
  <owl:toClass owl:property="child">
    <owl:toClass owl:property="child">
      <owl:intersection>
        <owl:class owl:name="Doctor">
        <owl:class owl:name="Lawyer">
      </owl:intersection>
    </owl:toClass>
  </owl:toClass>
</owl:defineClass>


This is one of the reasons that I am against using RDF syntax for OWL.


B) Now how do the various proposals work on this example?

B2/ In a syntactic and semantic extension, the syntax could be like A2/
    above.   The OWL class "gop" would also be an RDFS class, but the
    various restrictions would *not* be RDFS classes.  In fact, the various
    restrictions above would not be objects in the domain at all.  

B3/ In the same-syntax with differing semantics, the syntax would be like
    A1/ above.  The class "gop" would (probably) be an RDFS class.
    However, the various restrictions and other constructs would *not* be
    RDFS classes.  Similarly, owl:sameClassAs would not be a property.  In
    fact, A1/ would probably generate no triples, even though it looks like
    RDF.

B4/ In a syntactic extension with differing semantics, the syntax could be
    like A2.  The difference from B2/ is that it would be possible that the
    OWL class "gop" would *not* be an RDFS class.

Note:  It actually is *possible* to make a semantic extension (i.e., option
       B2) where "gop" is not an RDFS class.  In my mind this is cheating,
       as it would ignore RDFS classes in favor of some other mechanism for
       creating classes.
 

Peter F. Patel-Schneider
Bell Labs Research

Received on Friday, 15 February 2002 09:57:34 UTC