- From: Brian McBride <bwm@hplb.hpl.hp.com>
- Date: Fri, 02 May 2003 17:48:11 +0100
- To: public-webont-comments@w3.org
The RDFCore WG has reviewed the Owl Reference last call WD at http://www.w3.org/TR/2003/WD-owl-ref-20030331/ RDFCore congratulates the WEBONT WG and particularly the authors and editors of the reference document for its quality and clarity. For the convenience of WEBONT we have given an ID to each comment. Comments not specific to RDFCore's interests will be sent separately by the reviewer. ------------------------------------- #owlref-rdfcore-owl-rdf-semantics We particularly admire the clarity of this note in 8.1 and request that a similarly worded sentence be added to 1.2 para 2 and that the note in 1.4 be phrased in the same or similar manner. [[ NOTE: RDF documents will generally be in OWL Full, unless they are specifically constructed to be in OWL DL or Lite. ]] ------------------------------------- #owlref-rdfcore-owl-class-denotation It has been suggested to RDFCore that owl:Class is not needed. RDFCore requests the creation of test cases to clearly illustrate the differences between owl:Class and rdfs:Class. ------------------------------------- #owlref-rdfcore-what-is-a-class-description [[ 3.1 Class descriptions A class description is the term used in this document (and in the OWL Semantics and Abstract Syntax) for the basic building blocks of class axioms (informally called class definitions in the Overview and Guide documents). OWL distinguishes six types of class descriptions: 1. a class identifier (a URI reference) 2. an exhaustive enumeration of individuals that together form the instances of a class 3. a property restriction 4. the intersection of two or more class descriptions 5. the union of two or more class descriptions 6. the complement of a class description ]] Its not clear from the text what a class description is. We take it to be an RDF Graph (a set of triples) describing a class. The above seems to say: a class identifier (a URI reference) is a type of RDF graph which doesn't make sense. Similarly, the meaning of the compliment of an RDF graph isn't clear. Whilst this is just wordsmithing, the concept of a class description is of prime importance to the rest of the spec and should be clear. Further: [[ NOTE: If one provides an RDF identifier for class descriptions of the type 2-6, this has the extra effect of providing a way of referring to the class description by its name, i.e., as a class description of type 1. See Section 3.2.3 for details. ]] Does this name identify the class description, or the class described by the description? We suspect the latter, in which case: [[ NOTE: If one provides an RDF identifier for class descriptions of the type 2-6, this has the extra effect of providing a way of referring to the class so described by its name. See Section 3.2.3 for details. ]] There are other instances of this confusion: e.g. in 3.1.2 [[ A value constraint puts constraints on the value range of the property when applied to this particular class description. ]] The constraint is on the property when applied to an instance of the class described by this particular class description. In 3.2 [[ * rdfs:subClassOf allows one to say that the class extension of a class description is a subset of the class extension of another class description. ]] and 3.2.1 [[ A class description is by definition a subclass of itself. ]] which seems to confuse the notion of class and class description. ------------------------------------------ #owlref-rdfcore-use-ntriples [[ "Human rdf:type owl:Class .". ]] In the interests of inter-spec consistency we request that WEBONT docs use the same abbreviated form of n-triples as the RDF docs, which would make the above [[ "base:Human rdf:type owl:class ." ]] with some appropriate explanation of what base is. ------------------------- #owlref-rdfcore-domain-range-value terminology Throught the documents various terms, such as "value range", "range value", "range", "domain", "domain value" are use to talk about the values of properties. Several of these terms are undefined, they often are used inconsistently and there seems to be unnecessary duplication in the use of the terms. The term "value range" is used in the document and is not defined. We suggest the meaning of this term be clearly defined if it is to be used. However, it seems to mean the same thing as the term 'range' defined in RDFS, so the definition of a new term may be redundant. Confusingly, the term "range value" is also used in the document and is not defined. We suggest the meaning of this term be clearly defined if it is to be used. However, it seems to mean the same thing as the term 'value' as used in RDFS, so the definition of a new term may be redundant. We also note that it is used inconsistently. In 3.1.2 [[ Property restrictions can be applied both to datatype properties (properties for which the range value is a data literal) and object properties (properties for which the range value is an individual). ]] it appears to be used to refer to thing denoted by the object of a triple. In 3.1.2.1 it is used to state a syntactic constraint on OWL Lite documents. [[ NOTE: In OWL Lite the range value of owl:allValuesFrom must be a class identifier. ]] Here it refers to the object of the triple, not the thing the object denotes. And further that the term 'value' seems to suffice elsewhere, e.g. 3.1.2.1: [[ To see why this is so, observe that the owl:allValuesFrom constraint demands that all values of P belong to class P, and if no such values exist, the constraint is trivially true. ]] 4.2 [[ Syntactically, owl:equivalentProperty is a property with as both domain and range an instance of rdf:Property. ]] The domain of a property is a class, as is the range. And domain and range aren't about syntax (occurs elsewhere also). Suggest: [[ owl:equivalentProperty is a property. Its rdfs:domain is rdf:Property, as is its rdfs:range. ]] or less formally [[ owl:equivalentProperty is a property is a property that relates two properties. ]] In owl:backwardCompatibleWith [[ The owl:backwardCompatibleWith construct is a property with an instance of the class owl:Ontology as its domain and range. ]] This is further confusion over the use of the terms domain and range. Domains and Ranges of properties are classes, not instances. Nor is the construct a property! [[ owl:backwardCompatibleWith is a property. Its domain is owl:Ontology as is its range. ]] We request: o A global check throughout the document of all uses of all terms involving the words 'domain' and 'range' o that wherever possible the terminology used in the RDFCore specs be adopted o where RDFCore does not provide appropriate terminology, that any new terms be defined and used consistently o RDFCore would be willing to help discuss appropriate terminology ----------------------------- #owlref-rdfcore-value-space In 3.1.2.2 [[ The cardinality constraint owl:maxCardinality is a built-in OWL property that links a restriction class to a data value belonging to the range of the XML Schema datatype nonNegativeInteger. ]] We believe the correct term is "the value space of the XML Schema datatype nonNegativeInteger". Similarly in minCardinality. ------------------------------- #owlref-rdfcore-individual-identity 5.2 Individual Identity This section should include some words about URIREF comparison, probably with a reference to rdf concepts where we say how URIREFS are compared. http://www.w3.org/TR/rdf-concepts/#section-Graph-URIref --------------------------------- #owlref-rdfcore-datatypes-attributes-have-not 6.1 Datatypes [[ A typed literal needs to have an XML attribute rdf:datatype ... ]] Its not the literal that has an XML attribute - that is the way it is written in rdf/xml. Suggest: [[ In RDF/XML, the type of a literal is specified by an "rdf:datatype" attribute. ]] Similarly: [[ When using datatypes, please note that even if the range of a property is declared to be of a certain datatype, RDF still requires a rdf:datatype attribute in a statement about this property, otherwise it is treated as a plain literal. ]] Suggest: [[ When using datatypes, please note that even if a property is defined to have a range of a certain datatype, RDF/XML still requires that the datatype be specified each time the property is used. ]] ------------------------------------- #owlref-rdfcore-rdfs:literal-not-a-datatype [[ A typed literal needs to have an XML attribute rdf:datatype of which the value is recommended to be one of the following: ... # The RDF datatype rdfs:Literal which is the class of literals, typed and plain. ]] rdfs:Literal is not a datatype. ---------------------------------- #owlref-rdfcore-qnames-in-rdfxml In 6.2 we see: [[ <rdf:first rdf:datatype="xsd:integer">0</rdf:first> ]] A qname is not allowed as the value of an rdf:datatype property. This should be: [[ <rdf:first rdf:datatype="&xsd;integer">0</rdf:first> ]] --------------------------------- #owlref-rdfcore-enumerated-datatype-in-xml 6.2 Enumerated datatype We suggest the following form for writing the syntax of lists with literal values, which we believe is more slightly more readable and better suited to longer lists. [[ <owl:DatatypeProperty rdf:ID="tennisGameScore"> <rdfs:range> <owl:DataRange> <owl:oneOf> <rdf:List> <rdf:first rdf:datatype="&xsd;integer">0</rdf:first> <rdf:rest rdf:nodeID="l2"/> </rdf:List> <rdf:List rdf:nodeID="l2"> <rdf:first rdf:datatype="&xsd;integer">15</rdf:first> <rdf:rest rdf:nodeID="l3"/> </rdf:List> <rdf:List rdf:nodeID="l3"> <rdf:first rdf:datatype="&xsd;integer">30</rdf:first> <rdf:rest rdf:nodeID="l4"/> </rdf:List> <rdf:List rdf:nodeID="l4"> <rdf:first rdf:datatype="&xsd;integer">30</rdf:first> <rdf:rest rdf:resource="&rdf;nil"/> </rdf:List> </owl:oneOf> </owl:DataRange> </rdfs:range> </owl:DatatypeProperty> ]] --------------------------------------- #owlref-rdfcore-annotation-restriction 7.1 Annotations [[ * Annotation properties must not be used in property axioms (e.g., no subproperties are allowed). ]] We believe there may be an editorial error here, and that this restriction is not intended to apply to OWL Full. As stated, since rdfs:domain and rdfs:range are property axioms, this means that we can't define a domain and range for an annotation property in Owl. Further rdfs defines rdfs:isDefinedBy to be a subproperty of rdfs:seeAlso. That would mean that not all RDF graphs are legal OWL Full, and that in fact the graph for RDF Schema is not legal OWL Full. ------------------------------------ #owlref-rdfcore-class-ontology RDFCore makes this point with some trepidation, not wishing to cause WEBONT to waste time and energy on a discussion with little practical impact. In 7.2 [[ An ontology header component is represented with an instance of the class owl:Ontology, which typically identifies the containing document with a same-document reference [section 4.2 of RFC2396], and which may optionally contain, in any order, any number of import and/or versioning statements. ]] This seems to say that instances of the class owl:Ontology are documents. RDFCore suggests that the text be modified to be less specific. There are also potential difficulties with the reference to RFC 2396; it would be better to refer to the RDF specs and let them take the heat on any 'interpretation' of RFC 2396. We suggest: [[ A document describing an ontology typically contains information about the ontology itself. An ontology is a resource, so may be described using properties from the OWL and other namespaces, e.g. <owl:Ontology rdf:about=""> <owl:versionInfo> ... </owl:versionInfo> <rdfs:comment>...</rdfs:comment> <owl:imports rdf:resource='...'/> </owl:Ontology> This is commonly called the ontology header and is typically found near the beginning of the RDF/XML document. The line <owl:Ontology rdf:about=""> states that this block describes the current ontology. More precisely, it states the current base URI identifies an instance of the class owl:Ontology. As noted earlier, it is recommended that the base URI be defined using an xml:base attribute in the <rdf:RDF> element at the beginning of the document. ]] ---------------------------------------- #owlref-rdfcore-transitive-datatype-properties In 8.1 [[ Although from the semantics point of view it is not forbidden in OWL Full to declare datatype properties to be inverse, transitive, or symmetric, in practice this does not make much sense. (RDF does not allow data values as the subject of a statement). ]] Consider: eg:lessThan rdf:type owl:TransitiveProperty . eg:lessThan rdf:type owl:DatatypeProperty . eg:size rdf:type owl:DatatypeProperty . eg:size rdfs:range xsd:decimal . _:a eg:size _:sa . _:b eg:size _:sb . _:c eg:size _:sc . _:sa eg:lessThan _:sb . _:sb eg:lessThan _:sc . entails _:sa eg:lessThan _:sc . This is potentially useful and does make sense. -----------------------------
Received on Friday, 2 May 2003 12:47:27 UTC