Предположим, у нас есть класс с именем A
и DataProperty с именем hasRestriction
. В чем разница между этими утверждениями:
A SubClassOf (hasRestriction value 2)
A SubClassOf (hasRestriction exactly 2)
A SubClassOf (hasRestriction only 2)
Предположим, у нас есть класс с именем A
и DataProperty с именем hasRestriction
. В чем разница между этими утверждениями:
A SubClassOf (hasRestriction value 2)
A SubClassOf (hasRestriction exactly 2)
A SubClassOf (hasRestriction only 2)
TL;DR: прочитайте комментарии AKSW, они хорошие и лаконичные.
Полная версия. Ваш вопрос касается интерпретации выражений класса в Protégé. Protégé использует синтаксис OWL 2 Manchester для описания классов, и Protégé предполагает, что онтологии интерпретируются в соответствии с Прямая семантика OWL 2. Если свойство hasRestriction
является DataProperty в Protégé, то это означает, что hasRestriction
обозначает набор пар (x,y), где x — это индивидуум (элемент вселенной дискурса), а y — значение данных (например, число, строка, дата). В Protégé выражения класса используются для обозначения множества индивидуумов.
В предоставленных вами операторах есть три выражения класса:
hasRestriction value 2
hasRestriction exactly 2
hasRestriction only 2
Первый, hasRestriction value 2
, идентифицирует набор вещей, которые имеют свойство hasRestriction
со значением 2. Таким образом, если x принадлежит этому классу, то (x, 2) принадлежит к тому, что hasRestriction
обозначает. Если A
является подклассом этого класса, то тройка x rdf:type A
влечет за собой тройку x hasRestriction 2
.
Второй, hasRestriction exactly 2
, идентифицирует набор вещей, которые имеют ровно 2 значения для свойства hasRestriction
. Таким образом, если x принадлежит этому классу, то существуют два различных значения v и w, такие что (x, v) и (x,w) относятся к тому, что обозначает hasRestriction
. Если A
является подклассом этого класса, то тройка x rdf:type A
влечет за собой тройки x hasRestriction _:v
, x hasRestriction _:w
и _:v owl:differentFrom _:w
(здесь я использую квази-черепаший синтаксис).
Третий, hasRestriction only 2
, является синтаксической ошибкой, потому что если hasRestriction
является свойством типа данных, то вы должны использовать выражение типа данных после ключевого слова only
. Например, hasRestriction only xsd:integer
.
Во втором случае данный индивидуум x
в классе A
может иметь известные значения свойства hasRestriction
. Например, могут быть тройки x rdf:type A
, x hasRestriction 1
, x hasRestriction 2
, и в этом случае мы знаем, что x
имеет в точности 1 и 2 как значения для hasRestriction
. Если к тому же мы знаем, что x hasRestriction 3
, то возникает противоречие, потому что 1, 2 и 3 — три различных значения, а выражение говорит нам, что их должно быть ровно два.
A
и выражением сложного класса отсутствует... например,A SubClassOf (hasRestriction value 2)
- person UninformedUser   schedule 16.09.2019A
имеет - среди прочих - конкретное значение 2 для свойстваhasRestriction
. - person UninformedUser   schedule 16.09.2019A SubClassOf (hasRestriction exactly 2)
, это означает, что каждый человек изA
имеет два значения свойств, оба просто неизвестные. - person UninformedUser   schedule 16.09.2019A SubClassOf (hasRestriction only {2})
эквивалентно случаю 1.) - конструкцияvalues
была только что введена для него как синтаксический сахар. - person UninformedUser   schedule 16.09.2019