Как определить несколько доменов и диапазонов в Protégé?

Я новичок в Протеже. Я разрабатываю онтологию. Часть моих классов онтологии связана с другими классами отношением «имеет». Например:

Activity has Location
Household has Location
Intervention has CloseWork

Я объявил Activity, Household, Location, Intervention и CloseWork классами в Protege. Я объявил «имеет» как ObjectProperty. Чтобы показать отношения между классами, я задал домен и диапазон «имеет» ObjectProperty. Например: чтобы показать «Действие имеет местоположение», я задаю «Действие» как домен, а «Местоположение» — как диапазон. Я сохранил свою онтологию как синтаксис RDF/XML. Файл показывает мое свойство объекта «имеет», например следующее:

<owl:ObjectProperty rdf:about="www.ndssl.vbi.vt.edu/epidl#has">
    <rdfs:domain rdf:resource="www.ndssl.vbi.vt.edu/epidl#Activity"/>
    <rdfs:domain rdf:resource="www.ndssl.vbi.vt.edu/epidl#Household"/>
    <rdfs:range rdf:resource="www.ndssl.vbi.vt.edu/epidl#Location"/>
    <rdfs:domain rdf:resource="www.ndssl.vbi.vt.edu/epidl#Intervention"/>
    <rdfs:range rdf:resource="www.ndssl.vbi.vt.edu/epidl#CloseWork"/>
</owl:ObjectProperty>

Из приведенных выше операторов RDF невозможно выяснить, какой домен соединяется с каким диапазоном (например, Activity имеет местоположение). Пожалуйста, дайте мне знать, как это исправить.


person Beautiful Mind    schedule 15.01.2016    source источник


Ответы (1)


Вы не можете использовать rdfs:domain и rdfs:range таким образом. Говоря, что домен has состоит из Activity, Household и Intervention, вы фактически утверждаете, что каждый человек, использующий свойство has, является экземпляром всех трех этих классов одновременно. Это, вероятно, не то, что вы хотите.

Вместо этого вам нужно использовать ограничения OWL. В этом случае вам нужно ограничение owl:allValuesFrom. Вы выражаете их по классу, для которого они принадлежат. Так, например, в классе Activity вы должны выразить что-то вроде (в синтаксисе Черепахи):

  :Activity rdfs:subClassOf [ a owl:Restriction ; 
                              owl:onProperty :has ; 
                              owl:allValuesFrom :Location . ]

Это говорит о том, что если экземпляр класса Activity использует свойство has, значение этого свойства должно быть Location.

Промойте и повторите для других ограничений, специфичных для класса.

Альтернативой является использование более конкретных свойств, а не довольно бессмысленного общего отношения «имеет». Например:

:hasLocation a owl:ObjectProperty ;
         rdfs:range :Location .

:hasCloseWork a owl:ObjectProperty ;
         rdfs:domain :Intervention ;
         rdfs:range :CloseWork .

Дополнительным преимуществом этого подхода является то, что ваши данные становятся семантически богаче и их легче запрашивать (при условии, что это то, что вы захотите сделать в какой-то момент в будущем).

person Jeen Broekstra    schedule 15.01.2016