2013-04-15 2 views
2

Я изучаю понятие ограничений OWL с помощью Protege 4 с использованием FaCT ++ и тривиальной онтологии. Предположим, у меня есть отдельный foo класса Something:Вывод типа OWL с ограничением

:Something a owl:Class. 
:foo a :Something, owl:NamedIndividual. 

и другого класса, определенного с ограничением на hasBar собственности:

:hasBar a owl:ObjectProperty. 
:SomethingElse owl:equivalentClass [a owl:Restriction; 
            owl:onProperty :hasBar; 
            owl:allValuesFrom :Something]. 

Если я утверждаю, что:

:x :hasBar :foo. 

почему может Из этого я делаю вывод, что x является SomethingElse (через то, что foo является Something)? Единственный способ, которым я могу заставить его работать, если это range из hasBar определяется:

:hasBar a owl:ObjectProperty; 
     rdfs:range :Something. 

Но я хотел бы избежать этого, потому что это ставит ограничение на то, что может быть предметом hasBar (который вызывает меня дальнейшая проблема).

ответ

2

Я думаю, что это проще рассуждать над реальными примерами, давайте рассмотрим следующую базу знаний:

:eats rdf:type owl:ObjectProperty . 

:Vegetable rdf:type owl:Class ; 
     rdfs:subClassOf owl:Thing . 

:Vegetarian rdf:type owl:Class ; 
     owl:equivalentClass [ rdf:type owl:Restriction ; 
           owl:onProperty :eats ; 
           owl:allValuesFrom :Vegetable 
          ] . 

:Carrot rdf:type :Vegetable , 
      owl:NamedIndividual . 

:John rdf:type owl:NamedIndividual , owl:Thing ; 
     :eats :carrot . 

У вас есть эквивалентности с вашим примером: hasBar является eats, Vegetarian является SomethingElse, Vegetable является Something, foo is carrot и, наконец, x is John.

Теперь вы хотели бы сделать вывод, что John является Vegetarian (= x является SomethingElse).

Имеет смысл, что он не работает с owl:allValuesFrom. То, что вы здесь говорите, это то, что все экземпляры вегетарианцев, если у них есть собственность, они должны иметь Растительность в радиусе действия. Итак, из этого вы можете сделать вывод, что carrot - это овощ, например, если вы знаете, что Джон является вегетарианцем в первую очередь.

Это имеет смысл и на естественном языке: в своей онтологии вы знаете только, что Джон ест морковь, это не делает его автоматически вегетарианцем (не вегетарианские люди тоже едят морковь).

Вы можете использовать owl:someValuesFrom вместо owl:allValuesFrom. Таким образом, вы бы определили, что у каждого вегетарианца есть кто-то, кто ест какой-то овощ. В этом случае, если мы знаем, что Джон ест морковь, поэтому он будет классифицирован как вегетарианский по рассуждению, основываясь на вашем определении концепции вегетарианский.

Универсальный (allValuesFrom) и экзистенциальный (someValuesFrom) ограничениям сложно понять, часто нет правильного или неправильного решения, оно в основном зависит от того, чего вы хотите достичь.

+0

Спасибо за подробный ответ! Я уже понял, что с помощью 'owl: someValuesFrom' работает лучше в этом случае, но это объясняет, почему.Несмотря на то, что моя интуиция легко принимает вашу интерпретацию на естественном языке, я все же считаю, что в некотором смысле вы можете утверждать, что учитывая все, что вы знаете о мире (а именно, что «Джон» ест «Морковку», которая является «Овощной»), условие для того, чтобы быть в версии 'owl: allValuesFrom'« вегетарианского »ограничения, таким образом, полностью удовлетворено. Но я думаю, что это связано с открытым/закрытым мировым понятием, которое я еще не все еще пробовал. – cjauvin

+0

Да, ограничения очень сложны, но рассудитель помогает вам, как вы видели, чтобы лучше понять семантику OWL. Удачи! – loopasam

Смежные вопросы