- From: Smith, Michael K <michael.smith@eds.com>
- Date: Sun, 27 Apr 2003 13:10:38 -0500
- To: webont <www-webont-wg@w3.org>
Antoine, Thanks again for your comments. In this message I have tried to either answer your questions or propose an editorial change that I think addresses them. > Hello Mike, > > > Antoine, > > > > Thanks again for your comments. In this message I have tried to either > > answer your questions or propose an editorial change that I think > > addresses them. > > And you've succeeded by large. Thanks. Nevertheless, as explanations > always raise more questions, I have some further comments. In this > mail I only left the pieces of your previous mail that were relevant > to these comments. > > > > -> 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? > > > > Yes, if we want 1998 to be considered a positive integer. > > > > > 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? > > > > No. Not if you want '1998' to be an integer. 1998 as above > > is a 'plain > > literal' as opposed to a 'typed literal'. See > > http://www.w3.org/TR/2003/WD-rdf-concepts-20030123/#dfn-plain-literal > > We expect tools to help with these verbose constructs. > OK. It is just like if we tried to assert > > <CabernetSauvignon rdf:ID="SantaCruzMountainVineyardCabernetSauvignon" > > <locatedIn>SantaCruzMountainsRegion</locatedIn> > <hasMaker>SantaCruzMountainVineyard</hasMaker> > </CabernetSauvignon> > > without "rdf:ressource=" pointing towards already-defined ressources, > or without "real" inserted OWL instance definitions. Isn't it ? With > such an assertion, a system couldn't infer that those literals are the > names of a Region and a Wineyard. You've got the idea. Note that the example would violate the range restrictions on the locatedIn and hasMaker properties, which are object properties. > > > -> 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). > > > > You are right. This is phrased incorrectly. The idea was that a > > 'unique key' applies to a tuple and the text should not have stated > > that it is a unique identifier for the domain elements. > > > > Suggested rewording: > > > > [ > > 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 pair contained in the property. ] > > I finally managed to understand (and to agree with) your rewording, > but it still sounds difficult. Perhaps it would be better to cancel it > or to exemplify it with your wines and wineries. Even if > > [If ChateauMargotWinery producesWine ChateauMargotWhite and > ChateauMargotRed, then {ChateauMargotRed} gives a key for > ChateauMargotWinery, as well as {ChateauMargotWhite}, as well as > {ChateauMargotWhite, ChateauMargotRed}] > > is still confusing, at least it gives something more concrete. Maybe the key analogy was a bad idea. The idea of a key in the database sense is that it provides a unique index to a row in a table. If our mapping is (B-><A>, C-><A>), then there is no unique id for <A>. The reason I changed the text to 'pairs' was to convert the previously erroneus text to describe a mapping lie (B-><A,B>, C-><A,C>). I will just delete the paragraph. The preceding paragraphs include P(y,x) and P(z,x) implies y = z and The reason is that the inverse of a functional property must be inverse functional. with seems more than sufficient. > > > 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. > > > > Yes. Your understanding was correct. > > Recalling some math courses, I wondered whether "injective relation" > could be used, but a quick search on the net revealed that people used > this expression to refer to injective *functions*, thus not fitting > our one-to-many inverse-functional property. Unless people turn the > definition of "injective" into something like "if p(a) and p(b) are > not disjoint (a and b being instances, p(a) and p(b) sets of > instances, the sets of the values of property p for a and b) then > a=b", "inverse functionnal" will probably remain the best choice. Or > something like "disjointValuedProperty", if it has not been rejected > by the WebOnt group yet. Unless it is deemed truly awful, the WG is unlikely to rename properties at this point. > > > -> 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" ? > > > > I'm using range in the [n...m] sense. Will change to "numeric range". > > For my humble brains it stills sound confusing. A numerical function > may have something called a "numeric range", but in my opinion it > would still be the "owl:range" meaning (even though restrected to a > set of numbers). How about using "cardinality range" ? The trouble with 'cardinality range' is that it is a new concept, within OWL, that we would need to define somewhere. I was trying to reference well-understood concepts from outside OWL. And, while 'numeric range' is clearly related to "owl:range", I think it can be understood independently. I would prefer to keep it 'numeric', with the expectation that this is something most readers will relate to their prior (non-OWL) experience. Please reply to the mailing list as to whether the above changes adequately address your comments. - Mike Michael K. Smith, Ph.D., P.E. EDS - Austin Innovation Centre 98 San Jacinto, #500 Austin, TX 78701 phone: +01-512-404-6683 email: michael.smith@eds.com
Received on Sunday, 27 April 2003 14:10:47 UTC