如何从jena fuseki服务器获取rdf文件并将其初始化为Apache Jena中的OntModel?

时间:2015-02-07 17:12:13

标签: java jena fuseki

我知道您可以使用以下代码提取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

1 个答案:

答案 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的结果并不完全相同。