- From: Jeff Heflin <heflin@cse.lehigh.edu>
- Date: Thu, 02 Jan 2003 16:20:30 -0500
- To: WebOnt <www-webont-wg@w3.org>
Hello, Here is my review of the Guide. In general, I think this is a very good document and it goes a long way towards explaining how to use OWL. However, I do have a number of comments that I think can make it even better. Note, I reviewed the version dated Dec. 18, 2002. I've also included comments from my students, who I asked to review it as well. Since there are a number of comments here, I've tried to break them into major comments (which I consider the most important substantive stuff) and minor comments (which are mostly syntax errors or typos.). Major comments: ------------------ - The sections should be numbered. It will make it easier for people to reference parts of the document, particulary when commenting on it. - You need a section called "Using Ontologies to Describe Data" (perhaps between Complex Property Axioms and Usage Examples). This section should point out that once an ontology is developed, you will want to describe data with it. It can mostly point back to the defining individuals and properties of individuals sections, but should have additional material on how ordinary documents (those without an owl:Ontology) tag import ontologies. i.e.: <rdf:Description rdf:about=""> <owl:imports rdf:resource="someURI"> </rd:Description> - Introduction, para. 7: Suggested rewording for last three sentences: The owl:Ontology tag indicates that an OWL document is intended to be used as an ontology. However, the use of this tag does not mean that the document has to contain classes or property definitions. Furthermore, class and property definitions may appear in documents that do not have the owl:Ontology tag. - The Structure of Ontologies, para. 1, "New information cannot negate previous information." This is false. New information CAN negate previous information, it would just be contradictory. New information cannot retract previous information. - Ontology headers, para. 3, "... the owl:Ontology tag simply identifies a document as containing OWL syntax.": I disagree! In order to determine if a document contains OWL syntax, find out if it uses names from the OWL namespace. The owl:Ontology tag makes an assertion that the current document is an ontology. Now, this "ontology" may or may not have classes and properties, and may just consist of instances, but the author is stating that they think there is vocabulary worth reusing here. - Ontology headers, para. 7: owl:backCompatibleWith => owl:backwardCompatibleWIth - Ontology headers, para. 6-8: The various ontology versioning stuff would be better in a separate section. First, owl:DeprecatedClass and owl:DeprectaedProperty do not go in the header. Second, this is really advanced stuff that most people writing their first ontology won't need (if it's your first ontology, there shouldn't be a prior version!). I suggest you move this to a section titled "Ontology versioning" which would be between "Complex Classes" and "Usage Examples." You should be able to get some supporting text from Sect. 3.2 of the Requirements Document. I'd also be happy to contribute something if you need me to. - Ontology headers, para. 10, "Importing another ontology...": Add at end of paragraph "Note that the definition of a name can be distributed across many ontologies, some of which you may not agree with. With owl:imports you can select the ontologies whose definitions are appropriate for your context." - Simple Properties - Defining Properties, para. 3: Explain in words what a domain and range are. Point out that because the Web is an open world, these are not used to check data, but instead to infer things. For example, if I have W as the subject of a "made-from-grape" predicate but do not state that W is a Wine, this is not an error, but instead leads to the inference that W must be a Wine. It is only an "error" if this inference leads to a logical contradiction. Also mention that multiple domains or ranges mean the domain or the range is the intersection of all such classes. - hasValue, "... an individual will be a member of such a class whenever at least one of its property values is equal to the hasValue resource": This is confusing. First, it is not clear that "such a class" means the anonymous class in the restrciton and not the class that the restriction is applied to. It may be useful to add a clarification (perhaps at the beginning of Property Restrictions, since it applies to all) that says "A Restriction is used in combination with subClassOf or sameClassAs. When used with subClassOf it says that restriction provides a necessary but not sufficient condition but class membership. When used with sameClassAs, then it provides both necessary and sufficient conditions. - sameClassAs, samePropertyAs: It is essential that we point out that sameClassAs and samePropertyAs do not mean that two classes or properties are identical. It only means that they have the same members (or subject/object pairs). Nothing is said about any properties of the Class or Property itself. In order to say that the classes are identical, we would have to use sameInstanceAs or sameAs. Minor comments: ----------------- - Structure of Document, para 2: "Other notations ... in particular a UML version" => "Other notations ... in particular a (non-RDF) XML Presentation Syntax and a UML version." - Namespaces, para. 2, "The default namespace ... unprefixed elements and empty URI references refer to the current ontology": I don't believe that namespaces say anything about empty URI references. XML says they are relative to the current document. - Ontology headers, para. 2: Add that if a URN is used to identify an ontology some name resolution would be needed in order to locate and access the ontology. - Ontology headers, syntax example: This would be a good place to also include: <rdfs:Label>Wine Ontology</rdfs:Label> Since most ontologies will copy the patterns we use, we should get people in the habit of providing natural language titles for the ontologies. These will be useful in displaying human-readable ontology lists in both authoring tools and ontology catalogs. - Ontology headers, para. 5, "<rdfs:comment> provides the obvious needed capability to annotate an ontology": obvious => obviously - Defining Simple Hierarchical Named Classes, para. 5, "documentURI#Region" : Use the actual URI for the document here (to be consistent with the use of Region as opposed to a variable). - Defining Simple Hierarchical Named Classes, para "The fundamental taxonomic constructor for classes is subClassOf...": Describe the other important property of subclassOf. Namely, add at end of para. "An instance of a class C is also an instance of every class that C is a subclassOf." - Design for Use, bullets: The "levels of representation" and "subclass vs. instance" descriptions seem are confusing. - Simple Properties - Defining Properties: "Defining properties" => "Defining Properties" (use initial caps in heading) - Simple Properties - Defining Properties, "... two types of properties are distinguished": Remove commas after each item in bulleted list - Simple Properties - Defining Properties, para. 3: Say what "subPropertyOf" means generically. e.g. add "If X has property A with value Y, and A is a subPropertyOf B, the X als has property B with value Y." - Simple Properties - Defining Properties, para "Notice how the domain and range... And the transitive composition of the relation": Provide a forward pointer to TransitiveProperty when mentioning the transitive composition - Simple Properties - Defining Properties, "We can now define the class of Vintages, discussed previously." Perhaps not put the s in Vintage in teletype. - Simple Properties - Defining Properties:. <owl:Class rdf:ID="Vintage"> <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#vintageOf"/> <owl:minCardinality>1</owl:minCardinality> </owl:Restriction> </rdfs:subClassOf> </Class> </Class> => </owl:Class> - Properties and Datatypes <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.org/wine-dt.xsd"> <xsd:simpleType name="year"> <!-- year is an XMLS datatype based on integer --> <xsd:restriction base="xsd:integer"/> </xsd:simpleType> <xsd:simpleType name="wineYear"> <!-- wineYear is an XMLS datatype based on year --> <!-- with the added restriction that values must be GEQ 1700 --> <xsd:restriction base="year"> <xsd:minInclusive value="1700"/> </xsd:restriction> </xsd:simpleType> </xsd:schema> Indent is incorrect with the </xsd:restriction> part. - SymmetricProperty, "The property adjacentRegion is symmetric, while locatedIn is not. (To be more precise, locatedIn is not intended to be symmetric. Nothing in the wine ontology at presetn prevents it from being symmetric.)": at presetn => at present - Functional Property: Functional Property => FunctionalProperty - Functional Property: mention that FunctionalProperty is equivalent to maxCardinality = 1 when used a restriction on owl:Thing - InverseFunctionalProperty, "In OWL Full, we can use tag a DatatypeProperty as inverseFunctional.": use tag a => tag a - allValuesFrom, someValuesFrom, para. 2: Add a generic description of allValuesFrom, e.g.: "owl:allValuesFrom means that every value of the specified property must be an instance of the specified class restriction." - Cardinality, para. 2, "We defined hasVintageYear to be a functional property.": Change rest of paragraph to: "Note that this is the same as saying that every Vintage has at most one WineYear. When we use owl:cardinality equal to 1, then we assert something stronger, that every Vintage has exactly one WineYear." - Cardinality, last para: Mention that minCardinality is used to specify a lower bound. - hasValue, last para.: The first two sentences also apply to every property restriction, and should be moved earlier in the Property Restrictions section. - sameClassAs, samePropertyAs, "Of course the example above is somewhat contrived, since we can always use &vin;Wine anywhere we would #Wine and get the same effect without redefinition. A more likely use would be in a case were we ...": we would #Wine => we would use #Wine; in a case were => in a case where - differentFrom: <WineSugar rdf:ID="Sweet"> <owl:differentFrom rdf:about="#Dry"/> </WineSugar> rdf:about => rdf:resource (can't use rdf:about as an attribute of a property) - Complex classes, para 1: "These are denoted unionOf, intersectionOf and complementOf" => "These are denoted intersectionOf, unionOf and complementOf" to make it fit right with regards to respectively. - Disjoint Classes, "A common requirement is to define as a class as the union of a set of mutually disjoint subclasses.": define as a class as => define a class as - References: (note some changes are indicated parenthetically inline with =>) Wine Ontology Tutorial Ontology Development 101: A Guide to Creating Your First Ontology (=> .) Natalya Fridman Noy and Deborah L. McGuinness. Stanford Knowledge Systems Laboratory Technical Report KSL-01-05 and Stanford Medical Informatics Technical Report SMI-2001-0880, March 2001. Wine Ontology in CLASSIC Living with CLASSIC: When and How to Use a KL-ONE-Like Language , (, => .) Ronald J. Brachman, Deborah L. McGuinness , Peter F. Patel-Schneider , Lori Alperin Resnick , and Alex Borgida. in John Sowa, ed., Principles of Semantic Networks: Explorations in the representation of knowledge, Morgan-Kaufmann: San Mateo, California, 1991, pages 401--456. => insert a line here VerticalNet Industrial Strength Ontology Management . Aseem Das, Wei Wu, and Deborah L. McGuinness. Stanford Knowledge Systems Laboratory Technical Report KSL-01-09 2001. In the Proceedings of the International Semantic Web Working Symposium. Stanford, CA, July 2001 OKBC: A programmatic foundation for knowledge base interoperability, V. K. Chaudhri, A. Farquhar, R. Fikes, P. D. Karp, and J. P. Rice. In Proceedings of the 15th National Conference on Artificial Intelligence (AAAI-98), pages 600? 607. AAAI Press,1998. 600?607 => 600-607 - Appendix B: History: Don't list both DAML and DAML-ONT, choose one or the other - Appendix B: History, "MNF- Meta Content Framework": MNF => MCF - Appendix C: An Alternate Region Ontology, "vineyards are located in towns: Chateau Margaux us a vineyard in Margaux, Avignonesi in Montepulciano": us => is - Appendix C: An Alternate Region Ontology, "This simplifies the model and is consistent with the fact that a "town" as a wine production area typically stands for an area surrounding the town, which can be larger or smaller that the actual town area": larger or smaller that => larger or smaller than - Appendix C: An Alternate Region Ontology: Classes: <owl:Class rdf:ID="&vin;ProductionArea"/ > <owl:Class rdf:ID="&vin;Country:"> <rdfs:subClassOf rdf:resource="&vin;ProductionArea"/> </owl:Class> <owl:Class rdf:ID="&vin;Region:"> <rdfs:subClassOf rdf:resource="&vin;ProductionArea"/> </owl:Class> <owl:Class rdf:ID="&vin;Vineyard:"> <rdfs:subClassOf rdf:resource="&vin;ProductionArea"/> </owl:Class> Country: => Country Region: => Region Vineyard: => Vineyard - Appendix C: An Alternate Region Ontology: Properties: ... <owl:ObjectProperty rdf:ID="&vin;hasVineyard"> <rdfs:subPropertyOf rdf:resource="&vin;hasSubArea"/> <owl:allValuesFrom rdf:resource="&vin;Vinyard"/> </owl:ObjectProperty> ... Vinyard => Vineyard
Received on Thursday, 2 January 2003 16:20:33 UTC