как получить файл rdf с сервера jena fuseki и инициализировать его для моей модели OntModel в Apache Jena?

Я узнал, что вы можете извлечь файл rdf и инициализировать модель в Йене, используя следующие коды:

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


person Cora Contrabida    schedule 07.02.2015    source источник
comment
спасибо за быстрый ответ @AndyS, извините за неполный вопрос. ошибка: Incompatible types: Model cannot be converted to OntModel   -  person Cora Contrabida    schedule 07.02.2015
comment
См. ModelFactory, в которой есть операции для создания OntModels из простых.   -  person AndyS    schedule 09.02.2015


Ответы (1)


Вы, вероятно, не можете получить OntModel напрямую из Fuseki, однако вы можете сохранить модель в локальном файле, а затем прочитать ее в OntModel. например.:

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);

Важно помнить, что вы должны указать OntModelSpec при создании OntModel (в моем случае используйте OWL_MEM) и убедитесь, что вы используете ту же спецификацию при сохранении OntModel в Fuseki. Мне потребовалось некоторое время, чтобы выяснить, что когда вы используете DatasetAccessor.putModel для помещения OntModel в Fuseki, он преобразует его в обычный rdf Model , и если вы не укажете OntModelSpec, он применит некоторые рассуждения при преобразовании, и вы обнаружите, что результат в Фусэки не совсем тот.

person Jizheng Wan    schedule 14.09.2017