presenting data models in RIF

Following up on the issue of whether RIF needs its own subclassOf thingie,
I would argue that in order to support exchange of data models (strongly
argued for by Gary and, as I understood at the last f2f, favored by
Christian) we also need a minimalistic way to specify domains and ranges.
Similar to RDF but, again, without RDFS's ad hoc assumptions (about
the globality of definitions, etc.).

As in the case of the rif:subclassOf relationship, RDFS and other systems
will be able to map their models into RIF and thus present (much of)
them for exchange.

What I have in mind is, again, minimalistic and shared by all languages
I know of. We need constructs like

abc[foo => xyz] or (abc[foo rif:hasType xyz], if you wish)

which say that class abc has a property foo. For any object in abc, the
value of this property must be a member of class xyz.
The semantics will support only the following axioms:

Inheritance:
    ?Cl[?Prop => ?Type] <- ?Cl rif:subclassOf ?SC and ?SC[?Prop =>?Type].

Relaxation:
    ?Cl[?Prop => ?Type] <-
                        ?SubType rif:subclassOf ?Type and ?Cl[?Prop =>?SubType].

One of the problems in RDFS is that a statement like ``foo rdfs:range bar''
says that 'bar' is always the range of 'foo'. One cannot say that in one
class the range of foo is bar, but in some other class it is something else
(perhaps completely unrelated to bar). Ditto with rdfs:domain.

Such global scoping is a no-no for OO languages. In particular, for PR
languages whose data model is based on Java. But with the above model, one
could state, say,

Person[name=>PersonName].
Dog[name=>String].
PersonName[first=>String, last=>String].

without problems. Here the range of name on objects in class Person is one
thing and on objects in class Dog some other thing.


RDFS and other systems can be directly mapped into the above model. To
capture RDFS semantics, one would add additional axioms. For instance, if
we add the class of everything, Object, then the globality of rdfs:range
and rdfs:domain are captured by these axioms:

Object[?P => ?T] <- ?P rdfs:range ?T.

Likewise, for rdfs:domain one would add

?D[?P => Object] <- ?P rdfs:domain ?D.




	--michael  

Received on Thursday, 16 August 2007 16:12:53 UTC