- 簽證留學(xué) |
- 筆譯 |
- 口譯
- 求職 |
- 日/韓語(yǔ) |
- 德語(yǔ)
基于程序的技術(shù)通常在數(shù)據(jù)庫(kù)查詢(xún)程序中使用。在這種應(yīng)用中,邏輯形式語(yǔ)言和數(shù)據(jù)庫(kù)語(yǔ)言的表達(dá)能力有很大的差別。知識(shí)庫(kù)(即數(shù)據(jù)庫(kù))只包含肯定文字命題,通常不包含變量。在這種情況下,一般做法不是將邏輯形式語(yǔ)言轉(zhuǎn)化成本節(jié)先前描述的擴(kuò)展的一階謂詞演算,而是將邏輯形式當(dāng)成用查詢(xún)語(yǔ)言構(gòu)造的表達(dá)式來(lái)處理。每個(gè)邏輯形式語(yǔ)言結(jié)構(gòu)對(duì)應(yīng)一個(gè)執(zhí)行適當(dāng)查詢(xún)的特定過(guò)程。例如,查詢(xún)“Does every flight to Chicago serve breakfast?”(是否每一趟飛往Chicago的航班都提供早餐?)的邏輯形式語(yǔ)言為:
(EVERY f1 : (& (FLIGHT f1) (DEST f1 (NAME c1 "Chicago")))
(SERVE-BREAKFAST f1))
可以解釋為如下過(guò)程:
1. 在數(shù)據(jù)庫(kù)中找出所有目的地為CHI(數(shù)據(jù)庫(kù)中表示Chicago的符號(hào))的航班。
2. 對(duì)找到的每個(gè)航班,檢查是否提供早餐。如果都提供,返回是;否則返回不是。
此文說(shuō)明了如何將邏輯形式的表達(dá)式解釋為過(guò)程的方法,這種方法常稱(chēng)為程序語(yǔ)義學(xué) (procedural semantic)。
為了更清楚地了解這個(gè)過(guò)程,我們先分析圖1所示的簡(jiǎn)單數(shù)據(jù)庫(kù)查詢(xún)系統(tǒng)。這個(gè)數(shù)據(jù)庫(kù)由一組不含變量的肯定文字命題組成。時(shí)間用國(guó)際表示法來(lái)表示;比如1700HR表示下午5:00。關(guān)系(ATIME fct)表示航班f在時(shí)刻t到達(dá)機(jī)場(chǎng)c,而(DTIME fct)表示航班f在時(shí)刻t離開(kāi)機(jī)場(chǎng)c。這個(gè)數(shù)據(jù)庫(kù)系統(tǒng)提供一個(gè)基于文字命題的模式匹配的簡(jiǎn)單接口,其中,查詢(xún)中可能包含變量。假定現(xiàn)在有兩個(gè)數(shù)據(jù)庫(kù)查詢(xún)函數(shù):
(Test
(Retrieve
例如,已知圖1 的數(shù)據(jù)庫(kù),查詢(xún):
(Retrieve ?x (FLIGHT ?x) (ATIME ?x CHI 1000HR))
將返回列表(F2),因?yàn)镕2是 ?x的惟一約束,使得這兩個(gè)文字命題都在數(shù)據(jù)庫(kù)中。
圖1 一個(gè)簡(jiǎn)單的航班時(shí)刻表數(shù)據(jù)庫(kù)
用邏輯形式語(yǔ)言表示的所有表達(dá)式必須用一種特定的方法來(lái)解釋?zhuān)凑者@種方法,這些表達(dá)式最終都簡(jiǎn)化為這個(gè)數(shù)據(jù)庫(kù)的兩種查詢(xún)形式。簡(jiǎn)化的方法是通過(guò)將邏輯形式映射為對(duì)數(shù)據(jù)庫(kù)執(zhí)行適當(dāng)查詢(xún)的過(guò)程。因此,回答一個(gè)問(wèn)題可以通過(guò)兩個(gè)步驟來(lái)完成:將邏輯形式轉(zhuǎn)換為一個(gè)程序,然后執(zhí)行該程序,計(jì)算得到答案。