Hello again! In order to 'setFunctorFiltering to false', I need a reasoner that implements ForwardRuleInfGraphI correct?
ForwardRuleInfGraphI seems to be the first place in the graph interface heiarchy where I see functors come into play. I've been creating my reasoner-backed OntModel using either OntModelSpec.OWL_MEM_RULE_INF and the ModelFactory, or ReasonerRegistry.getOWLReasoner(). I'm missing where the FBRuleInfGraph (Which does implement ForwardRuleInfGraphI) gets used. How do I get a hold of it in order to setFunctorFiltering to false? I think my understanding of how Jena structures it's reasoners is sort of lacking. I'm sure it will come with time. Thanks in advance for any insight you can offer! -- Mark Fischer Modeling & Analysis in Software Engineering Group School of Computing Queen's University On Mon, Oct 1, 2012 at 6:43 PM, Dave Reynolds <[email protected]>wrote: > On 01/10/12 17:03, Mark Fischer wrote: > >> Can anybody point me toward any documentation for the various Jena >> reasoners? >> > > There is no documentation beyond the reference manual you have already > seen, the javadoc, the code and this list :) > > > I'm using the Owl Ontology Model Spec OWL_MEM_RULE_INF. When I validate() >> and get a report, the type string and extension object are both reasoner >> dependant. >> >> I'd like to know what the list of possible 'types' are. >> > > The validation for the various OWL flavours are defined in the > corresponding rule sets included in the distribution. In your case see > /etc/owl-fb.rules or just go to: > > http://svn.apache.org/repos/**asf/jena/trunk/jena-core/etc/**owl-fb.rules<http://svn.apache.org/repos/asf/jena/trunk/jena-core/etc/owl-fb.rules> > > If you look at the bottom of that file there are a set of validation > rules. Each creates a triple of the form: > > ?culprit rb:violation F . > > Where F is a functor, either "warn" or "error". The arguments to those > functors are: > - the culprit > - an error message > - the implicated nodes > > The validation code in FBRuleInfGraph extracts the implicated nodes to > formulate the report string. > > If you need to access to these programatically you would need to trigger > validation yourself outside of the FBRuleInfGraph framework. This should be > possible. You'll need to: > > (1) setFunctorFiltering to false. > > (2) Create a trigger triple to switch on the validation rules: > > Triple validateOn = new Triple(Node.createAnon(), > ReasonerVocabulary.RB_**VALIDATION.asNode(), > Functor.makeFunctorNode("on", new Node[] {})); > > Add it to the graph and call prepare(). > > (3) List all triples of the form: > * ReasonerVocabulary.RB_**VALIDATION_REPORT * > > The value of each result will be a Functor (normally hidden from view but > the setFunctorFIltering will have disabled that hiding) from which you can > then extract the raw arguments. > > Dave > >
