ACTION-722: OWL 2 RL rules updated

As a result of action-722 I've done some updates to the OWL 2 RL 

This includes:

o updated to the current OWL 2 RL profile which has changed (in terms of 
rules, syntax and supported datatypes) since the last update to our document

o updated the RIF rules to include rule names which match that of the 
corresponding rule names in the OWL 2 RL document

o updated the datatype rules to reflect the current state of DTB 
including the isLiteralOftype, isLiteralNotOfType and 
literalNotIdentical builtins

o changed all rules (including datatype rules) to be safe

o added a discussion on the issue of making the datatype rules safe

On the topic of safety (the original topic of the action) note that the 
new rule set is safe.

The original rule set included unsafe rules like:

   Forall ?l1 ?l2 ( ?l1[owl:sameAs->l2] ) :- ?l1 = ?l2 )

On the last telecon Jos pointed out this problem and I had suggested we 
could simply ground the literals in the source ontology:

   Forall ?l1 ?l2 ?s1 ?s2 ?p1 ?p2
    ( ?l1[owl:sameAs->l2] ) :- And(
             ?s1[?p1->?l1] ?s2[?p2->?l2] ?l1 = ?l2 ))

Jos correctly pointed out that this is not sufficient in general since 
there are valid OWL 2 entailments which involve literals not mentioned 
in the original ontology that this formulation misses out. However, the 
goal of the rule set, as described in [2], is merely to replicate the 
OWL 2 RL reasoning described by Theorem PR1 in [3]. This theorem limits 
the range of entailments that are to be checked in a way which excludes 
direct testing of equality, inequality and non-typing of literals.

I believe this observation not only allows for safe datatype rules but 
in fact means we can push some of the datatype rules into the calling 
rules in the rule set thus avoiding the generation of a quadratic of 
pointless literal owl:differentFrom facts.



Received on Sunday, 5 April 2009 21:23:54 UTC