Suppose I have the classes:
> Element
> ElementProperty
With the subclasses of elementProperty
being:
> AtomicNumber
> AtomicMass
Also consider the following object properties and their domains and ranges:
> hasElementProperty
Domain:Element
Range:ElementProperty
Where hasElementProperty
has the following sub-properties:
> hasAtomicNumber
Domain:Element
Range:AtomicNumber
> hasAtomicMass
Domain:Element
Range:AtomicMass
So this way when I say :Lithium :hasAtomicNumber :3
the triple :Lithium :hasElementProperty :3
will be inferred, where :3
is an instance of the AtomicNumber
class.
Okay so now consider the case where I have the data property hasElementName
and I also want it so that when I have the triple :Lithium :hasElementName "Lithium"
the triple :Lithium :hasElementProperty "Lithium"
is inferred. This isn't possible with the way I have it set up now as hasElementName
is a data property and thus cannot be a sub-property of the object property hasElementProperty
.
I have tried using Literal Reification (see Literal Reification) with success, but I feel like there may be a better way to do this as literal reification's purpose is so one can use literals as objects, and that's not what I need to do.
Any ideas would be greatly appreciated.
Thanks