0

私は、Jena freamwork を使用していくつかのルールを作成する必要があるプロジェクトに取り組んでいます。

ルールを作成しましたが、正常に機能します。画面に出力が表示されますが、私がやりたいのは、結果を私が持っているオントロジーのモデルに保存することです。

私はこのコードを持っています:

@prefix ex: <http://www.semanticweb.org/prova_rules_M#> . 
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@include <OWL>
[pippo:
(?p http://www.semanticweb.org/prova_rules_M#anni_persona ?x)
         <- 
         (?p rdf:type ex:Persona)
         (?p http://www.semanticweb.org/prova_rules_M/persona#data_nascita ?c)
         myDiffDateYear(?c,"2014-06-18T00:00:00.0"^^xsd:dateTime,?x)
]

この例では、以前に作成したカスタム ビルトインを使用しています。2 つの日付の差の年数を返します。次のコードのおかげで、画面に出力が表示されます。

String percorsoFile ="./prova_rules_M_rdf.owl";
String ruleFile= "./prova_rules_M_rdf_7_diffDate.txt";

Model rawModel = ModelFactory.createDefaultModel();

//create a resource (empty model)
Resource configuration = rawModel.createResource();

// set engine mode
configuration.addProperty(ReasonerVocabulary.PROPruleMode, "hybrid");
// set the rules file
configuration.addProperty(ReasonerVocabulary.PROPruleSet, ruleFile);

List<Rule> rules = Rule.rulesFromURL(ruleFile);

GenericRuleReasoner reasonerRULE = (GenericRuleReasoner) GenericRuleReasonerFactory.theInstance().create(configuration);
reasonerRULE.setRules(rules);

Model modelRULE= FileManager.get().loadModel(percorsoFile);
//create the inference model
InfModel infModelRULE = ModelFactory.createInfModel(reasonerRULE, modelRULE);
//force starting the rule execution
infModelRULE.prepare();

//write down the result in RDFXML form
infModelRULE.write(System.out);

データ プロパティ「anni_persona」の結果をモデル内に (出力としてだけでなく) 書き込むにはどうすればよいですか?

ありがとうございました。

4

1 に答える 1