Nothing Special   »   [go: up one dir, main page]

Re: properties as nodes etc.

Tim Finin <finin@cs.umbc.edu> writes:
> Pat describes a very common way to encode n-ary relationships
> using binary relations in the context of natural language
> processing. I think of his example as underlyingly being a four
> argument relationship, with the fourth argument being the
> identifier of the "anonymous node" in RDF.  Thus, one can have two
> (indefinite) descriptions
>
>   a sitingsOn with agent=cat, object=mat, duration=hour.
>   a sitingsOn with agent=cat, object=mat, duration=hour.
>
> and it's ambiguous as to whether these two descriptions are of the
> same or different events.  Each would be encoded as a different
> individual of type sittingOn.  If we wanted to support this, which
> again can be motivated by the demands of modeling the semantics of
> natural language expressions, how would you do it?

That's really easy: you do in the way proposed by Pat. The point is
that in this way you are simply describing the (independent)
properties of an instance: different instances may have the same
properties. That's absolutely normal in any class-based representation
formalism. 

What is hard is to encode truly n-ary relations in a representation
formalism having only binary relations. You need a rich language to
constraint the uniqueness of the identifier given the values of the
properties. This would be a genuine reification of a n-ary relation
into a class: you want each instance of the class to represent a
unique tuple in the n-ary relation, and each tuple in the n-ary
relation being represented by a UNIQUE instance of the class. In this
way, instances of the class and tuples would be truly interchangeable:
the essence of reification.

Let's call R the n-ary relation, RC the class which reifies R, and ri
the i-th property of RC in correspondence with the i-th argument of R.
The following would be the additional constraint that RDF is unable to
state, but that is necessary to properly encode the n-ary relation:

\forall x1...xn . R(x1,...,xn) <--> 
    \exists-unique z . RC(z) \and r1(z,x1) \and ... \and rn(z,xn)

On June 30, Seth Russell writes:
> if you want to expliticidly designate that each event is unique,
> then give it a uri, instead of leaving the node anonymous.
> Otherwise just continue to add restrictions until only one such
> event can qualify.  I guess I don't see the problem.

In this way you impose by hand the above uniqueness constraint, by
explicitly writing the URI for the unique event. But does this URI
really exist? Most of the time it is just a fictitious object of which
you want just to state the existence. This would correspond to FORCE
any user of a database to have an EXPLICIT key for each n-ary
relationship: most of the time you don't have it -- it is just the
combination of the keys of the participating entities.

cheers
-- e.

Enrico Franconi                     - franconi@cs.man.ac.uk
University of Manchester            - http://www.cs.man.ac.uk/~franconi/
Department of Computer Science      - Phone: +44 (161) 275 6170
Manchester M13 9PL, UK              - Fax:   +44 (161) 275 6204

Received on Sunday, 30 June 2002 14:48:27 UTC