Я не эксперт в этой области, но я немного работал с неопределенностями в онтологиях и семантической сети. Конечно, есть подходы к этой проблеме, которые не имеют ничего общего с семантической сетью, но мои знания на этом заканчиваются.
Две проблемы, которые, я чувствую, связаны с вашим вопросом, это Кризис идентичности и Кризис URI . Формальные представления приведенных выше утверждений могут быть оформлены в RDF (Структура описания ресурсов).
Если я преобразую утверждения «Шляпа Боба - синий / красный» в тройки, это будет:
Факт 1:
- X - Персона
- X имеет имя "Боб"
- X обладает H1
- H1 isA Hat
- H1 имеет цвет синий
Факт 2:
- Y isA Person
- Y имеет имя "Боб"
- Y обладает H2
- H2 isA Hat
- H2 имеетЦвет Красный
Проблема здесь в том, что X, Y, H1 и H2 являются ресурсами, которые могут быть или не быть одинаковыми. Таким образом, в вашем примере неизвестно, являются ли X и Y одним и тем же лицом или отличным, и вы не можете знать без дополнительной информации. (То же самое относится и к шляпам.)
Однако проблема более сложная, потому что Пользователь A и B только что сформулировали эти вещи, поэтому они не являются «реальными» фактами. RDF предлагает метод Reification для этого, но я не буду здесь полностью это записывать, это будет слишком долго. По сути, вы бы добавили «UserA statesThat (...)» к каждому вышеупомянутому утверждению.
Если у вас есть все это, вы можете начать рассуждать. В университете мы когда-то использовали RACER для такого рода вещей, но это была старая версия, и я не знаком с текущей.
Конечно, вы можете делать это и без RDF, например, в LISP.
Надеюсь, это помогло.