owl: allValuesFrom и rdfs: разница в диапазоне
Я работаю над семантическими сетями, и мне интересно: есть ли разница в семантике написания ограничения, такого как:
:Person
a owl:Class ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:onProperty :hasParent ;
owl:allValuesFrom :Person
] .
и написание ограничения диапазона, например:
:hasParent rdfs:range :Person.
мне кажется, что это означает то же самое: у родителя должен быть тип человека. Разве нет никакой разницы?
3 ответов
первый фрагмент означает, что :Person
у кого есть родитель обязательно есть :Person
-родителя. Однако,:Dog
может иметь родителя, который не :Person
, например. Второй фрагмент говорит, что все, у кого есть родитель, обязательно имеет :Person
- parent, независимо от того, что это такое.
редактировать после комментария krajol это:
на allValuesFrom
ограничение первого фрагмента не эквивалентно:
:hasParent rdfs:domain :Person;
rdfs:range :Person .
в случае allValuesFrom
ограничение, все еще возможно, что есть родители, которые не являются людьми. В случае rdfs:domain
/rdfs:range
комбинация, это невозможно. С allValuesFrom
ограничения, можно сказать, что у людей есть человек-родители и что у собак есть собака-родители и т. д. С доменом / диапазоном вы не можете.
есть еще одно отличие, которое стоит отметить. Когда в классе более одного тройного rdfs:range (или rdfs: domain), диапазон или домен-это вместе (пересечение) указанных диапазонов/доменов. См.спецификация RDFS, хотя формулировка неоднозначна, и этот пост.
Если вывод выполняется в онтологии, вы обнаружите, что тройки rdfs:range/domain выводятся для всех суперклассов указанного класс(ы) диапазона/домена. Хотя это семантически правильно, это может быть запутанным или трудным для работы. Этого не случится с allValuesFrom.
(добавление ответа на уже ответленный вопрос, так как я обнаружил, что сущность принятого ответа отсутствует.)
[ a owl:Restriction ;
owl:onProperty :hasParent ;
owl:allValuesFrom :Person
]
можно читать как " класс всех вещей, для которых любое значение для hasParent
предикат (потенциально none) имеет тип Person
".
сказав, что Person
является подклассом этого класса, мы говорим, что это более специализированная версия этого класса. Итак,Person
все еще может иметь только другие Person
S как значение для hasParent
.
в отличие от rdfs:range
потому что мы не делаем никаких заявлений о действительных домен/диапазон . Чтобы рециркулировать Антуана, мы все еще можем сказать:
:dog1 a :Dog.
:dog2 a :Dog.
:dog1 :hasParent :dog2.