Как загрузить модель в памяти на основе онтологии с использованием фреймворка Jena?

Мне интересно, как из онтологии с использованием фреймворка Jena загрузить модель, в которой я получу точно такую ​​же семантику, определенную в онтологии. Я нашел об API онтологии Жана, дающем возможность работать с онтологическими моделями, классами и т. д.

Затем приводится следующий пример:

<owl:Class rdf:ID="DigitalCamera">
  <rdf:type owl:ObjectProperty />
</owl:Class>

Можно сделать:

Resource r = myModel.getResource( myNS + "DigitalCamera" );
OntClass cls = (OntClass) r.as( OntClass.class );

Однако я пытаюсь получить доступ непосредственно к классу/экземплярам DigitalCamera, а не через OntClass или Resource, как показано ниже:

DigitalCamera camera = new DigitalCamera();

Затем при поиске определенного свойства этой камеры я мог получить к нему прямой доступ и сосредоточиться на семантике данных, таких как DSL. Предлагает ли Jena такую ​​специализированную (сгенерированную?) структуру, представляющую любую онтологию?

Спасибо


person Alexandre Blanquart    schedule 10.02.2011    source источник


Ответы (1)


Существует концептуальная проблема с выполнением того, о чем вы просите, а именно: сила RDF заключается в гибкости модели данных. Иногда это выражается как «каждый может сказать что угодно о чем угодно». Другими словами, состояние вашего приложения полностью определяется тем, что находится на графике в любой момент времени. Предположим, что ресурс r в настоящее время имеет rdf:type foaf:Person, вполне возможно и законно изменить этот график так, чтобы r имел, скажем, rdf:type skos:Concept вместо этого. Или, на самом деле, быть и тем, и другим. Следовательно, использование какой-либо ORM для представления ресурса в виде неизменного класса Java Person или Concept рискует стать неполным или устаревшим. Вот (частично) почему Jena этого не делает: состояние в Jena полностью основано на том, что находится в графе RDF.

Тем не менее, если вы готовы принять этот риск или знаете, что в вашем приложении мало или совсем нет шансов, что сопоставление URI ресурсов с классами объектов Java радикально изменится, есть некоторые расширения Jena, которые могут вам помочь. В качестве примера я предлагаю рассмотреть JenaBean.

person Ian Dickinson    schedule 14.02.2011