W3C home > Mailing lists > Public > www-webont-wg@w3.org > January 2003

Review of Guide

From: Jeff Heflin <heflin@cse.lehigh.edu>
Date: Thu, 02 Jan 2003 16:20:30 -0500
Message-ID: <3E14AD1E.39162B80@cse.lehigh.edu>
To: WebOnt <www-webont-wg@w3.org>


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">

- 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

- Ontology headers, para. 7: owl:backCompatibleWith =>

- 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

<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

- 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

- 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

- Simple Properties - Defining Properties, "We can now define the class
of Vintages, discussed previously." Perhaps not put the s in Vintage in

- Simple Properties - Defining Properties:. 
<owl:Class rdf:ID="Vintage"> 
  <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> 
      <owl:onProperty rdf:resource="#vintageOf"/>

</Class> => </owl:Class>

- Properties and Datatypes

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

  <xsd:simpleType name="year"> 
    <!-- year is an XMLS datatype based on integer --> 
    <xsd:restriction base="xsd:integer"/> 
  <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"/>

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

- 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"/>  

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
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 ,
Alperin Resnick , and Alex Borgida. in John Sowa, ed., Principles of
Networks: Explorations in the representation of knowledge,
San Mateo, California, 1991, pages 401--456. 

 => insert a line here
Industrial Strength Ontology Management . Aseem Das, Wei Wu, and Deborah
McGuinness. Stanford Knowledge Systems Laboratory Technical Report
2001. In the Proceedings of the International Semantic Web Working
Stanford, CA, July 2001

OKBC: A programmatic foundation for knowledge base interoperability, V.
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
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:

<owl:Class rdf:ID="&vin;ProductionArea"/ >
<owl:Class rdf:ID="&vin;Country:">   
    <rdfs:subClassOf rdf:resource="&vin;ProductionArea"/>
<owl:Class rdf:ID="&vin;Region:"> 
    <rdfs:subClassOf rdf:resource="&vin;ProductionArea"/> 
<owl:Class rdf:ID="&vin;Vineyard:"> 
    <rdfs:subClassOf rdf:resource="&vin;ProductionArea"/> 

Country: => Country
Region: => Region
Vineyard: => Vineyard

- Appendix C: An Alternate Region Ontology:

<owl:ObjectProperty rdf:ID="&vin;hasVineyard">   
    <rdfs:subPropertyOf rdf:resource="&vin;hasSubArea"/> 
    <owl:allValuesFrom rdf:resource="&vin;Vinyard"/>

Vinyard => Vineyard
Received on Thursday, 2 January 2003 16:20:33 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:57:56 GMT