- From: Graham Klyne <GK@Dial.pipex.com>
- Date: Thu, 02 Nov 2000 13:27:44 +0000
- To: RDF interest group <www-rdf-interest@w3.org>
Folks,
I'd like to thank those of you who responded to my earlier comments about
using contexts to model classes of objects. As a result of comments
received, I'm feeling more confident about pursuing the idea of contexts
(or statement sets) that are also classes.
However, I'm still having problems with finding a sufficiently flexible
mechanism to bind "prototype" statements into an instance of some
class. The solutions I've seen posted so far assume that the statements
apply directly to an instance of the class in which they are defined. I
think this is too restrictive for defining complex relationships and
prototyping structures; e.g. Tom (if Iunderstand correctly) has proposed
something like:
[FordEscort] --rdf:type---> [rdfs:Class]
[ ] --bodyStyle--> "HatchBack"
[ ] --fuelType---> "Petrol"
and
[MyCar] --rdf:type--------> [FordEscort]
[ ] --bodyColour------> "Red"
[ ] --engineCapacity--> "1600"
to create a description meaning something like:
[MyCar] --bodyStyle-------> "HatchBack"
[ ] --fuelType--------> "Petrol"
[ ] --bodyColour------> "Red"
[ ] --engineCapacity--> "1600"
This simple approach works only when the properties defined in the
[FordEscort] prototype are applied *directly* to an instance of that
prototype. In some of the modelling work we have tried to do, this kind of
direct linkage of all properties to an instance of a type is too
constraining to be practically useful. This is one of my motivations for
trying to use contexts, so that I can create a high-level description of
MyCar and subsequently refine the parts:
[MyCar] --rdf:type--> [FordEscort]
[ ] --asserts--->
{
[TheBody] ----colour----> "Red"
[TheEngine] --capacity--> "1600"
:
(etc.)
}
(Using here the notation "[<context>] --asserts--> {<StatementSet>}" to
capture the idea of a collection of reifications of statements that are
asserted to be true in the subject context.)
This structure allows us to make statements about entities that may be
directly or indirectly related to [MyCar], without necessarily having to
know up-front the nature of that relationship. It allows us to make
statements about what we know, without having to make up arbitrary (and
probably flawed) statements about what we don't know. It is my conviction
that enabling such an incremental approach to information modelling will be
extremely powerful for dealing with complex relationships.
So, what's missing? It comes back to defining ways to relate prototype
statements to a specific instance of a class. Brian has made an
imaginative proposal, based on a "logic" of type matching between the
prototype and the instance context. I feel this is still to restrictive.
I am thinking about the discussion of "anonymous" resources, and also
comments made by Pat Hayes on the RDF-logic list
<http://lists.w3.org/Archives/Public/www-rdf-logic/2000Oct/0112.html>,
<http://lists.w3.org/Archives/Public/www-rdf-logic/2000Oct/0122.html>. I
think Pat has it right: that what is required is a way to introduce
"proper names" that have a common (but unspecified) referent within some
range of use (not lexically defined), and which may be bound to different
globally unique names (URIs) in different contexts.
This would lead to my example becoming something like this:
[FordEscort] --rdf:type---> [rdfs:Class]
[ ] --rdf:Type---> [Context]
[ ] --asserts---->
{
[Body] ----style-----> "Hatchback"
:
[Engine] --fuelType--> "Petrol"
:
(etc.)
}
[MyCar] --rdf:type--> [FordEscort]
[ ] --asserts---> [FordEscort]
[ ] --asserts--->
{
[Body] -------bindTo----> [TheBody]
[Engine] -----bindTo----> [TheEngine]
:
[TheBody] ----colour----> "Red"
[TheEngine] --capacity--> "1600"
:
(etc.)
}
(The presentation is clumsy; at this time I am merely trying to illustrate
the idea of binding proper names used in one context to specific resources
described in another.)
Here, the property 'asserts' with a context as its object is used to state
that all statements asserted in the object context are also asserted in the
subject context. The 'bindTo' property is used to assert an equivalence
between two names (within the context containing that assertion).
All this presupposes the introduction of a resource identifier form along
the lines of "proper names", which may be regarded as a departure from
conventional RDF/WEB thinking.
#g
------------
Graham Klyne
(GK@ACM.ORG)
Received on Thursday, 2 November 2000 07:36:20 UTC