CWM gets math through builtins like math:cos which require extending RDF
to allow subject literals and using ad-hoc hooks for "intercepting" the
use of builtins as predicates:
@forSome :_g0 .
0.0 math:cos :_g0 .
:myDoor :hasHeight :_g0 .
(Thus, the reasoner can conclude :myDoor :hasHeight 1.0 .)
But can't the same thing be achieved through the OWL DatatypeRestriction?
:myDoor a [owl:onProperty :hasHeight; owl:someValuesFrom [owl:onDatatype
xsd:double; withRestrictions (mathx:cos 0.0)]]
Datatype restrictions are where OWL allows "hooks" where the reasoner
must have builtins to know about datatypes. The reasoner can conclude that
[owl:onDatatype xsd:double; withRestrictions (math2:cos 0.0)]]
is a singleton class which is equivalent to [owl:oneOf (1.0)]
and so
myDoor a [owl:onProperty :hasHeight; owl:someValuesFrom [owl:oneOf (1.0)]]
is equivalent to
myDoor a [owl:onProperty :hasHeight; owl:hasValue 1.0]
which is finally
:myDoor :hasHeight 1.0
This is all pretty convoluted, but it stays within the semantics of OWL
and relies in its given hooks for builtins (and could really use some
syntactic sugar to help out).
Has anyone looked at using DatatypeRestriction to get functions like
math:cos into OWL reasoners?
Thanks for any help,
- Jeff