GenericRuleReasoner を使用して、オントロジーの仮想事実を推測しています。GenericRuleReasoner は、 jena inference supportで説明するように、推論ルールを入力の Datalog ルールとして受け取ります。一般的な推論にアタッチされた DatalogRule の例を次に示します。
String rules = "[r1: (?e1 st:runningTask st:gic_eth0) -> (?e1 rdf:type st:dataFromEthernet2IP)]";
Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rules));
reasoner.setDerivationLogging(true);
InfModel inf = ModelFactory.createInfModel(reasoner, rawData);
このコードを自分のデータでテストしたところ、問題なく機能し、2000 の仮想事実が推測されました。ただし、このような空のノードを作成するために Datalog ルールを変更すると、
String rules = "[r1: (?e1 st:runningTask st:gic_eth0) -> (_:p rdf:type st:dataFromEthernet2IP)]";
推測された仮想事実のみを取得します。
GenericRuleReasoner のデータログ ルールの空白ノード表現に問題はありますか?