Как определить несколько доменов и диапазон соединения в Protégé?
Я новичок в Protégé. Я занимаюсь разработкой онтологии. Часть моих онтологических классов связана с другими классами отношениями "имеет". Например:
Activity has Location
Household has Location
Intervention has CloseWork
Я объявил Activity, Household, Location, Intervention и CloseWork как классы в Protege. Я объявил "имеет" в качестве ObjectProperty. Чтобы показать отношения между классами, я установил домен и диапазон объекта "has" ObjectProperty. Например: чтобы показать "Активность имеет местоположение", я установил Активность в качестве домена, а Расположение в качестве диапазона. Я сохранил свою онтологию как синтаксис RDF/XML. Файл показывает мое свойство объекта has:
<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 есть Location). Пожалуйста, дайте мне знать, как это исправить.
1 ответ
Вы не можете использовать rdfs:domain
а также rdfs:range
в этом случае. Говоря, что домен has
состоит из Activity
, Household
а также Intervention
вы эффективно утверждаете, что каждый человек, который использует has
Свойство является экземпляром всех трех этих классов одновременно. Это, вероятно, не то, что вы хотите.
Вместо этого вам нужно использовать ограничения OWL. В этом случае вы хотите owl:allValuesFrom
ограничение. Вы выражаете это на классе, для которого они держат. Так, например, на уроке Activity
Вы бы выразили что-то с эффектом (в синтаксисе Turtle):
:Activity rdfs:subClassOf [ a owl:Restriction ;
owl:onProperty :has ;
owl:allValuesFrom :Location . ]
Это говорит о том, что если экземпляр класса Activity
использует has
свойство, значение этого свойства должно быть Location
,
Промойте и повторите для других ограничений класса.
Альтернатива состоит в том, чтобы использовать более специфические свойства, а не довольно бессмысленные общие отношения has. Например:
:hasLocation a owl:ObjectProperty ;
rdfs:range :Location .
:hasCloseWork a owl:ObjectProperty ;
rdfs:domain :Intervention ;
rdfs:range :CloseWork .
Дополнительным преимуществом этого подхода является то, что ваши данные становятся семантически более богатыми и их легче запрашивать (при условии, что это то, что вы захотите сделать в какой-то момент в будущем).