- From: Jeff Heflin <heflin@cse.lehigh.edu>
- Date: Wed, 29 May 2002 16:04:57 -0400
- To: "Peter F. Patel-Schneider" <pfps@research.bell-labs.com>
- CC: www-webont-wg@w3.org
Peter, Thanks for putting this together. This really helps us get a feel for what OWL is beginning to look like. Because it is easier to focus on concrete examples, I've commented on the schema-example.text file. Please see my comments below (prefaced with a "J:"): <!-- Examples of OWL XML Syntax --> <owl:ontology xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns" xmlns:owl="http://www.owl.org/owl"> J: I'd like to see an example of include here, and the use of a QName to reference a concept from another ontology somewhere. <!-- Syntax Comments Why --> <owl:EquivalentClass owl:name="Student"> <!-- Good --> J: Is this syntax supposed to be valid RDF? If so, why do you use owl:name="Student" instead of rdf:ID? <owl:super owl:resource="Person" /> <!-- OK - resource questionable --> <owl:super owl:resource="Thing" /> <!-- OK - resource questionable --> <owl:restriction> <!-- Unnecessary STRIPING,SCHEMA --> <owl:IndividualRestriction owl:property="child" owl:atmost="1"> <!-- Good --> <owl:range> <!-- range="Person" ? --> <owl:Class owl:ID="Person" /> <!-- "" SCHEMA --> </owl:range> <!-- "" --> </owl:IndividualRestriction> <!-- OK --> </owl:restriction> <!-- Unnecessary STRIPING,SCHEMA --> J: Is the above restriction a qualified number restriction? If so, your latest feature synopsis says these were supposed to be removed due to a WG decision. <owl:description> <!-- Unnecessary STRIPING,SCHEMA --> <owl:IndividualRestriction owl:property="advisor" owl:atleast="1"> <!-- Good --> <owl:range> <!-- range="Person" ? --> <owl:Class owl:ID="Person" /> <!-- "" SCHEMA --> </owl:range> <!-- "" --> <owl:required> <!-- <required class="Person" /> ? --> <owl:Class owl:ID="Person" /> <!-- "" SCHEMA --> </owl:required> <!-- "" --> J: Why both range and required above? Doesn't atLeast=1 and range=Person mean required=Person? </owl:IndividualRestriction> <!-- OK --> </owl:description> <!-- Unnecessary STRIPING,SCHEMA --> J: What's the difference between wrapping an IndividualRestriction in a description or restriction? Also see my comment in reply to the abstract syntax on whether you need both restriction and description here. <owl:description> <!-- Unnecessary STRIPING,SCHEMA --> <owl:DataRestriction owl:property="studentID" owl:exactly="1"> <!-- Good --> <owl:range> <!-- range="xsd:integer" ? --> <owl:DataType owl:ID="xsd:integer" /> <!-- "" SCHEMA --> </owl:range> <!-- "" --> </owl:DataRestriction> <!-- OK --> </owl:description> <!-- Unnecessary STRIPING,SCHEMA --> <owl:description> <!-- Unnecessary STRIPING,SCHEMA --> <owl:Or> <!-- Good --> <owl:class owl:resource="Foo" /> <!-- OK - resource questionable --> <owl:description> <!-- Unnecessary STRIPING,SCHEMA --> <owl:IndividualRestriction owl:property="year" owl:exactly="1"> <!-- Good --> <owl:range> <!-- OK --> <owl:OneOf> <!-- Good --> <owl:member owl:resource="Freshman" /> <!-- OK - resource questionable --> <owl:member owl:resource="Sophomore" /> <!-- OK - resource questionable --> <owl:member owl:resource="Junior" /> <!-- OK - resource questionable --> <owl:member owl:resource="Senior" /> <!-- OK - resource questionable --> </owl:OneOf> <!-- OK --> </owl:range> <!-- OK --> </owl:IndividualRestriction> <!-- OK --> </owl:description> <!-- Unnecessary STRIPING,SCHEMA --> <owl:description> <!-- Unnecessary STRIPING,SCHEMA --> <owl:DataRestriction owl:property="grade" owl:exactly="1"> <!-- Good --> <owl:range> <!-- OK --> <owl:OneOf> <!-- OK --> <owl:member xsi:type="xsd:integer">1</owl:member> <owl:member xsi:type="xsd:integer">2</owl:member> <owl:member xsi:type="xsd:integer">3</owl:member> <owl:member xsi:type="xsd:integer">4</owl:member> </owl:OneOf> <!-- OK --> </owl:range> <!-- OK --> </owl:DataRestriction> <!-- OK --> </owl:description> <!-- Unnecessary STRIPING,SCHEMA --> </owl:Or> <!-- OK --> </owl:description> <!-- Unnecessary STRIPING,SCHEMA --> </owl:EquivalentClass> <!-- OK --> <owl:IndividualProperty owl:name="foo" owl:inverseOf="oof" owl:functional="true"> <owl:super owl:resource="bar" /> <owl:range> <owl:Class owl:ID="Person" /> </owl:range> <owl:domain> <owl:And> J: I assume owl:And takes the place of intersectionOf from the abstract syntax. I prefer "And." What about using it in the abstract syntax as well? <owl:class owl:resource="Person" /> <owl:class owl:resource="Employee" /> </owl:And> </owl:domain> </owl:IndividualProperty> <owl:IndividualProperty owl:name="trans" owl:inverseOf="snrat" owl:transitive="true"> J: Why name and not ID, above? <owl:super owl:resource="p2" /> <owl:super owl:resource="p3" /> </owl:IndividualProperty> <owl:EnumeratedClass owl:name="CSProfessors"> <!-- Good --> J: Why name and not ID, above? <owl:member owl:resource="ProfessorFoo" /> <!-- OK - resource questionable --> <owl:member owl:resource="ProfessorFoo" /> <!-- OK - resource questionable --> </owl:EnumeratedClass> <!-- OK --> <!-- RDF-compatible XML-Schema compatible --> <owl:Individual owl:name="John"> <!-- Good --> J: Why name and not ID? <owl:type owl:resource="Person" /> <!-- OK - resource questionable --> <owl:property> <!-- Unnecessary STRIPING --> <owl:IndividualPropertyValue owl:property="child"> <!-- Good --> <owl:individual owl:resource="Susan" /> <!-- individual="Susan" ? --> </owl:IndividualPropertyValue> <!-- OK --> </owl:property> <!-- Unnecessary STRIPING --> <owl:property> <!-- Unnecessary STRIPING --> <owl:IndividualPropertyValue owl:property="child"> <!-- Good --> <owl:individual> <!-- Unnecessary STRIPING --> <owl:Individual> <!-- OK --> <owl:type owl:resource="Person" /> <!-- OK - resource questionable --> </owl:Individual> <!-- OK --> </owl:individual> <!-- Unnecessary STRIPING --> </owl:IndividualPropertyValue> <!-- OK --> </owl:property> <!-- Unnecessary STRIPING --> </owl:Individual> <!-- OK --> J: Wow, the above individual syntax sure is ugly. I like either of the ones below a lot better, although I think going with the last one (RDF compatible) is probably best for this effort. <!-- XML-Schema compatible, but not this schema, and not RDF-compatible <owl:Individual owl:name="John" owl:type="Person"> <owl:property owl:property="child" owl:individual="Susan" /> </owl:Individual> --> <!-- regular RDF, not XML-Schema compatible <Person owl:ID="John"> <child> <Person owl:ID="Susan" /> </owl:child> </owl:Person> --> </owl:ontology> J: One final thing, as your comments suggest, the striping really does seem to get in the way of clean syntax. Jeff "Peter F. Patel-Schneider" wrote: > > I put together an XML Schema that closely corresponds to the abstract > syntax in the OWL Feature Specification document. This is my first > significant XML Schema, so there may be better ways of doing some of the > things there. Also enclosed is a simple, nonsensical document using the > Schema. > > Comments are welcome. > > peter > > ------------------------------------------------------------------------ > Name: schema.xsd > schema.xsd Type: Plain Text (Text/Plain) > Encoding: 7bit > > Name: schema-example.text > schema-example.text Type: Plain Text (Text/Plain) > Encoding: 7bit
Received on Wednesday, 29 May 2002 16:05:35 UTC