0
私はJenaとOWL推論をしようとしています。JenaとのOWL推論(タートル形式)
package test;
import org.apache.jena.util.FileManager;
import org.apache.jena.util.PrintUtil;
import org.apache.jena.rdf.model.*;
import org.apache.jena.reasoner.Reasoner;
import org.apache.jena.reasoner.ReasonerRegistry;
public class Test {
public static void main(String[] args){
Model schema = FileManager.get().loadModel("file:/home/mica/Downloads/sparql/ontology.ttl");
Model data = FileManager.get().loadModel("file:/home/mica/Downloads/sparql/result.ttl");
Reasoner reasoner = ReasonerRegistry.getOWLReasoner();
reasoner = reasoner.bindSchema(schema);
InfModel infmodel = ModelFactory.createInfModel(reasoner, data);
Resource nForce = infmodel.getResource("<0762762P>");
System.out.println(nForce);
System.out.println("nForce *:");
printStatements(infmodel, nForce, null, null);
}
public static void printStatements(Model m, Resource s, Property p, Resource o) {
for (StmtIterator i = m.listStatements(s,p,o); i.hasNext();) {
Statement stmt = i.nextStatement();
System.out.println(" - " + PrintUtil.print(stmt));
}
}
}
例:スタートとして、私の目標は、教育機関がタイプdbo:EducationalInstitution
のであれば、それは(イエナドキュメントから適応)Javaコードがここにもdbo:institution
であるということを推測することだけです
@prefix dbo: <http://dbpedia.org/ontology/> .
@prefix ex: <http://ex.org/a#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dbf: <http://fr.dbpedia.org/resource/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<0762762P> rdf:type dbo:Event ;
dbo:status "En cours" ;
dbo:Place _:b0 .
_:b0 dbf:Ville "Rouen" ;
rdf:type dbo:EducationalInstitution ;
foaf:name "Université du Havre" .
そして、次のオントロジー:
@prefix dbo: <http://dbpedia.org/ontology/> .
@prefix ex: <http://ex.org/a#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#'> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dbf: <http://fr.dbpedia.org/resource/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
dbo:Event rdf:type owl:Class .
dbo:Place rdf:type owl:ObjectProperty ;
rdfs:domain dbo:Event ;
rdfs:range dbo:Event .
dbo:institution rdf:type owl:Class .
dbo:EducationalInstitution rdf:type owl:Class ;
rdfs:subClassOf dbo:institution .
dbo:Place rdf:type dbo:EducationalInstitution .
私のデータの
私が期待した結果が届かない: nForce *:
あなたのスキーマは奇妙です。 1. DBPediaオントロジーのクラスとして 'dbo:Place '。 2。あなたのオントロジーでは、オブジェクトプロパティとして宣言しました。しかし、あなたはこのトリプル 'dbo:Place rdf:type dbo:EducationalInstitution 'を追加しました。これは' dbo:Place'をOWL個人にも同様にします。どうして? – AKSW
次に、相対URIを使用しています。これは、絶対URIに解決されるような悪い習慣であるため、通常はドキュメントURIを名前空間として使用します。絶対URIで始まり、すでにあなたの問題を解決しているかどうかを確認する必要があります。 – AKSW
最後に、あなたの例では何が推測されると思いますか? – AKSW