For more informations see here:
Apache Jena - Reasoners and rule engines: Jena inference...
Reasoners and rule engines: Jena inference support This section of the
documentation describes the current support for inference available within
Jena.
Afficher sur jena.apache.org Aperçu par Yahoo
Zahir KALI
Master 2 Architecture et ingénierie de logiciel et de web
Université Montpellier 2
Tel: 06 73 81 06 08
Github: https://github.com/ZahirKali?tab=repositories
Le Vendredi 7 novembre 2014 12h50, Zahir Kali <[email protected]> a écrit :
No, your rules are in Jena rules format.
The problem is that your rules are in Jena format but in the code, you are
calling the OWL reasoner.
Solution:
Call the GenericReasoner instead of the OWL reasoner. Like this:
String rules = [AddingJim: ->
(sf:Jim rdf:type sf:Person)
(sf:Jim sf:hasMembership sf:True)
]
Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rules));
Zahir KALI
Master 2 Architecture et ingénierie de logiciel et de web
Université Montpellier 2
Tel: 06 73 81 06 08
Github: https://github.com/ZahirKali?tab=repositories
Le Vendredi 7 novembre 2014 12h42, "Iturraspe Barturen, Urtza"
<[email protected]> a écrit :
First of all, thanks for your response...
My rule follows this format:
https://wiki.csc.calpoly.edu/OntologyTutorial/wiki/AddingRulesToOntologiesWithJena
[DescriptionOrNameOfRule:
(condition to be met)
(another condition)
->
(fact to assert)
(another fact to assert)
]
Example:
[AddingJim:
->
(sf:Jim rdf:type sf:Person)
(sf:Jim sf:hasMembership sf:True)
]
In my case I add a type of Continent ..
[AddingContinent:
->
(places:XXX rdf:type places:Continent)
]
I think so that rule is in OWL format, isn't it?
Best regards,
OPTIMA - Optimization Modelling & Analytics Area
ICT - European Software Institute Division
TECNALIA
Parque Tecnológico de Bizkaia, Edificio 202
E-48170 Zamudio (Spain)
mov.: 664 00 21 51
tel.: 902 760 002 / 946 430 850 (International
calls) [email protected]
www.tecnalia.com
-----Mensaje original-----
De: Zahir Kali [mailto:[email protected]]
Enviado el: viernes, 07 de noviembre de 2014 12:36
Para: [email protected]
Asunto: Re: Jena Rules and OSGI
Your rules are in OWL format?
As i see, you are extending an OWL reasoner but you want use Jena rules format.
Zahir KALI
Master 2 Architecture et ingénierie de logiciel et de web Université
Montpellier 2
Tel: 06 73 81 06 08
Github: https://github.com/ZahirKali?tab=repositories
Le Vendredi 7 novembre 2014 12h14, "Iturraspe Barturen, Urtza"
<[email protected]> a écrit :
Good morning,
I am working with Jena SDB and OSGI, developing with Eclipse and Bnd Tools
plugin.
I want to execute a Jena rule and include infModel to JenaSDB Model, but It
doesn't work in a REST service using OSGI.
I have tested the code and it's works well if I don't use this in a OSGI bundle
...
I've create OSGI bundle for this versions of jars:
com.mysql.jdbc-5.1.22.jar
slf4j.log4j12-1.6.4.jar
xml-apis-1.4.1.jar
xercesImpl-2.10.0.jar
com.ibm.icu-54.1.1.jar
com.hp.hpl.jena.iri-0.8.0.jar
com.hp.hpl.jena.jena-2.6.4.jar
com.hp.hpl.jena.arq-2.8.7.jar
org.apache.jena.jena-iri-0.9.6.jar
com.hp.hpl.jena.sdb-1.3.4.jar
org.apache.jena.jena-core-2.7.4.jar
Any help, idea ?
The jena rule is very simple:
@prefix places: http://purl.org/ontology/places# @prefix rdfs:
<http://www.w3.org/2000/01/rdf-schema#>.
@prefix owl2: <http://www.w3.org/2006/12/owl2#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
[AddingContinent: ->(places:XXX rdf:type
places:Continent)]
I have this code:
Model modelSDB = null;
InfModel owlInfModel = null;
InfModel rulesInfModel = null;
modelSDB = jenaSDBConector.loadModelSDB(databaseName);
File file = new File(System.getProperty("java.io.tmpdir", null),"jena.rules");
try{
if (!file.exists()) {
file.createNewFile();
}
}catch(Exception e){
System.out.println(e.getMessage());
}
// get the content in bytes
byte[] contentInBytes = jenaRule.getBytes();
FileOutputStream fop = new FileOutputStream(file);
fop.write(contentInBytes);
fop.flush();
fop.close();
Reasoner reasoner = ReasonerRegistry.getOWLReasoner();
owlInfModel = ModelFactory.createInfModel(reasoner, modelSDB);
Resource conf = modelSDB.createResource();
conf.addProperty(ReasonerVocabulary.PROPruleMode, "forwardRETE");
conf.addProperty(ReasonerVocabulary.PROPruleSet, "/tmp/" + "jena.rules");
reasoner = GenericRuleReasonerFactory.theInstance().create(conf);
rulesInfModel = ModelFactory.createInfModel(reasoner, modelSDB);
rulesInfModel.prepare();
Model deductionModel = rulesInfModel.getDeductionsModel(); -> DEDUCTION
MODEL IS EMPTY !!!!!!???????
StmtIterator i = deductionModel.listStatements();
while (i.hasNext()) {
System.out.println(" - " + i.nextStatement() + "\n");
}
modelSDB.add(rulesInfModel);
modelSDB.commit();
bResult=true;
Thanks in advance
Urtza Iturraspe
OPTIMA - Optimization Modelling & Analytics Area
ICT - European Software Institute Division
TECNALIA
Parque Tecnológico de Bizkaia, Edificio 202
E-48170 Zamudio (Spain)
mov.: 664 00 21 51
tel.: 902 760 002 / 946 430 850 (International calls)
[email protected]<mailto:[email protected]>
www.tecnalia.com<http://www.tecnalia.com/>