I have an OWL class with the following Equivalence (in Manchester notation):
A
and not (hasB some
(B
and (hasC some C)
and (hasD some D)
and (hasList some
(OWLList
and (hasContents some
(OWLList
and (hasContents some
(E
and (hasValue some integer[< 200])
and (hasType value "xsd:integer"^^string)))
and (hasNext some EmptyList)))
and (hasNext some EmptyList)))))
I wish to enforce closed-world reasoning on this class so that any individual that does not fulfil the remainder of the condition after the not
statement will be a member of this class.
To this end I have tried making the hasC
, hasD
and hasList
properties functional so that OWL knows it is not possible for there to be other instances of these properties attached to this class.
Unfortunately it is possible for the hasB
property to occur more than once so this cannot be restricted. To try and 'close' this part of the class I have added a oneOf
statement in the B
class specifying all possible individuals that the B
class may accept.
To my mind this combination of Functional properties and oneOf
statement should successfully 'close' the class. Can anyone advise me as to what I am doing wrong?
I am using the OWLList class and associated properties proposed by http://owl-workshop.man.ac.uk/acceptedLong/submission_12.pdf.
Many Thanks.