Чтобы указать, что объект имеет определенное свойство, вы должны использовать предикат одного места. Например, чтобы заявить, что x
- это фильм, вы можете написать Film(x)
. Если вы хотите присвоить объекту какое-то значение, вы можете использовать предикат с двумя (или более) позициями. Используя свой пример, вы могли бы сказать, что Клуни снялся в фильме как Starred(clooney, x)
.
Есть определенные условности, которые люди используют. Например, предикаты начинаются с заглавных букв (Actor
, Film
, FatherOf
), а константы - с строчной буквы (x
, clooney
, batman
). Константы обозначают объекты, а предикаты что-то говорят об объектах. В случае предикатов с более чем одним аргументом первым аргументом обычно является субъект, о котором вы делаете утверждение. Таким образом, вы можете естественно прочитать логическую формулу как предложение на обычном языке. Например, FatherOf(x, y)
будет читаться как «x - отец y».
Ответ на обновление:
Я не уверен, сможете ли вы сделать это в логике первого порядка. Вы можете описать Entity
как нечто, обладающее определенными свойствами с помощью формулы, например
\forall x (Entity(x) ==> Object(x) | Element(x) | Abstraction(x))
Для Attribute
это немного сложнее. В логике первого порядка атрибут приписывает какое-то качество объекту или связывает его с другим объектом. Вероятно, вы могли бы использовать трехзначный предикат, например:
\forall attribute (\exists object (\exists value (Has(object, attribute, value))))
Что касается документа, то это будет просто совокупность таких заявлений. Например, описание Джорджа Клуни могло быть таким:
Entity(clooney) & Has(clooney, starred, gravity) & Has(clooney, bornIn, lexington) & ...
person
Roman Kutlak
schedule
30.04.2015