Search Mailing List Archives

Limit search to: Subject & Body Subject Author
Sort by: Reverse Sort
Limit to: All This Week Last Week This Month Last Month
Select Date Range     through    

[protege-owl] Cardinality restrictions in OWL

Jevon Wright j.m.wright at
Tue Aug 4 16:50:47 PDT 2009

Hi Matthew,

Thanks for your help. You're completely correct.

If I set all the Nodes to be distinct from each other, I can get the
maximum cardinality constraint to fail, i.e.
DifferentIndividuals(Node1 Node2 Node3 SampleContainer)

I can also change the open world nature of OWL into a closed world by
following the instructions at, in particular setting
SubClassOf(owl:Thing ObjectOneOf(Node1 Node2 Node3 SampleContainer)),
making all elements disjoint, and adding negative property assertions.
After all this, the minimum cardinality constraint will now fail.

Thanks again,


On Tue, Aug 4, 2009 at 10:16 PM, Matthew
Horridge<matthew.horridge at> wrote:
> Hi Jevon,
> In addition to what ED has said....
>> I'm trying to define an ontology in Protege 4.0/OWL which essentially
>> says that all Containers must contain at least two Nodes. I have
>> defined the following ontology:
>>  Declaration(Class(Container))
>>  SubClassOf(Container ObjectMinCardinality(2 contains Node))
>>  Declaration(Class(Node))
>>  Declaration(ObjectProperty(contains))
>>  ObjectPropertyDomain(contains Container)
>>  ObjectPropertyRange(contains Node)
>> If I only create the one Container individual and no Node individuals,
>> and ask the FaCT++ reasoner to execute over this ontology, no error
>> occurs, even though I have defined a Container individual which does
>> not contain any Nodes.
> You haven't explicitly said that there are no nodes.  If you did this then
> your ontology would be inconsistent.  As it is, since the individual is an
> instance of Container, we know it has two nodes, but we just don't know what
> they are.
>> Approaching from another angle, if I change container to restrict the
>> maximum number of contained nodes to 2, and create three individual
>> nodes contained within it:
>>  SubClassOf(Container ObjectMaxCardinality(2 contains Node))
>>  ObjectPropertyAssertion(contains SampleContainer Node1)
>>  ObjectPropertyAssertion(contains SampleContainer Node2)
>>  ObjectPropertyAssertion(contains SampleContainer Node3)
>> Reasoning with FaCT++ also produces no error, even though (I think)
>> this instance also clearly invalidates the OWL model I defined.
> Everything is fine here too.
> First, if you haven't said that Node1 - Node3 are nodes, then they could be
> Nodes or not Nodes.  Second, if you have stated that Node1 - Node3 are
> nodes, but haven't stated that they are not equal (using a
> DifferentIndividuals axiom) then any two, or all, of these node could be
> interpreted as the same object, so the ontology will not be inconsistent.
> Cheers,
> Matthew
> _______________________________________________
> protege-owl mailing list
> protege-owl at
> Instructions for unsubscribing:

More information about the protege-owl mailing list