oldray / fuxi

Automatically exported from code.google.com/p/fuxi
0 stars 0 forks source link

Specialization (partial evaluation) of rules with second order predicates #25

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Currently, most of the inference heuristics do not support second order 
predicates (predicates symbols that are variables in RIF frames / positional 
terms: ?C(:Foo :Bar  )   ).  These, however in theory can be supported via 
specialization.  Consider the following from the third owl:oneOf OWL 
[http://www.w3.org/TR/owl-test/byFunction#function-oneOf test case]:

Source graph:

{{{
@prefix first: <http://www.w3.org/2002/03owlt/oneOf/premises003#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

 first:T2 owl:oneOf ( first:large first:medium first:small ). 

 first:myT a first:T1. 

 first:T1 owl:oneOf ( first:small first:medium first:large ). 
}}}

The following rule should apply to the query for first:T2(first:MyT):

{{{
Forall ?X ?C ?L ( ?C(?X) :- And( owl:oneOf(?C ?L) list:in(?X ?L) ) )
}}} 

In particular, for every statement in the OWL/RDF graph where the predicate is 
owl:oneOf, a specific rule can be generated for the subject (first:T2 in this 
case):

{{{
Forall ?X ?C ?L ( first:T2(?X) :- And( owl:oneOf(first:T2  ?L) list:in(?X ?L) ) 
)
}}}

Original issue reported on code.google.com by chime...@gmail.com on 28 Aug 2010 at 1:48

GoogleCodeExporter commented 9 years ago
See: 
http://code.google.com/p/fuxi/source/detail?r=df12fb3c5f1da45415efb62737ef678af8
a68327

Original comment by chime...@gmail.com on 7 Sep 2010 at 12:54