RE: When to use object property vs datatype property

Hi Rinke,

Thanks for the very informative reply. It makes a lot of sense. Between your
and Toby's replies I think I'm making sense of it now. I agree that object
properties should be used as often as possible to keep all of the objects
connected and thereby resulting in a much more powerful knowledge based. You
are correct that all of my individuals are created through web forms. I
would be very keen on seeing an example of how you create the drop-down list
you refer to. Do you have an example of php code I could analyze to see if
that would be a workable solution for me? I really appreciate your help.
Thanks. kevin

-----Original Message-----
From: [] On
Behalf Of Rinke Hoekstra
Sent: Monday, July 20, 2009 12:48 AM
To: Toby A Inkster
Subject: Re: When to use object property vs datatype property

Hi Kevin,

I think you are being too strict. Indeed, if individuals are only created
through some web-form, there must be some way of adding relations between
them, or between individuals and data.

Why is it so hard to assert an object-property relation between e.g.  
an employee and company in a web-form?

I could easily create a drop-down list of all companies that exist in my
triple-store. This list will show the names of companies, but when one of
them is selected, and the form is submitted, is is actually the URI of the
company resource that is sent back to the form handler.

My rule of thumb is that I always use object properties, unless I don't want
to say anything more about the value of that property. For instance, if I
want to specify a 'name' that relates some person or company to a name, I
can just use a datatype property since I don't really need to say anything
else about the name.

But relating a company to a product is different, because it may be useful
for my application to say additional things about the product (e.g. price,
cost, weight, name, category etc.). I need something to group all these
additional things together, and therefore represent each product as an OWL
individual as well. The relation between company and product should then be
an object property.

(NB: a datatype property for 'has_product' on a company individual with the
value of the 'name' property of some product individual does not relate the
company to the product according to the RDF/OWL

Good luck,


On 19 jul 2009, at 10:15, Toby A Inkster wrote:

> On 19 Jul 2009, at 07:40, Kevin Jenkins wrote:
>> It's my understanding that object properties link individuals via a 
>> property and that datatype properties link individuals to data (such 
>> as form input). [...] I have many properties in my ontology such as 
>> has-company-name, has-software-product, is-employee-of etc . my guess 
>> is these must be datatype properties because somewhere (I guess a web 
>> form) somebody has to name the company, choose the software product 
>> category from a list, indicate who the employer is etc.
> That's not correct.
> An object property is a property that takes a resource (an object) as 
> its value. A datatype property is a property that takes a literal 
> (string, number, date/time, boolean, etc) as its value.
> e.g.
> <#kj> rdf:type foaf:Person ;
>      foaf:name "Kevin Jenkins" ;
>      foaf:mbox <> ;
>      foaf:mbox_sha1sum "d610935545bb79ad673d5a5e7bd45a11f9b12128" ;
>      foaf:knows <#alice> .
> In the above, foaf:mbox and foaf:knows are object properties, while 
> foaf:name and foaf:mbox_sha1sum are datatype properties. (rdf:type is 
> also logically an object property, though I think OWL treats it as a 
> special case.)
> --
> Toby A Inkster
> <>
> <>

Drs Rinke Hoekstra

Leibniz Center for Law      |  AI Department
Faculty of Law              |  Faculty of Sciences
Universiteit van Amsterdam  |  Vrije Universiteit
Kloveniersburgwal 48        |  De Boelelaan 1081a
1012 CX  Amsterdam          |  1081 HV Amsterdam
+31-(0)20-5253499           |  +31-(0)20-5987752             |


Received on Monday, 20 July 2009 09:10:49 UTC