Thank you Dave, in my use case i have implemented the brute force version. The problem is that all the rules infer. I want only the more specific deduction b="value3",
Olivier Le 31 déc. 2013 à 16:54, Dave Reynolds <[email protected]> a écrit : > On 31/12/13 15:35, Olivier Torres wrote: >> Hi, >> i have the following type hierarchy, from the more general to the more >> specific : >> A1, A2, A3, >> >> and the rules : >> if A1 then B= "value1" >> if A2 then B= "value2" >> if A3 then B= "value3" >> >> When a triple matches with A3 then the rules infer the triples : B= >> "value1", B= "value2", B= "value3". >> In my use case i want only the deduced triple B= "value3", >> Is someone know how to implement this behavior ? > > You have a couple of options. Either include the RDFS closure rules and write > your rules as backward rules [1] or include the type inference directly in > your own rules. > > A simple brute force version without need for transitive caching would be > something like: > > (?a rdfs:subClassOf ?b) (?b rdfs:subClassOf ?c) > -> (?a rdfs:subClassOf ?c) . > > (?a rdf:type ?c) (?c rdfs:subClass ?d) > -> (?a rdf:type ?d) . > > (?a rdf:type eg:A1) -> (?a eg:B "value1") . > (?a rdf:type eg:A2) -> (?a eg:B "value2") . > (?a rdf:type eg:A3) -> (?a eg:B "value3") . > > Dave > > [1] http://jena.apache.org/documentation/inference/#RDFSPlusRules >
