2016-11-15 11 views
0

Я создаю онтологию в Protege 5.1, впервые решая настоящую проблему.Онтология - как сказать, экземпляр класса «должен иметь» что-то?

Я натыкаюсь на основную потребность в создании определенных типов свойств, необходимых для экземпляра класса. Я бы хотел, чтобы Reasoner выделил такие проблемы, как недостающее требуемое свойство.

Итак, скажем, определенный класс продуктов, например. «Физические продукты» требуют «веса». Как я могу выразить это требование в онтологии? Так, чтобы физические продукты без веса были помечены?

ответ

1

Короткий ответ: вы не можете сделать это с помощью OWL.

OWL онтологии описывают правду о мире, ничего больше. Онтологии не заставляют экран вспыхивать, они не налагают правил о том, что дать полицейскому, чтобы убедиться, что вы человек, и они не нарушают работу онтологических систем, потому что то, что, как известно, существует, не имеет конкретного значения. Онтологии - это знания, а не правила. Если я знаю как факт, что физические продукты должны иметь вес, нет причин, по которым мой умственный разум должен волноваться, потому что яблоко, которое я несу, не дает явного значения его веса.

Однако, если у вас есть поддающееся проверке доказательство того, что физический продукт не имеет веса, например, человек, пытающийся продать вам абстрактную концепцию, как если бы это был физический продукт, который вы можете касаться и обрабатывать, тогда вы можете сказать что существует несогласованность. То есть есть истины, которые противоречат друг другу. Разумщики могут обнаружить несоответствия и объяснить причину несогласованности. Однако они не смогли бы отметить отсутствие веса в качестве причины несогласованности.

Тем не менее, это, вероятно, не удовлетворяет вас, потому что у вас есть конкретная проблема, и вы хотите получить конкретное решение. Один из способов решения этого - просто выполнить требования. Если вы не можете найти значение для веса, возможно, даже с помощью аргумента, то вы указываете экземпляр, который не может обеспечить его вес. Более сложное решение заключается в объявлении ограничений целостности с использованием Pellet. Pellet использует расширение OWL, которое позволяет объявлять ограничения целостности того типа, который вас интересует (например, требуемые значения). Могут быть другие нестандартные расширения или инструменты, которые могут указать, что вам нужно, но все это выходит за рамки OWL и RDF (S).

2

Вещь, которую вы хотите достичь, обычно выполняется с использованием SPARQL.

Вы можете написать запрос SPARQL, который будет возвращать все «физические продукты», у которых нет «веса» (используя NOT EXISTS {...}). Затем вы можете «flag» возвращенные элементы. Обратите внимание, что то, что вы подразумеваете под «флагом», не ясно.

Хорошим способом играть с этим является использование правил SPARQL, таких как SPIN. Это нестандартное расширение позволяет использовать запросы SPARQL в качестве ограничений для ваших данных. Он хорошо интегрирован в Topbraid Composer ... даже в бесплатную версию, если я прав.

0

Вам необходимо будет использовать ограничение Existential (т. Е. Некоторое). В описании логики, можно утверждать, как: = 3PhysicalProducts.requireWeight U ~ (3PhysicalProducts.requireWeight)

The sign 3 is the some restriction; 
U is logical OR; 
~ is the negation;