- From: Matthew Pocock <matthew.pocock@ncl.ac.uk>
- Date: Sun, 11 Feb 2007 21:35:51 +0000
- To: public-owl-dev@w3.org
Now that I've started writing an OWL 1.1 API I'm noticing little things in the spec at http://owl1_1.cs.manchester.ac.uk/owl_specification.html. I've been working through this over a period of several days, so sorry if this goes over things that where covered in the mailing list in the mean time. The most anoying (and least important) being that in the grammar, URIs are of type URI but in the UML, they are of type String. Of course a realisation of the UML into your favorite language may well use String for storing the URIs, but it also may well not. section 4.1 individualURI := 'Individual' '(' individualURI ')' to individual := 'Individual' '(' individualURI ')' Section 4.1 defines Constant in one way in the UML and in another way in the grammar. Not sure if this is actually an error (not totaly sure what a UML diagram's entailment is), but it is definitely confusing. Section 4.3 introduces arity for datatype. There's no definition of arity, or what it means, or how to use it here. I assume arity must be a non-negative integer (or a positive integer if you are dissallowing the zero-length tuple, but unit is often very usefull to have about). There's no propper syntax that I can see either in the UML or in the grammar for constructing and expressing these guys. Section 4.3 introduces FacetType for restricting datatype values. In the UML, this is represented as a string. In the grammar, this is enumerated. The values come from the xsd facets, yes? In that case, should we be using a URI of the form xsd:<facetType> e.g. xsd:MinLength for these guys? This makes the link to the XSD explicit, just as we've done with the datatype URIs. This would not affect the enumeration, assuming a function from the enumerated values to the URIs. It would change the UML version from String to a URI identifying a restriction facet from the XSD spec that is OWL-approved (or just use an enumeration again). Section 5 needs sub-sections like section 6 has. It's too much stuff to have no way to refer to bits of it. Section 5 , all the way through uses class on an association. This is a keyword in many languages, meaning that the UML would have to be munged e.g. to use clazz or something equally ugly. Also, this uses class and classes to link back to Description. The OWL 1 grammar seperated out class and description, as does this spec in part and to make class a soft-synonym for description is inviting missunderstandings. Is there a better name here, e.g. description(s)? Type(s)? Section 5 figure 6 has some associations with cardinality 2..* e.g. classes on ObjectUnionOf. While I understand that it is not very interesting to take the union of an empty set or a single item, it does never the less have defined semantics. Is this 2..* cardinality a requirement, or a normalization, where cardinalities of 1 or of 0 are re-written to another form during normalization, for politeness sakes? I'd ask a similar question about ObjectOneOf and an empty set of individuals. Section 5 figure 8 uses cardinality properties on the Object Min/Max/Exact Cardinality types. The grammar uses nonNegativeInteger, but the UML just uses int. Similar to my comments on URI, some languages may have a native non-negative integral type which would be more appropriate than int. Section 5 figures 9 and 10 have the grammar interspersed with the text in a different order to other figures. Section 6 and 3 define Axiom differently - Section 3 says classAxiom | objectPropertyAxiom | ... but provides no UML. Section 6 provides deffinitoins for objectPropertyAxiom ... but shows these being directly under Axiom in the UML. The description section in Section 5 has a similar break-down into types of description, but this is represented by a single grammar production and single level of inheritence in the UML. Consistency between the two would lower the learning curve. Section 6.1 uses class refering to description again. Section 6.1 Equivalent, disjoint and disjount union all have cardinality on the descriptions of 2..* - again, is this a normalised representation constraint, or a requirement? Section 6.2 defines sub-properties and disjoint properties, but not a disjoint union of properties. Are unions or properties a DL problem, or is this just something that didn't make it in? Section 6.2 defines subObjectProperties as having cardinality 1..* - is there any reasonable interpretation of a property being a super property of a zero-length role chain? Sounds like it would collapse properties down onto some aspect of description - makes my brain hurt. Section 6.3 ... you can guess ... cardinalities on disjoint, equivalent - required or cannonically-formed? Section 6.3 does not introduce an inverse functional data property. This would be very usefull e.g. when mapping in representations of database tables with (foreign) keys. Is there an alternative way to achieve the same outcome? This document would be helped no end in clarity by providing a single example of each axiom, with the grammatical and a human description of what that statement means. Perhaps this should go in a sister document? I'm happy to contribute to this effort, if others think it's worth while. Once my Haskell implementation of the OWl 1.1 data-structures is debugged, I will post a link to the list. Matthew
Received on Sunday, 11 February 2007 21:36:15 UTC