Re: why are properties decoupled from classes

On Wed, 2005-10-26 at 10:20 +0100, Jon Hanna wrote:
> Xavier Noria wrote:
> > In RDFS and friends properties do not "belong" to classes, whereas in  
> > OOP normally they do. For instance, if you've got an instance of  
> > foaf:Person you cannot assume there's any assertion about  foaf:interest 
> > for him.
> 
> Look at it the other way around. If you could assume that there was a 
> foaf:interest assserted for every foaf:Person then any foaf:Person 
> without a foaf:interest asserted would be invalid, hence it would be 
> impossible to say anything about anyone without giving at least one 
> foaf:interest which you may neither know nor care about. An application 
> concerned with people's medical history will not care about the same 
> information as one concerned with their professional qualifications and 
> so on.

In this case you assume a database-style (closed-world) minimal
cardinality constraint is associated with the property foaf:interest. 
That you declare such an attribute does not necessarily mean that you
also declare such a constraint.

Also, in the case of SQL, when a column in a table is required to have a
value you need to assert an additional constraint (NOT NULL).

> 
> It *is* possible to say that, for example, all people have mothers, 
> however knowing that there is a single value for the 
> _ex:biologicalMother property of every person does not mean that you 
> will be informed as to who that person's mother is.

Here you are actually coupling the property with the class; you say
something about the property hasMother for the class Person.
So, you are actually making a case for properties belonging to classes.
The statement you are making cannot be modeled in RDFS, where properties
are truly decoupled from classes, but can be made in OWL through local
property restrictions, which is somewhere in the middle between
properties belonging to classes and them being totally decoupled.

For me it has also always seen strange that in RDFS properties do not
belong to classes. A Person can have an interest and you might want to
say something about this interest. To me it doesn't really make sense to
say "there is a property 'interest' and you can do with it whatever you
want".
Actually, it is kind-of dangerous to let people do with properties
whatever they want, because it may easily lead to incorrect modeling
when you allow constraint (e.g., rdfs:domain and rdfs:range).
What happens very often is that people want to restrict the domain of a
property. It seems reasonable to say:
interest rdfs:domain Person   (1)

Maybe you only care about persons which have interests. However, it
might turn out later that organizations may also have interests. If we
stick with the domain restriction (1), then every organization which has
an interest is actually inferred to be a Person.

Another example is the range constraint. One may want to use the same
property for different classes, but with a slightly different range.
It seems totally reasonable to say:
age rdfs:range xs:nonNegativeInteger

This seems to work quite well for the age (in years) of persons.
However, this does not work for, for example, the age of particles in a
particle accelerator.


Best, Jos

> 
> 
--
Jos de Bruijn, http://www.uibk.ac.at/~c703239/
+43 512 507 6475         jos.debruijn@deri.org

DERI                      http://www.deri.org/
----------------------------------------------
Patriotism is the willingness to kill and be killed for trivial reasons.
  - Bertrand Russell

Received on Wednesday, 26 October 2005 09:56:37 UTC