[Pellet-users] Problems with cardinality restrictions with cardinality > 1

Arthur Peters amp at singingwizard.org
Sun Nov 18 17:25:54 UTC 2007


I have a couple questions relating to how cardinality restrictions are
handled. I'm sorry if this question should be posted to a different
list instead. It is not Pellet specific. If I should post else where
just tell me.

I am having trouble with cardinality restrictions with cardinalities >
1. They don't seem to match any instances no matter what I do. I have
attached an examples that uses a basic "minCardinatlity" restriction.
I created the example using Protege 4.0 beta. (Eventually I want to
use exact cardinality restrictions and QCRs for my ontology, but I
need to figure out why the inference is not what I expect in this
simpler case before I do that.)

In TestCase.owl I have 3 classes of interest Group, AtLeast1Member and
AtLeast2Members. There are 3 Group instances Group0, Group1, and
Group2. Each group has a number of hasMember properties equal to it's
number (0, 1, or 2). So I would expect to have Group2 be in the class
AtLeast2Members. However pellet gives me:

$ bash pellet.sh -r -if TestCase.owl
Input file: file:/home/amp/pellet-1.5.1/TestCase.owl
OWL Species: DL
DL Expressivity: ALCF
Consistent: Yes
Time: 898 ms (Loading: 831 Species Validation: 37 Consistency: 13
Classification: 13 Realization: 4 )

Classification:

 owl:Thing
    testCase:Object - (testCase:Obj2, testCase:Obj1)
    testCase:Group - (testCase:Group0)
       testCase:AtLeast1Member - (testCase:Group1, testCase:Group2)
          testCase:AtLeast2Members


Non OWL-Lite features used:
Cardinality Restriction: minCardinality value is greater than 1
restriction(testCase:hasMember minCardinality(2))

For some reason AtLeast2Members is not being inferred as the class of
Group2. I have no idea why.

Does any one have any advice as to what I have done wrong?

I think I may have misunderstood the semantics of cardinality restrictions.

On a side note: I eventually want to write restrictions that use QCRs
to check that there are specific numbers of objects of various types.
For instance, I want to have a class of all Groups that has 2
hasMember properties to class A and 2 to class B. Can I write write
this as the intersection of "hasMember exactly 2 A" and "hasMember
exactly 2 B" or will that be a null set? In other words does
"hasMember exactly 2 A" mean "has exactly 2 hasMember properties and
they all connect to a member of class A" or does it mean "has exactly
2 hasMember properties that connect to a member of class A and any
number of other hasMember properties"?

Thanks a lot for your help.
-Arthur


-- 
Home page: www.singingwizard.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: TestCase.owl
Type: text/rdf
Size: 4189 bytes
Desc: not available
Url : http://lists.owldl.com/pipermail/pellet-users/attachments/20071118/e07e66e2/attachment.bin 


More information about the Pellet-users mailing list