Asercje i zapytania w logice pierwszego rzędu

Zdania są dodawane do bazy wiedzy za pomocą TELL, dokładnie tak jak w logice zdań. Takie zdania nazywamy twierdzeniami. Na przykład możemy stwierdzić, że Jan jest królem, Ryszard osobą, a wszyscy królowie są osobami:

Za pomocą ASK możemy zadawać pytania z bazy wiedzy. Na przykład,

Ask(K,B,King(John))

zwraca prawdę. Pytania zadawane za pomocą ASK nazywane są zapytaniami lub celami. Ogólnie rzecz biorąc, na każde pytanie, które logicznie wynika z bazy wiedzy, należy odpowiedzieć twierdząco. Na przykład, biorąc pod uwagę trzy powyższe stwierdzenia, zapytanie

Ask(K,B,Person(John))

powinien również zwracać true. Możemy zadawać kwantyfikowalne zapytania, takie jak

Odpowiedź jest prawdziwa, ale może nie jest to tak pomocne, jak byśmy chcieli. To trochę jak odpowiedź „Czy możesz mi podać godzinę?” z „Tak”. Jeśli chcemy wiedzieć, jaka wartość x sprawia, że zdanie jest prawdziwe, potrzebujemy innej funkcji, którą nazywamy ASKVARS,

i która daje strumień odpowiedzi. W tym przypadku będą dwie odpowiedzi: {x/John} i {x/Richard}. Taka odpowiedź nazywana jest listą substytucyjną lub wiążącą. ASKVARS jest zwykle zarezerwowany dla baz wiedzy składających się wyłącznie z klauzul Horn, ponieważ w takich bazach wiedzy każdy sposób urzeczywistnienia zapytania wiąże zmienne z określonymi wartościami. Tak nie jest w przypadku logiki pierwszego rzędu; w KB, któremu powiedziano tylko, że King(John) V King (Richard) nie ma jednego powiązania, które sprawia, że zapytanie jest prawdziwe ∃x King(x), nawet jeśli zapytanie jest w rzeczywistości prawdziwe.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *