Модифицировать модель 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) ;
...