- From: Jos de Bruijn <jos.debruijn@deri.org>
- Date: Wed, 26 Oct 2005 11:56:23 +0200
- To: Jon Hanna <jon@hackcraft.net>
- Cc: semantic-web@w3.org
- Message-Id: <1130320583.8923.29.camel@localhost.localdomain>
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