- From: Uschold, Michael F <michael.f.uschold@boeing.com>
- Date: Mon, 8 Aug 2005 10:13:36 -0700
- To: "Guus Schreiber" <schreiber@cs.vu.nl>, "Natasha Noy" <noy@SMI.Stanford.EDU>
- Cc: "Ralph R. Swick" <swick@w3.org>, "swbp" <public-swbp-wg@w3.org>
Excellent comments, Guus! A few remarks are given below.
============================================
Mike Uschold
Tel: 425 865-3605 Fax: 425 865-2965
============================================
> -----Original Message-----
> From: Guus Schreiber [mailto:schreiber@cs.vu.nl]
> Sent: Monday, August 08, 2005 4:40 AM
> To: Natasha Noy
> Cc: Ralph R. Swick; swbp
> Subject: Re: [OEP] The n-ary relations draft is ready for
> outside review
>
>
>
> Natasha, Alan,
>
> Her is my review. Sorry for the delay. The reviews is a bit
> biased by my
> use of this note in a ontology-engineering course, which
> mainly focused
> on issues wrt real-world modeling (and not on RDF/OWL details).
>
> Guus
>
> PS. My spelling checker wanted me to replace "reification" with
> "deification" :-).
>
>
> Defining N-ary Relations on the Semantic Web
> Editor's Draft 20 June 2005
> http://smi-web.stanford.edu/people/noy/nAryRelations/n-aryRel
> ations-2nd-WD.html
>
> [[
> Issue 1: If property instances can link only two
> individuals, how do
> we deal with cases where we need to describe the instances of
> relations, such as its certainty, strength, etc?
>
> Issue 2: If instances of properties can link only two individuals,
> how do we represent relations among more than two individuals?
> ("n-ary relations")
>
> Issue 3: If properties can link only two individuals, how do we
> represent relations in which one of the participants is an ordered
> list of individuals rather than a single individual?
> ]]
>
> One could say this is not really a n-ary relation problem,
> but the "how to make statements about statements" problem, ,
> i.e an alternative for RDF reification. I propose to make
> this explicit in the text, and move the issue to be the second issue.
Excellent point, see also my comment below.
>
> Vocabulary (issue 1 & 2): some readers might not grasp
> "property instances" directly. Suggest to either add in
> parentheses "cf. tuples" or drop "instances" (as done in the
> description of issue 3).
I agree with this.
>
> [[
> Use case examples
> ]]
>
> Again, examples 3 is the prototypical n-ary relation, so
> maybe this should be the first example. The point is that
> for people from relational databases the first two examples
> are not "real" n-ary
> relations: e.g. in example 1 the probability value is
> functionally dependent on the person and the disease. In
> example 3 there is no such dependency (the primary key is
> the combination of all three arguments). So, reification
> would work with examples 1 and 2, but not with example 3
> (because the instances are not unique).
Excellent point. I don't think any of us would want to try to precisely
define what a 'real' n-ary relation is. Maybe it is safest to say
something like: Here are three cases where it is natural and/or
convenient to use n-ary relations.
>
> [[
> 4. United Airlines flight 3177 visits the following airports: LAX,
> DFW, and JFK. There is a relation between the individual
> flight and
> the three cities that it visits, LAX, DFW, JFK. Note that
> the order
> of the airports is important and indicates the order in which the
> flight visits these airports.
> ]]
>
> UML users may not recognize this as an n-ary relation. UML
> has the notion of "ordered" associations, which would handle
> this situation. It is in fact a binary relation where one of
> the arguments is not a simple individual but an ordered list
> of individuals. I suggest to add a UML note.
>
> Reflecting on this, we might just want to say:
> - issue 2 / example 3 describe the "real" n-ary relation issue
> - issue 1 and 3 / example 1+2 and 4 describe related but
> different problems that can be modeled using the same
> patterns. But maybe I'm making it too complicated now.
Yes, this is too complicated, see my above comment for how we could
handle this.
>
> [[
> Sec. Representation patterns
>
> ... Examples 1, 2, and 3 above correspond to this
> pattern. For instance,
> in the example 1 the instance of a new class Diagnosis_Relation
> would represent the fact that Christine has been diagnosed with a
> breast tumor with high probability.
> ]]
>
> "correspond to" is too strong. Suggest to rephrase as:
> "Examples 1, 2, and 3 above can be modeled with this pattern.".
Right, this aligns with my suggestion for all the examples: they can
naturally and/or conveniently be modeled using n-ary relations.
>
> Maybe it is a good place here to indicate that example 1 and
> 2 could alternatively have been represented with RDF reification.
>
> I suggest to include example 3 here, also because a name
> such as "Purchase" would seem to come less out of the blue
> than "Diagnosis_Relation".
>
> I suggest to include a UML note, indicating that pattern 1
> is close to what is called an "association class" in UML.
>
> [[
> Pattern 1
> ]]
>
> In line with the previous comments, I suggest to change the
> order of the use cases. The current use case 3 should be the
> first one.
>
> [[
> Use Case 1: additional attributes describing a relation
> ]]
>
> I've tried to explain the modeling solution in my
> ontology-engineering" class and observed the following:
>
> - it requires "breast tumor" to be treated as an instance,
> where it will usually be a class (one could see it as a use
> case for the "classes as values" note).
>
> I suggest to consider using an instance of BreastTumor as the
> value. This also has the advantages described in the
> value-partition
> note (easy to add later the statement that MyBreastTumor
> is an instance
> of a subclass of "BreastTumor").
>
> - there are two other solutions which are worth discussing as
> alternatives:
>
> 1. Person -> hasDiagnosis -> Disease -> hasProbability -> Number
> This would work if the instance of disease is not BreastTumor" but
> a unique instance of BreastTumor. By the way, I do not think this
> solution would work in practice, as a statement about a diagnosis
> with a certain probability is always time dependent
> (which we cannot
> easily add).
>
> 2. Representing Diagnosis in a similar way as Purchase.
> My students found this solution easier to understand (for whatever
> it is worth). They found the juxtaposition of BreastTumor and
> Probability weird, as the second is clearly despondent on the
> first. The only real difference of course is the direction of the
> hasDiagnosis property.
I guess you don't mean 'dependent', not 'despondent'. The latter is what
Natasha might be feeling with yet another round of challenging technical
points to weave into the note :-).
> [[
> Use Case 2: different aspects of the same relation
> ]]
>
> This use case is a better example than use case 1 of how to
> use the pattern for avoiding the use of RDF reification.
>
> A drastic solution could be to drop use case 1 altogether
> and keep this one in. Adding time information to this
> example would make it more realistic.
>
> "TemperatureObservation" would be a good name for this
> relation. I think this use case is close to the Observation
> pattern in Fowler's book on Analysis Patterns (I tried to
> verify this, but I cannot find my copy of the book).
>
> [[
> Use Case 3: N-ary relation with no distinguished participant ]]
>
> I think it is worthwhile to point out that in use case 3 the
> domain actually provides a natural name for the relation as
> a whole, namely "Purchase". There are many of these nouns
> that represent static aspects of an activity and thus are
> candidates for this pattern: "transaction", "enrollment",
> "subscription". This makes it different from use cases 1 and
> 2 (but see also my remarks there).
>
> [[
> Pattern 2: Using lists for arguments in a relation
> ]]
>
> Alternatives which avoid the use of RDF list would be worth
> mentioning:
>
> 1. A Flight is linked to a number of FlightPorts. Each
> FlightPort is a class, representing the relation between a
> port and its sequence number in the Flight. I find this
> rather ugly, but it is in a sense close to the way use case
> 1 is represented.
>
> 2. A Flight is linked to a number of FlightMovement
> instances. Each Flight movement represents a relation
> between from/to airports. This would probably be my
> preferred solution.
>
> --
> Free University Amsterdam, Computer Science
> De Boelelaan 1081a, 1081 HV Amsterdam, The Netherlands
> Tel: +31 20 598 7739/7718; E-mail: schreiber@cs.vu.nl
> Home page: http://www.cs.vu.nl/~guus/
>
>
Received on Monday, 8 August 2005 17:13:48 UTC