Почему этот DL-Query не возвращает ни одного человека?

Этот DL-Query не возвращает никаких лиц:

Query (Protégé синтаксис):hasPet exactly 1 DomesticAnimal

Вот's часть онтологии:

:hasPet a           owl:ObjectProperty;
        rdfs:domain :Human;
        rdfs:range  :DomesticAnimal;
        owl:inverseOf : petOf;


:Joe    a           :Human;
        hasPet      :Lassy.

:Bob    a           :Human;
        hasPet      :Sparkey, Lucky.

Запросы:

petOf value Bob возвращаетсяSparkey а такжеLuckypetOf value Joe возвращаетсяLassyhasPet exactly 1 ничего не возвращает

Почему нетт последний запрос, возвращающийJoe? Я пробовал это в Protégé с Pellet, HermiT и FaCT ++, и это нет работа.

 Joshua Taylor30 мая 2013 г., 22:26
В дополнение к ответу ниже, также взгляните на ответы наэтот вопрос.

Ответы на вопрос(1)

Решение Вопроса

Выражение классаhasPet exactly 1 DomesticAnimal имеет в качестве примеров именно тех лиц, которые связаны собственностьюhasPet ровно одному.DomesticAnimalТочно один средствахотя бы один а такжене более одного, На основании тройки

:Joe :hasPet :Lassy .
:Bob :hasPet :Sparkey ;
     :hasPet :Lucky .

мы знаем, что у Джо и Боба естьхотя бы один любимчик, но мы ничего не знаем о том, сколько их может быть. У Джо могут быть домашние животные, кроме Ласси, поэтому мы нене знаю, что Джоименно так один питомец Вполне возможно, что Спарки и Лаки оказались одним и тем же человеком, поэтому у Боба есть по крайней мере один питомец, но у нас нет верхней границы количества питомцев, которых имеет Боб.

OWL, а также RDF, делаетпредположение об открытом миреЭто означает, что OWL не предполагает, что предоставленные данные являются исчерпывающим перечнем всего в мире, который является правдой. Если бы это было так, не было бы никакого смысла делать выводы. Отсутствие утвержденияs p o не означает, чтоNOT( s p o )Скорее просто, что пока нет суждения.s p o

Вы можете добавить больше знаний к своим данным, чтобы получить необходимые выводы. Вы описываете Джо со следующим:

Joe a Human ;
    hasPet Lassy ;
    hasPet only { Lassy } .

Lassy a DomesticAnimal .

Из этого вы сможете сделать вывод, что

Joe a (hasPet exactly 1 DomesticAnimal) .

Для Боба похоже, что вы ожидаете, что Спарки и Лаки - разные животные, так что выВам понадобится:owl:differentFrom

Bob a Human ;
    hasPet Sparkey, Lucky .

Sparkey a DomesticAnimal .

Lucky a DomesticAnimal ; 
      owl:differentFrom Sparkey .

Я не включилBob hasPet only { Sparkey, Lucky } в этих аксиомах, потому что они не должны выводить, что у Боба более одного питомца, но вы можете включить его. Я также включил только один изowl:differentFrom утверждения, которые могли быть сделаны. Теперь известно, что у Боба дваотчетливый домашние животные, и, таким образом, известноне бытьhasPet exactly 1 DomesticAnimal, С этими данными, загруженными в Protégéзапрос DLhasPet exactly 1 DomesticAnimal работает как положено:

Пример онтологии

Если вы хотите быстро загрузить эту структуру в Protégé, Вот's онтология с индивидуумами, свойством и аксиомами, как описано выше. Я не определилpetOf свойство, но вы можете запустить первые два запроса какinverse hasPet value Joe а такжеinverse hasPet value Bob и получить ожидаемые результаты.

@prefix :        <http: www.example.com="" owa#=""> .
@prefix rdfs:    <http: www.w3.org="" 2000="" 01="" rdf-schema#=""> .
@prefix owl:     <http: www.w3.org="" 2002="" 07="" owl#=""> .
@prefix xsd:     <http: www.w3.org="" 2001="" xmlschema#=""> .
@prefix rdf:     <http: www.w3.org="" 1999="" 02="" 22-rdf-syntax-ns#=""> .
@prefix owa:     <http: www.example.com="" owa#=""> .

owa:Bob
      a       owl:NamedIndividual , owa:Human ;
      owa:hasPet owa:Sparkey , owa:Lucky .

owa:Sparkey
      a       owl:NamedIndividual , owa:DomesticAnimal .

owa:Lassy
      a       owl:NamedIndividual , owa:DomesticAnimal .

[]    a       owl:AllDifferent ;
      owl:distinctMembers (owa:Lucky owa:Sparkey) .

owa:Joe
      a       owl:NamedIndividual , owa:Human ;
      a       [ a       owl:Restriction ;
                owl:allValuesFrom
                        [ a       owl:Class ;
                          owl:oneOf (owa:Lassy)
                        ] ;
                owl:onProperty owa:hasPet
              ] ;
      owa:hasPet owa:Lassy .

<http: www.example.com="" owa="">
      a       owl:Ontology .

owa:Lucky
      a       owl:NamedIndividual , owa:DomesticAnimal .

owa:Human
      a       owl:Class .

owa:hasPet
      a       owl:ObjectProperty .

owa:DomesticAnimal
      a       owl:Class .
</http:></http:></http:></http:></http:></http:></http:>
 Anthony31 мая 2013 г., 15:43
@ Джошуа, как вы создаете эти ограничения (вручную) в протеже? Я могу'Кажется, его нет в Proptege 4.2.0 для Mac.
 Joshua Taylor31 мая 2013 г., 00:01
@ Энтони ...Joe hasPet RinTinTin и этоRinTinTin owl:differentFrom Lassy, но не делаетничего сказать о том,RinTinTin a DomesticAnimal потому что они нене знаю об этом классе. Теперь, так как Джоименно так один DomesticAnimal как домашнее животное, это означает, что RinTinTin не должен быть DomesticAnimal. Это то, что ожидалось? Может быть? Возможно, нет? Если ваша онтология неЭто становится противоречивым, по крайней мере, имеет неожиданное содержание.
 loopasam30 мая 2013 г., 22:57
Отличный ответ! Я тоже изо всех сил пытался найти решение - глупое предположение о открытом мире!
 Joshua Taylor31 мая 2013 г., 17:04
Входной синтаксис @Anthony Protege примерноOWL2 Манчестерский Синтаксисхотя тыЯ буду использовать только выражения класса.Страница CO-ODE вероятно, более полезно.OWL Primer также есть примеры кода (но выВам нужно будет включить синтаксис Манчестера с "Показать манчестерский синтаксис " кнопка в1.2 Синтаксис OWL.
 Joshua Taylor31 мая 2013 г., 16:54
@Anthony That 'Это одна из причин, по которой я предоставил всю онтологию. Вы можете сохранить это и открыть в Protégé и посмотрим, как все представлено. Синтаксис, который я использовал в ответе, на самом деле довольно близок. Например, как только вы определилиДжоиди кЛица выберите вкладкуДжонажмите «+» кнопка рядом сТипыиди кРедактор выражений классов и введите, например,hasPet only { Lassy }, (Это зависит от имуществаhasPet и человекLassy уже определено.) Точно так же вы могли бы ввести.hasPet exactly 1 DomesticAnimal
 Joshua Taylor31 мая 2013 г., 20:50
@ не знаю, явидел на сайте answers.semanticweb.com обсуждения о присоединении или не присоединении к сети Stack Exchange, ноне знаю об этом предложении. Я'Я следую за этим сейчас. Спасибо за головы!
 Joshua Taylor31 мая 2013 г., 00:14
@loopasam ... Да! Есть лине X следовать из D и D '?Нет.»  В логических системах часто гораздо легчемонотонныйчто примерно означает, чтодобавление информация никогда не делает тебявтягиваться предыдущие выводы. Если у вас огромный набор данных, например, DBpedia, и вы можете доказать P из очень маленького подмножества, выдействительно дон»Вам не нужно искать по всем остальным данным, чтобы убедиться, что никакие другие данные в наборе данных не заставят вас отозвать это.
 Joshua Taylor31 мая 2013 г., 00:11
@loopasam В то время как предположение об открытом мире порой делает вещи неудобными, оно намного больше соответствует традиционной формальной логике, и трудно обойти это в Семантической сети. Контекст связанных данных. С предположением об открытом мире мы можем иметь:У меня есть данные D, Х следовать?Я нея знаю Есть лине X следовать?Я нея знаю Хорошо, у меня также есть данные D ', Х следовать из D и D '?Да!"  С предположением о замкнутом мире (и отрицанием как провалом) мы имеем «… Х  следовать?Нет. Есть лине X следовать?Да! Х следовать из D и D '? ...
 unor31 мая 2013 г., 19:59
@JoshuaTaylor: Отличный ответ! Поскольку я увидел несколько хороших ответов от вас по темам семантической паутины, я хотел бы знать,предложение для сайта Semantic Web Stack Exchange.
 Anthony30 мая 2013 г., 23:47
Большое спасибо за ответ. Protege позволяет выделить всех объявленных лиц одним щелчком мыши. Существует ли функция, которая позволяет автоматически создавать ограничения для заявленных свойств каждого человека, чтобы утверждать, что нет других возможных значений (то есть имитировать предположение о замкнутом мире)? Как вы разрабатываете свои онтологии? Ты пишешь их все в Черепахе?
 Joshua Taylor30 мая 2013 г., 23:58
@Anthony Для всего, что связано с OWL, я использовал Protégé, как я сделал в этом случае. Я опубликовал онтологию в формате N3, потому что мне кажется, что ее проще читать в виде обычного текста, чем в RDF / XML. Я нене знаю каких-либо быстрых способов «закрой мир » так сказать, но этотакже очень редко, что яхочу к. Частью привлекательности OWL, связанных данных и семантической паутины является то, что можно получитьДополнительная информация из других источников. Если вы попытаетесьзакрой мир » Вы можете очень легко сделать другую информацию несовместимой с вашей, или иметь другие проблемы. Например, скажем, кто-то говорит вам, что ...

Ваш ответ на вопрос