RDF として OWL オントロジー ファイルがあり、データを TDB に保存し、推論を使用したいと考えています。実際、これは今のところ単純に聞こえます:)
しかし、ここに私が混乱している点があります:
TDB を作成し、いくつかのステートメントを SPARQL 経由で保存しました。次に、モデルと OWL Reasoner を介して TDB をロードしようとしました。
OntModelSpec ontModelSpec = OntModelSpec.OWL_MEM;
Reasoner reasoner = ReasonerRegistry.getOWLReasoner();
ontModelSpec.setReasoner(reasoner);
Model schemaModel = FileManager.get().loadModel("D:/Users/jim/Desktop/ontology/schema.rdf");
OntModel schema = ModelFactory.createOntologyModel( ontModelSpec, schemaModel);
Location location = new Location("D:/Users/jim/Desktop/jena-fuseki-0.2.5/DB");
Dataset dataset = TDBFactory.createDataset(location);
Model model = dataset.getDefaultModel();
OntModel ontModel = ModelFactory.createOntologyModel(ontModelSpec, model);
API 経由で新しいリソースを作成すると、TDB に保存されません。そして、SPARQL を介して追加されたステートメントを確認できませんか?! SPAQRL ステートメントには、SPARQL で追加したエントリのみが表示されます
QueryExecution qExec = QueryExecutionFactory.create(
StrUtils.strjoinNL("SELECT ?s ?p ?prop",
"WHERE {?s ?p ?prop}"),
dataset) ;
ResultSet rs = qExec.execSelect() ;
try {
ResultSetFormatter.out(rs) ;
} finally { qExec.close() ; System.out.println("closed connection");}
これは、API で追加されたリソースのみを返します
System.out.print("インスタンス: " + ontModel.getResource(NS + "TestItem"));
そして、これを呼び出すと:
ExtendedIterator<Statement> iter = ontModel.listStatements();
次の例外が発生します。
誰かがその行動を説明できますか? または、OntModel を使用してスキーマと日付を TDB で正しい方法で分離する方法を教えてください。