OWL, определить класс по свойству данных
В учебных целях для моего университета я изучаю OWL. Я пытаюсь автоматически классифицировать людей на основе подклассов необходимых и достаточных условий.
Теперь у меня есть смартфон класса, который имеет индивидуальный "х", который имеет свойство данных "hasCores" "4 целое число".
Сейчас я пытаюсь автоматически классифицировать его как "быстрый смартфон". Я попытался сделать это, сделав новый класс "быстрым смартфоном" как подкласс "смартфона". например (эквивалентно (смартфон и (hasCores мин. 2 целых числа)).
Но это не смотрит на значение атрибута данных, которое для этого экземпляра равно 4, но смотрит на количество свойств "hasCores", которыми обладает индивидуум. Так что, если я добавлю 2 свойство hasCore к индивидуальному, это будет работать. Но мне нужно только одно свойство hasCore, и я расскажу аргумент о значении свойства hasCore. Это вообще возможно?
Заранее спасибо.
1 ответ
Теперь у меня есть смартфон класса, который имеет индивидуальный "х", который имеет свойство данных "hasCores" "4 целое число".
Я надеюсь, что вы на самом деле имеете в виду
:x :hasCores "4"^^xsd:integer
где значение является литералом с типом данных с типом данных xsd: integer.
То, что вы на самом деле хотите здесь, это аргументация типа данных. Не все рассудки обязательно поддерживают его, но он поддерживается на языке OWL. Вы бы по существу использовали что-то вроде
FastSmartphone эквивалентный класс смартфона и (hasCores только xsd: integer [> 4])
Прямой пример выражения этого типа в моем ответе на Кодирование математических свойств в RDF:
Теперь есть два направления, по которым вы могли бы захотеть сделать вывод. Вы могли бы выполнить какое-то необходимое условие, которое бы провело проверку на непротиворечивость.
Подкласс FastSmartphoneOf имеет только баллы xsd:integer[>=4]
Это означает, что если заявлено, что что-то является FastSmartphone, то какое бы число (я) ядер оно не имело, значение должно быть не менее четырех. Было бы возможно, чтобы у него не было такой ценности, и если вы хотите предотвратить это, вы можете сделать что-то вроде
Подкласс смартфона имеет баллы мин 1
Теперь, если вы хотите сказать, что, например, смартфон имеет пять ядер и, следовательно, сделать вывод, что это FastSmartphone, вам нужно другое направление:
hasCores некоторый xsd:integer[>=5] и подкласс смартфона FastSmartphone
(Возможно, вы захотите только там, но тогда смартфоны без заявленного количества ядер также будут FastSmartphones.)
На самом деле, если вы пытаетесь определить быстрые смартфоны как смартфоны, имеющие как минимум четыре ядра, вы просто скажете:
FastSmartphone эквивалентно классу смартфона и имеет баллы некоторые xsd:integer[>=4]