- From: Antoine Isaac <aisaac@ina.fr>
- Date: Fri, 11 Apr 2003 16:49:57 +0200
- To: <public-webont-comments@w3.org>
Hi folks, After the reading of the last versions of OWL Guide and OWL AS&S, I have some basic remarks, some of them due to typo errors, others not. Maybe they are mainly due to some english (or more fundamental) misunderstandings of mine. Concerning OWL Guide : -> sections 3.2.2 and 3.2.3 In section, 3.2.2, yearValue is specified has having a xsd:positiveInteger range. In the next section, the individual Year1998 id defined by : [ <VintageYear rdf:ID="Year1998"> <yearValue rdf:datatype="&xsd;positiveInteger">1998</yearValue> </VintageYear> ] Is the specification of rdf:datatype="&xsd;positiveInteger" mandatory? Is is linked to RDF syntax considerations or just an examplification of what could optionnally be written? Is <VintageYear rdf:ID="Year1998"> <yearValue>1998</yearValue> </VintageYear> correct? -> section 3.3, InverseFunctionalProperty subsection [ <owl:ObjectProperty rdf:ID="producesWine"> <rdf:type rdf:resource="&owl;InverseFunctionalProperty" /> <owl:inverseOf rdf:resource="#hasMaker" /> </owl:ObjectProperty> ¬ Think of the elements of the range in an inverse functional property as defining a unique key in the database sense. owl:InverseFunctional implies that the elements of the range provide a unique identifier for each element of the domain. ] In this case, a Wine can be used to identify a Winery, but it is not a *unique* key, since several wines can be produced by a single winery (which seems to be allowed by the last sentence of the previous section). I have understood that there has been lots of arguing about the meaning of this property (I know this issue has been largely discussed in the rdf-logic list, but I do not find the thread....). Indeed I believed I had got it, until I saw the two last paragraph of the subsection. In my understanding of the definitions, an InverseFunctionalProperty gives a key provided it has an exactly-one cardinality restriction on its range. Now I am not sure of anything... -> section 3.4.1 [ The maker of a Wine must be a Winery. The allValuesFrom restriction is on the hasMaker property of this Wine class only. Makers of Cheese are not constrained by this local restriction. ] Indeed makers of Cheeses should NOT be concerned, for in 3.3 (and in wine.owl) producesWine has been defined by : [ <owl:ObjectProperty rdf:ID="producesWine"> <owl:inverseOf rdf:resource="#hasMaker" /> </owl:ObjectProperty> ] That implies that any cheese that would be made by a maker of cheese would be in the range of a "producesWine" property, which is quite disturbing. -> section 3.4.2 [ owl:maxCardinality can be used to specify an upper bound. owl:minCardinality can be used to specify a lower bound. In combination, the two can be used to specify a range. ] Perhaps a typo : "cardinality" (or "owl:cardinality") instead of "range" ? -> section 5.1 [ <owl:Class rdf:ID="ConsumableThing" /> <owl:Class rdf:ID="NonConsumableThing"> <owl:complementOf rdf:resource="#ConsumableThing" /> </owl:Class> The class of NonConsumableThing includes as its members all individuals that do not belong to the extension of ConsumableThing. This set includes all Wines, Regions, etc ] Is a wine non consumable ? Anyway, when I searched in wine.owl for further examplification I couldn't find the above definitions. I found it in food.owl, only to discover it was not a subclass of PotableLiquid. If it is a modelisation choice, it looks strange. -> appendix C [ <owl:ObjectProperty rdf:ID="&vin;regionOf"> <rdf:type rdf:resource="&owl;FunctionalProperty" /> <owl:inverseOf rdf:resource="&vin;hasRegion"/> <owl:range rdf:resource="&vin;Country"/> </owl:ObjectProperty> ] There is a typo. the range is "&vin;region", as it is specified in the following triple definition : [ vin:hasRegion owl:range vin:Region. ] Concerning OWL AS & S I have not clearly understood the goal of section 4.1 (I must recognize I am far from being an expert in those matters). If it is to obtain (when possible) equivalent RDF triples for OWL definitions, why not using RDF abilities at best ? In particular, could an equivalent for "EquivalentClasses (D1...Dn)" be "T(Di) rdfs:subclassOf T(Di+1); T(Di+1) rdfs:subClassOf T(Di),1<=i<n" or would a RDFS-guru find it really stupid ? Regards. Antoine Isaac
Received on Friday, 11 April 2003 10:45:10 UTC