On 21 May 2007, at 19:50, Chris Mungall wrote:
On May 20, 2007, at 11:49 PM, Alan Rector wrote:
Chris
On 18 May 2007, at 18:10, Chris Mungall wrote:
I'm afraid I'm unclear how to state the OWL n-ary relation pattern
(http://www.w3.org/TR/swbp-n-aryRelations) where I really need
it. In all the examples given, the "lifted"[*] n-ary relation was
never truly a relation in the first place and always better
modeled as a class. It's kind of cheating. What if my n-ary
relation is transitive or if the 3rd argument is a temporal
interval over which the relation holds?
I think the former is doable with property role chains. Updating
the n-ary relations note with this - and all the other omitted
details, such as how to re-represent domain/range, functional
properties, n-ary relations in restrictions etc - would take a
lot of work and would make it utterly terrifying to the naive user.
Nevertheless the results are clunky and will need special tool
support[**] to avoid going insane.
I'd love to see DLR or similar means worked into future versions
of OWL or other standards, although I am not the one to comment on
the logical/complexity issues. I certainly agree that re-
expresssing relations as properties carries a modest penalty by
being more verbose, but it is manageable.
To take the example in question for some relation R, let's take
temperature as an example. I shall use the subrelations
"has_feature" / "has_state" to minimise arguments over what is,
and is not a "quality" - an issue not germane to this discussion.
Also I will use "has_state" as the property name so we don't have
both a property "has_value" and a keyword VALUE.
In the binary relation form in manchester simplfied syntax in OWL
1.0 we have:
Organism has_feature SOME (Temperature_Feature THAT
has_temporal_extent VALUE temporal_extent_1 AND
has_state SOME (has_magnitude VALUE 37 AND has_units VALUE
degrees_C))
where temporal_extent_1 is an individual which has facts
has_start_time VALUE n AND has_end_time VALUE m.
has_magnitude is a functional datatype property and has_units is
a functional property.
For the record, I accidentally left this ambiguous as to whether it was
"Organisms that a temperature of 37C during temopral extent 1"
Organism THAT has_feature. SOME (...
or the claim, better as
"This class of organism has the temperature feature during temporal
extent 1"
"ThisOrganismClass --> has_feature SOME (...
Should be
Here Temperature_Feature is a "history" (sensu Hayes) or a time-
slice. Do I have this correct?
Deliberately left ambiguous to limit the number of cardinaltiy
constraints to explain. It depends on the cardinality of
is_feature_of. I had not put a max 1 cardinality constraint on it,
implying that there can be many features, but any feature at any
time. For most purposes the inferences are the same. However, to
expand the example.
If you want features to be 4-D objects that have values at a time,
then each entity has at most one of each feature and each feature has
one state at each time. If you want a 3-D view then each entity has
exactly one of each kind of feature at a given time, and the feature
has exactly one state. If you want either view exclusively, there is
no need for History entities. Whichever way you do it, you need to
express the cardinality constraints someplace.
e.g. 4D
Entity --> has_feature MAX 1 Temperature_feature
is_feature_of: FUNCTIONAL
(Feature AND has_time_point SOME Time_point) has_state MAX 1 State.
e.g. 3D
(Entity AND has_time_point SOME Time_point) has_feature MAX 1
Temperature_feature.
has_state: FUNCTIONAL
is_feature_of: FUNCTIONAL
If you want to add something like "Situation" to the 3D view, you can
do it be substituting
(Entity AND in_situation (Situation THAT has_time_point SOME
Time_point)) has_feature MAX 1 Temperature_feature.
This sort of thing can always be made to work if the relevant
concessions are made in the upper ontology. For example, in the
above I never talk of qualities-as-continuants, but only through
their histories. To my mind this complicates things a lot - unless
you fully embrace the 4D view of the world.
So the consequence of the representation using histories is
complication. What is the advantage?
What about for relations such as part of and location? For example,
a protein that is in the cytoplasm at a certain time:
Protein that has_feature SOME (Location_Feature THAT
has_temporal_extent VALUE temporal_extent_1 AND
has_location SOME cytoplasm)
Would this be a fair extrapolation?
Would the following be accurate for a 4D representation of the same
thing?
Protein that has_history SOME (History THAT
has_temporal_extent VALUE temporal_extent_1 AND
has_location(4d) SOME (History THAT history_of SOME cytoplasm)
This seems suspect to me, but I am not clear what your underlying
model is or what you want to infer.
It seems to say that histories are located in histories which seems
odd. And it is unclear to me what you gain by the more complex
representation.
Let's go back to basics.
What is the statement in plane English? I presume:
"A protein that is located in some cytoplasm during some temporal
extent"
What inferences do you want to draw about the Protein? the Cytoplasm?
the History of each?
What inferences do you wish to make that you cannot make from the
simpler representations?
What else do you need to say that can be expressed with Histories
that cannot be expressed in the simpler representation?
where n,m are date-time expressions, for simplicity let us assume
integers representing milliseconds since some reference point.
Fair enough. A lot of the time you wouldn't have an ordinal scale
but rather a partial ordering, but this doesn't affect the design
pattern
Inn OWL 1.1 we can do quite a bit better - although again there is
a need for improved tools to make it easier.
* An organism has a given temperature at some point in an interval
anOrganism -->
has_feature SOME (Temperature_feature THAT
has_time_point SOME (has_coordinate SOME int[>=n, <m])
has_state...
* An organism has a given temperature throughout an interval.
(This has to be expressed as "Any temperature feature of the
individual anOrganism in the time interval has the given state"
Temperature_feature THAT
is_had_by VALUE anOrganism AND
has_time_point (Some has_coordinate SOME int[>=n, <m]) -->
has_state...
where is_time_point_of: inverse has_time_point
has_time_point: functional
Axiom: (Feature THAT has_time_point SOME Time_point) has_value
Max 1 State.
has_coordinate is used here with int since I am assuming it is
measured in "ticks since basepoint", but could equally well be a
float
Nevertheless the results are clunky and will need special tool
support[**] to avoid going insane. In general I am wary of design
pattern type things - they are usually a sign that the language
lacks the constructs required to express things unambiguously and
concisely.
Separate "unambiguously" and "concisely". Whether or not there is
something ambiguous about a design pattern depends on the case.
In this case I think there is no ambiguity. "Concisely" is a
matter for tools and layered "higher level languages".
The history of computing is the history of "design patterns" at
one level that eventually get built into "higher level languages"
at the next level of abstraction up.
I think I have a less optimistic view of progress in computer
science. For example, many of the paradigmatic GoF design patterns
are there to make up for deficiencies in the OO languages that
*succeeded* more expressive and abstract functional languages.
Change is not always monotonic improvement, but I'll maintain the
general point over the long trajectory of language and computing
development. Also it is not linear but a partial ordering. Not
everything from one branch affects the others.
Alan
No one would argue against layoring more convenient languages on
top of OWL ( or its successors). The patterns are a first step
towards this end, just as they were in the early days of
programming languages. Neither would anyone argue against more
expressive languages.
But I would argue that building on known, tested, and proven
semantics and computational methods is preferable to inventing new
ones. I'd rather spend my time on improving tooling for something
well-understood, standardised, and supported by a community of
specialists than on trying to invent something new on my own that
was likely to be none of these things. I'll invent when I have
to - when I am convinced that the best available methods do not
meet mission critical needs. But I take a lot of convincing, and
even if convinced I will build out from the well understood
foundations wherever possible, with just enough extra invention to
do what is required.
I don't think I would disagree here
I speak from experience. I've done both.
Regards
Alan
-----------------------
Alan Rector
Professor of Medical Informatics
School of Computer Science
University of Manchester
Manchester M13 9PL, UK
TEL +44 (0) 161 275 6149/6188
FAX +44 (0) 161 275 6204
www.cs.man.ac.uk/mig
www.clinical-esciences.org
www.co-ode.org
-----------------------
Alan Rector
Professor of Medical Informatics
School of Computer Science
University of Manchester
Manchester M13 9PL, UK
TEL +44 (0) 161 275 6149/6188
FAX +44 (0) 161 275 6204
www.cs.man.ac.uk/mig
www.clinical-esciences.org
www.co-ode.org