RE: Repeated use of same property in Restricitions for same Class

Hi Bijan,

Thanks for your quick response!

It seems that I am caught between the devil and the deep blue sea. It is
hard to believe that OWL doesn't fully support something fundamental as
cardinalities :-(

The someValuesFrom doesn't work for me, because I need all the QCRs that you
can think of.

Would you do me a favor and show how to represent in OWL 1.1 style:
"Any member of the Pump class hasAsPart:
	- 2 to 6 members of the Bearing class
	- 1 member of the Casing class
	- 0 to 1 member of the VibrationMonitor class "
(the list goes on and on, so a workaround with subproperties is not viable,
because we have thousands of classes as well)

This will be very helpful!


PS1 I tried to find owl:onClass or onClass you used below in that family
stuff, but it wasn't anywhere in your documents.
PS2 What is the target date for the Recommendation status of OWL 1.1?

-----Original Message-----
From: [] On
Behalf Of Bijan Parsia
Sent: Tuesday, April 10, 2007 10:33
To: Hans Teijgeler
Cc: SW-forum
Subject: Re: Repeated use of same property in Restricitions for same Class

On Apr 10, 2007, at 9:06 AM, Hans Teijgeler wrote:

> Hi,
> I have a very basic question about owl:Restriction, and I cannot find 
> the answer in the Recs.
>  The question is as follows:
> Assume you have a class Carpenter, and you want to define the kind of 
> tools a carpenter should have, e.g. one or more hammers and one or 
> more saws.

I'm going to speak primarily from the OWL DL perspective.

Generally, what you want is called "qualified cardinality restrictions".
E.g., the ability to say that a hand "has" exactly 4 fingers and one thumb
(and five digits overall). This feature was a part of DAML+OIL, but *not* of
OWL, but *is* a feature of OWL 1.1 (and one of the key motivators for OWL

> Is it allowed to use the same property "hasAsTool" in more than one 
> Restriction for that Carpenter class?

You, of course, can use hasAsTool in more than one restriction, but it's
difficult (practically impossible) to achieve the effect you are looking
for. See:
(it's not completed or fully reviewed, and mooted by OWL 1.1, but it might
provide some insight.)

> So in this example:
>     <owl:Class rdf:ID="Carpenter">
>         <rdfs:subClassOf>
>             <owl:Restriction>
>                 <owl:onProperty rdf:resource="#hasAsTool"/>
>                 <owl:allValuesFrom rdf:resource="#Hammer"/>
>                 <owl:minCardinality
> rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
>             </owl:Restriction>
>         </rdfs:subClassOf>

This is not legal OWL DL. Bascially you cannot overload the bnodes.  
Even if you allowed it *syntactically* it would be *interpreted* as distinct
constraints, I think. I guess this is what happens in owl full.

>         <rdfs:subClassOf>
>             <owl:Restriction>
>                 <owl:onProperty rdf:resource="#hasAsTool"/>
>                 <owl:allValuesFrom rdf:resource="#Saw"/>
>                 <owl:minCardinality
> rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
>             </owl:Restriction>
>         </rdfs:subClassOf>
>     </owl:Class>
> I think it is correct, but I need to know for sure.

No. Even as legal OWL Full I don't think it captures your modeling intent.
Basically, you'll get that every tool a carpenter has is
*both* a hammer and a saw.

But you don't need full QCRs to express this. Two somevaluesfrom do the job.
(A carpenter has to have at least one Hammer and one Saw.  
It's if you want to express that she must have *AT MOST* one of each that
things get messy without QCRs).

Here's an example of a QCR in the RDF mapping of OWL 1.1, taken from


    <owl:Class rdf:about="#PersonWithAtLeastTwoMaleChildren">
             <owl:onProperty rdf:resource="#hasChild"/>
             <owl:onClass rdf:resource="#Male"/>

(Uhm...this is a bit old...the onClass will be in a different namespace for
the moment.)

Hope this helps.

For more OWL 1.1 details.

(And for this level of OWL question, the more natural forum is


No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.446 / Virus Database: 269.0.0/754 - Release Date: 09-Apr-07

No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.5.446 / Virus Database: 269.0.0/754 - Release Date: 09-Apr-07

Received on Tuesday, 10 April 2007 11:27:12 UTC