TenaでJenaを使用しています。私は正常にトリプルを格納していますが、特定のプロパティ "isA"がTransitiveReasonerを推論に使うために推移的であることを指定する必要があります。プロパティを推移させる必要があります
次は私が使っている方法のいくつかである:
private void AddTriple(String arg1, String pred, String arg2) {
Resource r = m.createResource(NS + arg1);
Property p = m.createProperty(NS + pred);
Property p2 = m.createProperty(NS + arg2);
r.addProperty(p, p2);
}
private void addTest() {
AddTriple("cat", "isA", "feline");
AddTriple("feline", "isA", "mammal");
AddTriple("mammal", "isA", "animal");
m.close();
}
次のように私はモデルをロードしています:
Dataset dataset = TDBFactory.createDataset(directory);
m = dataset.getDefaultModel();
addTest();
次のように私は推論を設定しています:
Reasoner reasoner = ReasonerRegistry.getTransitiveReasoner();
InfModel inference = ModelFactory.createInfModel(reasoner, m);
推論モデルに含まれるもの:
<ModelCom {http://namespace/test#cat @http://namespace/test#isA http://namespace/test#feline; http://namespace/test#feline @http://namespace/test#isA http://namespace/test#mammal; http://namespace/test#mammal @http://namespace/test#isA http://namespace/test#animal} | >
"isA"プロパティが推移的であると指定されていないため、推論モデルには元のモデルとまったく同じトリプルが含まれています。 1がプロパティPが推移財産であることを定義した場合、これはペア(X、Yであればということを意味
cat isA mammal
cat isA animal
おかげで完全にOWLのReasonerを使用して動作します! – dscer
「公式」Apache Jenaのサポートは、jena-usersメーリングリストを介して、私たちに知らせてくれたことに感謝します。ここでメーリングリストの購読方法の詳細をご覧ください:http://incubator.apache.org/jena/help_and_support/ – castagna