[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