Jena Graph から個人の名前を抽出する際に問題に直面しています (一般的なルールの Reasoner を使用した RDF 推論モデルと OntSpec は RDFS_MEM_RDFS_INF です)。単純なケースかもしれませんが、これを行うための適切なチュートリアルをオンラインで見つけることができません (jena ルールの新機能)。この場合に呼び出す適切な API は何ですか?
infStmts = pModel.listStatements().filterKeep( new Filter<Statement>() {
@Override
public boolean accept(Statement o) {
boolean ex = false;
Property prop1 = pModel.getProperty(prefix + "hasPropertyP1");
String predicateName = o.asTriple().getPredicate().getLocalName();
if(predicateName.equalsIgnoreCase(prop1.getLocalName()) )
ex = true;
return ex;
}
});
Statement s = infStmts.next();
Statement st = ResourceFactory.createStatement(s.getSubject(), s.getPredicate(), s.getObject());
System.out.println(st.getSubject().toString() + "****" + pModel.getRDFNode(st.getSubject().asNode()).as(Individual.class));
Exception in thread "Thread-37" com.hp.hpl.jena.ontology.ConversionException: Cannot convert node 4e62503a:14b01762f42:-7eea to Individual
at com.hp.hpl.jena.ontology.impl.IndividualImpl$1.wrap(IndividualImpl.java:61)
at com.hp.hpl.jena.enhanced.EnhNode.convertTo(EnhNode.java:152)
at com.hp.hpl.jena.enhanced.EnhNode.convertTo(EnhNode.java:31)
at com.hp.hpl.jena.enhanced.Polymorphic.asInternal(Polymorphic.java:62)
at com.hp.hpl.jena.enhanced.EnhNode.as(EnhNode.java:107)
...
Jena ルール ファイルには次のルールがあります。
[rule: ( :Subject1 :hasPropertyP2 :Object1) ->
( ?x rdf:type :Class1)
( ?x :hasPropertyP1 :Object2)]
個人の名前に関して ?x の値が必要です