[Pellet-users] 3 dimensional subsumption
Michael Schneider
m_schnei at gmx.de
Thu May 31 21:17:07 UTC 2007
Hi, Steve!
sjtirtha wrote on Wed May 30:
> how can I subsume 3 dimensional thing? Example: A box has 3 length
(length,
> width, height).
> How can I define the concept that if a box A smaller than box B than
box A
> is subclass of box B ?
Not a subclass. I would think that boxA and boxB are instances of a
class Box. And you cannot subclass individuals.
> The box has 3 attributes with the same name (length). I don't use length,
> width, and height because the boxes can be defined differently.
I do not understand the last sentence.
Anyway, my way to model this would be the following:
1) Definition of a DataProperty 'hasLength' with a
global range of non negative real numbers.
2) Three subproperties of 'hasLength', called
'hasXLength', 'hasYLength', 'hasZLength',
which represent the three spatial dimensions.
3) A class 'Box', which is defined to be a subclass
of the intersection of the three cardinality=1 restrictions
on each of the 'has*Length' properties.
This means that each instance of a Box has
exactly one 'hasXLength', 'hasYLength' and 'hasZLength'.
4) An ObjectProperty pair 'isIncludedInBox'/'includesBox'
(inverse to each other), where 'isIncludedInBox'
is transitive and asymmetrical (OWL1.1),
and where the local range (allValuesFrom)
of both properties for a Box is a Box.
Now to the big question: How do I define the idea that an 'Box' instance
'boxA' is included in an instance 'boxB', if all three lengths of 'boxA'
are less then 'boxB'? I do not know how to do this in OWL. I would
define a rule for this the following way:
5) isIncludedInBox(?boxA, ?boxB) <-
Box(?boxA), Box(?boxB),
hasXLength(?boxA, ?xa), hasXLength(?boxB, ?xb),
hasYLength(?boxA, ?ya), hasYLength(?boxB, ?yb),
hasZLength(?boxA, ?za), hasZLength(?boxB, ?zb),
lessThan(?xa, ?xb), lessThan(?ya, ?yb), lessThan(?za, ?zb)
This seems to me to be expressable in SWRL (SWRL masters please check!),
because all my predicates are either
* declared OWL classes ('Box'), or
* declared OWL properties ('has*Length', 'isIncludedInBox'), or
* defined builtins ('lessThen'),
and all my variables stand for either individuals or datavalues.
But I don't know if this rule is DL-save (others here will know for
sure). If not, Pellet will probably spit it out with disgust. ;-)
Well, just a nice try...
Cheers,
Michael
More information about the Pellet-users
mailing list