- From: Enrico Franconi <franconi@cs.man.ac.uk>
- Date: Sun, 30 Jun 2002 19:52:42 +0100
- To: <www-rdf-logic@w3.org>
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