我知道您可以使用以下代码提取rdf文件并初始化为jena中的Model:
DatasetAccessor accessor = DatasetAccessorFactory.createHTTP("http://localhost:3030/ds/data");
Model updated = accessor.getModel();
但是当我尝试将它放在OntModel中时这样:
OntModel updated = accessor.getModel();
会产生如下错误:Incompatible types: Model cannot be converted to OntModel
当我尝试这样做时:OntModel model = (OntModel) accessor.getModel();
它仍然输出错误说:com.hp.hpl.jena.rdf.model.impl.ModelCom cannot be cast to com.hp.hpl.jena.ontology.OntModel
答案 0 :(得分:0)
您可能无法直接从Fuseki获取OntModel,但您可以做的是将Model保存在本地文件中,然后将其读入OntModel。 e.g:
OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
DatasetAccessor myDA = DatasetAccessorFactory.createHTTP("URL");
Model model = myDA.getModel("GRAPH");
File myFile = new File(_path);
try
{
PrintStream ps_Writer = new PrintStream(myFile);
_model.write(ps_Writer, "TTL").toString();
}
catch (FileNotFoundException ex)
{
}
ontModel.read(_path);
重要的是要记住,在创建OntModel(在我的情况下使用OntModelSpec
)时必须指定OWL_MEM
,并确保在将OntModel保存到Fuseki时使用相同的规范。我需要一段时间才能发现当你使用DatasetAccessor.putModel
将OntModel放入Fuseki时,它会将它转换为普通的rdf Model
,如果你没有特定于OntModelSpec,它将会在转换时应用一些推理,你会发现Fuseki的结果并不完全相同。