Модифицировать модель Jena, возвращённую D2RQ

D2RQ создает RDF-представление БД с использованием модели Jena.

Model m = new ModelD2RQ("file:outfile2.ttl");

Я знаю, что возвращаемая модель является моделью "только для чтения".

Следовательно, если я пытаюсь добавить ресурс в модель, я получаю исключение "jena.shared.AddDeniedException".

    Resource r1=m.createResource("http://www.stackru.com#34");
    r1.addProperty(RDF.type, ...); <-throws the exception

Как я могу отделить модель m от базы данных, чтобы я мог ее изменить? Я не хочу писать модель обратно, я просто использую D2RQ для получения DB-дампа на основе RDF, который я хочу обрабатывать дальше (я знаю, что такие расширения, как обновление D2RQ, позволяют модифицировать базу данных путем изменения графа RDF, но я не хочу модифицировать БД)

Спасибо

1 ответ

Решение

Возьмите копию, чтобы отключить модель от базы данных:

Model m = new ModelD2RQ("file:outfile2.ttl");
Model mCopy = ModelFactory.createDefaultModel() ;
mCopy.add(m) ;
mCopy.addProperty(...)

Другой способ - создать модель объединения, где часть в памяти является первой и обновляемой частью объединения.

Model m = new ModelD2RQ("file:outfile2.ttl");
Model extra = ModelFactory.createDefaultModel() ;
Model m2 = ModelFactory.createUnion(exrta, m2) ;
...
Другие вопросы по тегам