JPH05250162A - オブジェクト指向論理プログラムおよび演繹データベースにおけるタイプ束による照会の最適化 - Google Patents

オブジェクト指向論理プログラムおよび演繹データベースにおけるタイプ束による照会の最適化

Info

Publication number
JPH05250162A
JPH05250162A JP4265662A JP26566292A JPH05250162A JP H05250162 A JPH05250162 A JP H05250162A JP 4265662 A JP4265662 A JP 4265662A JP 26566292 A JP26566292 A JP 26566292A JP H05250162 A JPH05250162 A JP H05250162A
Authority
JP
Japan
Prior art keywords
predicate
clause
query
program
predicates
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP4265662A
Other languages
English (en)
Inventor
Mukesh Dalal
ムケシュ・ダラル
Dipayan Gangopadhyay
ディパヤン・ガンゴパデャイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH05250162A publication Critical patent/JPH05250162A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/313Logic programming, e.g. PROLOG programming language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 PROLOGのような論理指向プログラミン
グ言語で書かれたプログラムの実行を強化する。 【構成】 オブジェクト指向論理プログラミング言語で
書かれた、述語および節のクラス/サブクラス・レベル
階層を定める分類学的分類を有するプログラムにおける
照会の実行方法において、前記クラス/サブクラス・レ
ベル階層に基いて前記プログラムの述語および節にラン
ク付けを予め割当て、前記割当てられた述語および節の
ランク付けを用いて前記プログラムを照会サーチするス
テップを含み、該プログラムの照会は、述語/節のクラ
ス・レベルのサーチが述語/クラスのサブクラス・レベ
ル・サーチに先行し、かつ述語/節のクラス/サブクラ
ス・レベル・サーチが述語/節のインスタンス・レベル
・サーチに先行するように実行される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、電子的ディジタル計算
に関し、特にPROLOGの如き論理指向言語、即ち技
術においてPROLOG(PROgramming i
n LOGic)と呼ばれるプログラミング言語で書か
れたプログラムを用いてタイプ階層の存在下で照会を実
行するための処理手法に関する。
【0002】
【従来の技術】PROLOGプログラムは、一連の節と
して書かれる。例えば、1つの節は、Maryが野菜を
好むことを下記のように書く。即ち、
【0003】 Likes(Mary,X)←Vegetables(X) (1)
【0004】節において、←(または、:−)は論理記
号であり、論理記号の両側の表現は述語と呼ばれる。
「好む」および「野菜」により例示される単語は、ここ
では述語ネームと呼ぶ。単語「Mary」および文字
「X」は、引数と呼ばれる。文字の引数、例えば「X」
は可変引数であり、「Mary」の如き単語引数は一定
引数である。
【0005】各述語は、1つの関係を定義し、述語ネー
ムと一連の1つ以上の引数とを含む。論理記号の左側は
ヘッドと呼び、右側はボディと呼ぶ。節は唯1つのヘッ
ドを有する。ヘッドとボディの両方を有する節はルール
と呼ばれ、唯1つのヘッドを有する節はファクト(ある
いは、述語インスタンス)と呼ばれる。
【0006】ヘッドの述語およびボディの述語は、ここ
ではヘッド述語およびボディ述語と呼ぶ。正規あるいは
宣言節のヘッドは、唯1つのヘッド述語からなり、節あ
るいは質問節のボディは唯1つの述語からなる。ボディ
がN個の述語からなる時、下記の如くコンマがボディ述
語の隣接するものの間に挿入される。即ち、
【0007】 Predicate(H)←Predicate(1),..., Predicate(N) (2)
【0008】節(2)において、「Predicate
(H)」はヘッド述語を表わすが、「Predicat
e(1)」乃至「Predicate(N)」は数がN
であるボディ述語を表わす。ボディ述語間に使用された
コンマは、ANDを意味する論理記号である。換言すれ
ば、ヘッド述語により表わされる事象は、「Predi
cate(1)」乃至「Predicate(N)」に
より表わされる全ての事象がある時のみ真である。節
(1)に加えて下記の如き別の節があるものと仮定しよ
う。即ち、
【0009】 Vegetables(carrots) (3)
【0010】一連の節(1)および(3)は、Mary
が人参を好むという記号演繹を表わす。
【0011】大半のプログラミング言語におけるよう
に、従来のコンピュータにおいてPROLOGプログラ
ムを実行することが可能である。更に、当技術において
は、PROLOGの如き種々のプログラミング言語を処
理することが可能である上位のマシンが公知である。ま
た、専用のPROLOG・プログラム・プロセッサ、例
えば、Umemura等の米国特許第4,546,43
2号「PROLOG processing syst
em」なる文献が公知である。
【0012】クラス/サブクラス階層(本文では、タイ
プ階層とも呼ばれる)は、しばしば処理されるプログラ
ムにより定義される。このような階層においては、典型
的には束の内に1つ以上の共通ノードが存在する。しか
し、定義によれば、特定の1つのプログラムには、サー
チ・スペース内のオブジェクト(インスタンス)よりも
少ない数のクラス(タイプ)が必然的に存在する。PR
OLOGにおいては、タイプの束として表わし得るプロ
グラムはタイプ述語と述語インスタンスの双方を含むと
言われる。タイプ述語は、定義された定数のクラスを表
わす定数を含むが、述語インスタンスは定数に固定され
た全ての引数(例えば、ファクト)を持つ述語である。
【0013】従来のPROLOGプログラム処理は、あ
る述語の選択法および節の選択法を使用し、これはほと
んど常に照会処理時に述語インスタンス・レベルにおけ
るサーチを結果として生じる。しかし、タイプ階層が存
在すると、全ての述語インスタンスのサーチ前のタイプ
述語のサーチは、照会処理時間の大きな節減をもたらす
結果となる。本発明は、このような概念を実現するため
の幾つかの斬新な手法に関するものである。
【0014】
【発明が解決しようとする課題】公知の従来技術の文献
の内、Kaci等の論文「Logic and Inh
eritance」(ACM SIGPLAN−SIG
ACT Conference on Princip
les of Programming Langua
ges)によりkjされた手法のみが、論理プログラミ
ング言語におけるタイプの束処理を論述している。上記
の試みは、単一化(ここでは、マッチングと呼ぶ)法に
おけるタイプ階層の処理を包含している。しかし、イン
スタンス・レベルのサーチが起生する前にタイプ述語が
処理されることの保証には言及がない。このため、本発
明は、サーチ・スペースを縮減する観点における優れた
試みを提供するものと信じられる。
【0015】
【課題を解決するための手段】簡単に述べれば、本発明
は、論理指向のコンピュータ・プログラミング言語で書
かれたプログラムについて照会を実行するための改善さ
れた方法を含む。この照会処理方法は、述語および節の
クラス/サブクラス階層を定義する分類学的分類を有す
るプログラムのため特に定義されている。本方法は下記
のステップを含む。即ち、クラス/サブクラス・レベル
階層に基くプログラムの述語および節に対してランク割
当てを行い、述語および節の割当てられたランクを用い
てプログラムに関する照会処理を行う。プログラム照会
は、述語/節のクラス・レベルのサーチがそのサブクラ
スまたはインスタンス・レベルのサーチの前に行われる
ように実行される。本文に述べる特定の実施態様におい
ては、論理指向のコンピュータ・プログラミング言語は
PROLOGからなる。ランク付けに基く述語およびク
ラスの選択に加えて、ある簡素化ルールが伝統的なPR
OLOGサーチ法と混交されることが望ましい。
【0016】本文に示される修正された選択ルールおよ
び簡素化ルールは、インスタンス・レベルのサーチ以前
のタイプ・レベルのサーチを生じる照会評価法をもたら
す結果となる。これは、好都合にも、照会処理時間(コ
スト)における著しい節減をもたらす結果となる。更
に、タイプ述語のランクによるタイプ階層のコード化手
法は、現在あるPROLOGインタプリタに対して最小
限の修正のみで済む。開示される手法は、エキスパート
・システム、オブジェクト指向データベース、オブジェ
クト指向演繹データベース、および知識表示に対するP
ROLOGの使用を著しく(マグニチュード次元で)高
速化することができる。更に、提示される諸概念は、他
のオブジェクト・ベースの論理プログラミング言語で書
かれたプログラムの処理に用いることが可能である。
【0017】
【実施例】一般に、本発明は、オブジェクト指向論理プ
ログラミング言語における照会処理時間を改善するため
の幾つかの手法を包含している。この手法は、(本文で
タイプ階層あるいはタイプ束と呼ばれる)クラス/サブ
クラス階層が存在するように、クラス述語およびサブク
ラス述語が定義される如き言語で書かれたプログラムに
有効である。このような場合、プログラム処理は伝統的
に、インスタンス・レベルにおける重要な処理をもたら
す結果となるサーチ法で進行する。しかし、本発明によ
れば、タイプ階層は、プロセッサがタイプ・インスタン
スに関してサーチするのに先立ち考察される。
【0018】このような処理の優先順位を確立するた
め、本発明は、別の述語選択法と共に、述語/クラス概
念および幾つかの照会処理簡素化ステップのランク付け
を実現する。本発明の手法については、本文では、PR
OLOG処理システムにより実行されるプログラムのタ
イプ述語をランク付けすることにより、タイプ階層のコ
ード化に照らして記述する。この手法は、従来のPRO
LOGインタプリタに対する修正は最小限で済む。(し
かし、当業者は、本文に述べる概念が他のオブジェクト
・ベースのプログラミング言語におけるプログラム処理
用として容易に推定することができよう。頭書の特許請
求の範囲は、かかる全ての推定を網羅することを意図し
ている。)
【0019】10で示されるPROLOG処理システム
の1つの一般例が図1に示される。図示の如く、システ
ム10は、中央処理装置12およびPROLOGインタ
プリタ14とを含み、このインタプリタは実行されるべ
きPROLOG命令を含む。中央処理装置12は、イン
タプリタ14から命令を取得した後、この命令の解釈を
行い、PROLOG作業スペース16から適当なオペラ
ンドを選択する。実行されるプログラムのためメモリ内
に特定のルール/ファクトを含む作業スペース16は、
プログラム処理の変更可能な部分を含む。CPU12
は、選択された命令の結果を作業スペース16に再び記
憶する。入出力装置18もまた、処理システム10との
ユーザ・インターフェースのため装置12と接続され
る。
【0020】本発明による従来の照会処理およびPRO
LOGプログラムの照会処理については、図2の簡単な
タイプ階層例に関して記述し、またこの例に関して本文
で比較される。本例においては、「親交」および「非親
交」は、タイプ「国」の2つのサブタイプ(サブクラ
ス)である。更に、「非提携」国が「親交」ならびに
「非親交」の両方(即ち、そのサブタイプ)に定義され
る。また、「NATO」国は「親交」国のサブタイプと
して定義される。タイプ階層は、下記の如きあるインス
タンスで補完される。即ち、「国A」は「NATO」国
であり、「国B」は「非提携」国であり、「国C」は
「非親交」国である。更に、処理されるプログラム内に
は幾つかの情報が存在する。例えば、下記の如く仮定し
よう。即ち、(1)全ての「非親交」国は訪問が危険で
あり、(2)ある国の訪問は、この国が危険ではあるが
「親しい」ならば冒険となる。
【0021】PROLOGのプログラミングにおいて、
おおよそのタイプ階層は下記の節(即ち、ルール)によ
り表わされる。即ち、
【0022】1.Country(X) :− Frie
ndly(X) 2.Country(X) :− Unfriendly
(X) 3.Friendly(X) :− NATO(X) 4.Friendly(X) :− Non−Align
ed(X) 5.Unfriendly(X) :− Non−Ali
gned(X)
【0023】訪問のためのルールは、下記の如く与えら
れる。即ち、
【0024】6.Dangerous_Visit
(X) :− Unfriendly(X) 7.Adventurous_Visit(X) :− F
riendly(X),Dangerous_Visit
(X).
【0025】インスタンスは、下記のPROLOGプロ
グラムのファクトにより表わされる。即ち、
【0026】8.NATO(Country A) 9.Non−Aligned(Country B) 10.Unfriendly(Country C)
【0027】上記のプログラミングにおいて、訪問が冒
険である全ての国についての照会が行われるものとしよ
う。これは下記の如く表わすことができる。即ち、
【0028】 ?−Adventurous_Visit(X) (*)
【0029】上記の照会の伝統的なPROLOGプログ
ラム処理については、図3および図4のフローチャート
に関してまず以下に述べる。
【0030】最初に、照会(照会(*)の如き)がプロ
セッサに入力され(30 Query_List 入
力)、その後第1の可変「選択スタック」がクリヤさ
れ、第2の可変「回答」が入力されたQuery_Li
st を割当てられる(31 選択スタック=空;回答
=Query_List)。Query_Listが終っ
たかどうかについて問合せが行われる(32 Quer
y_List が終了したか?)もし「yes」ならば、
照会入力は次々に処理される(34 成功)。このよう
な場合、「回答」リストは照会述語を含み、その中で成
功した照会がバインディングに対して論理的に真である
と見做されるように、変数が適当な定数に固定される。
【0031】Query_Listが入力されたばかり
であるとすれば、「述語選択ルール」がQuery_L
ist からの述語のプロセッサ選択のためアクセスさ
れる。選択された述語は識別子g(Aバー)を割当てられ
る(32 述語選択ルール−Query_List から
述語を選択;選択された述語にg(Aバー)を割当て)。
伝統的に、PROLOGインタプリタはQuery_L
ist における最も左の述語を選択するようにプロセ
ッサに指令する。この命令は、本文において「述語選択
ルール」と呼ぶものの従来の一例であり、これは本発明
により変更される第1のルールである(以下に述べ
る)。
【0032】次に、処理は、選択された述語がPROL
OGの作業スペースにおける述語インスタンスまたは節
のヘッド述語とマッチするかどうかを判定する(38
g(Aバー) は節のファクトまたはヘッド述語とマッチ
するか?)。もし「no」ならば、選択された述語は失
敗し(39 述語は失敗した)処理は進んで選択スタッ
クが空かどうか問合せる(41 選択スタック=空か
?)。もし「yes」ならば、Query_Listは
失敗する(43 失敗)。失敗したQuery_Lis
tは、照会がプログラムから答えることができないこと
を意味する。選択スタックが空を含むならば、プロセッ
サは選択スタックへ戻り、この時におけるQuery_
Listのマッチング節の前のセットを得る(45 選
択スタックへ戻り、Query_Listにおけるマッ
チング節の前のセットを得る)。
【0033】選択された述語が述語インスタンスまたは
節のヘッド述語とマッチするならば、プロセッサは1つ
以上の述語のマッチングが見出されたかどうかを問合せ
る(40 1つ以上の述語マッチングが見出されたか
?)。もし「no」ならば、マッチング述語インスタン
スまたは節のヘッド述語は識別子g(Bバー)を割当てら
れ、述語または節のヘッド述語の識別されたインスタン
スのバインディングまたは代替が行われる(42 マッ
チング述語がg(Bバー)であり、σ=[Aバー/Bバ
ー]=Aバインディングをセットする)。反対に、1つ
以上の述語マッチングが見出されるならば、プロセッサ
は「節の選択ルール」をアクセスして、更なる処理のた
めマッチング節の1つを選択する(44 節の選択ルー
ル−マッチング節の1つを選択)。
【0034】伝統的には、PROLOGインタプリタ
は、処理中の述語とマッチする述語インスタンス/節の
ヘッド述語のリストで最上位の節を選択するようプロセ
ッサに命令する。この従来の「節の選択ルール」は、本
発明により変更される第2のルールである(以下に論述
する)。(これに対する欠くことのできないものとし
て、マッチング節の相対的ランク付けが必要である。
(47 節の相対的ランク付けの決定))処理のための
特定の節を選択した後、選択点(即ち、処理経路におけ
る分岐)が定義され、これに対して選択された節が失敗
したらプロセッサが戻ることになる(49 選択点の生
成;マッチング節の残りおよびその時のQuery_L
ist を選択スタックにプッシュ)。問合せ41に関
して先に述べたように、選択スタックにおける全ての選
択が失敗すると、照会は失敗することになる。
【0035】命令49から、プロセッサは命令42へ指
向される。その後、マッチング述語が節のヘッド述語で
あるかどうかについて問合せが行われ(46 マッチン
グ述語が節のヘッド述語であるか?)、もし「no」な
らば、述語に対する答えが識別される(48 答え=答
えσ、即ち代わりのσが答えに与えられる)このため、
マッチング述語は処理されつつある問題の述語に代わる
述語インスタンスを含む。その後、問合せへ戻る(32
Query_List が終了したか?)。もし「n
o」ならば、別の述語(即ち、次の最も左の述語)が選
択され、処理は先に述べたように継続する。
【0036】述語が節のヘッド述語とマッチするなら
ば、プロセッサは節のボディ述語をリストの初めのQu
ery_List に加え(50 マッチング節のボディ
述語をリストの初めのQuery_Listに加え
る)、その後、全てのQuery_List述語にバイ
ンディング(σ)を加える(52 σを全ての Que
ry_List述語に加える)。 置換を行った後、処理
は問合せ(32 Query_Listは終了したか
?)へ戻る。以下に説明するように、本発明によれば、
ある照会簡素化処理ルールがこの時の、即ち、問合せ3
2への処理の戻りに先立ち主プログラムの処理と混交さ
れることが望ましい(54 簡素化処理)。
【0037】先に述べたように、PROLOGのインタ
プリタは、プロセッサが初期の処理(即ち、命令36に
おける)のための照会における最も左の述語を選択する
ように伝統的に「述語選択ルール」を定義する。更に、
1つ以上の述語マッチングが見出される場合は、プロセ
ッサが節のマッチングのトップ・ダウン・リストにおけ
る最も左の節(即ち、問題の述語により解を得る第1の
節)を選択するようにインタプリタが「節の選択ルー
ル」を定義する(即ち、命令44において)。これらの
ルールは共に不必要な照会処理をしばしばもたらす結果
となるが、これはより少ないタイプ述語の処理に集中す
るのではなく通常はタイプのインスタンスの評価に重要
な時間が費やされるためである。
【0038】例えば、図2のタイプ階層に戻り、従来の
PROLOGのインタプリテーション即ちサーチ法が、
最初に節7で照会を解き、次いで節3および8でFri
endly(X)を解き、変数(X)を国Aに固定す
る。失敗に先立ち節6により解かれる代替の Dang
erous_Visit(Country A)が行わ
れる。この時、プロセッサは述語照会Friendly
(X)へ戻り、これは節4により解かれ、その後節9、
6、5および9により再び解かれる。この全ての処理
は、最終的には結果X=Country Bを生じるこ
とになる。別の親交国を加えることは単純により多くの
バックトラック処理数を招くことに注意されたい。再
び、PROLOGの伝統的な述語選択および節選択のル
ールの左の第1のトップダウン処理はそれぞれ重要なイ
ンスタンス・レベルの処理をもたらす結果となる。
【0039】本発明の手法によれば、新規な述語および
節の選択ルールが導入される。これらの新しい述語およ
び節の選択ルールは、PROLOGプログラムの述語/
節間の順序付けの定義を必要とする。このような順序付
けは、述語のランキングにより得られる。述語のランク
付けのため種々の試みが使用できるが、1つの選好され
る試みについては、図5のフローチャートに関して以下
に記述する。
【0040】概説すれば、図5は、プログラムにおける
各述語があるランクを割当てられるランキング方式を含
む。1つの述語Pに対して、ランク(P)は次のように
定義される。即ち、(ファクト以外に)節がなければ、
Pが節のヘッドであるように0;述語が1つの節のヘッ
ドに現れ、タイプ述語でなければ、∞;XがPがヘッド
である節に現れる全ての述語のランクの最高である場合
は、1+X。一旦述語がこのようにランク付けされる
と、本発明の手法は、ランク(即ち、ランク(P))が
他の全ての述語Qより大きいかこれと等しい最も左の述
語P(即ち、照会におけるランク(Q)(ランク(Q)
≦ランク(P))を選択することである。この新しい節
の選択ルールは、選択された照会で解くことができる他
の節Eに対して、ランク(節E)≦ランク(節D)とな
るように、最初の節Dを選択することであり、但し、1
つの節の相対的ランクは下記の如く定義される。Cおよ
びDをそのヘッドに同じ述語を持つ2つの節としよう。
RcおよびRdをそれぞれ節C同じDにおける最下位のラ
ンクの述語のランクとしよう。従って、Rc≦Rdなら
ば、ランク(節C)≦ランク(節D)となる。等しい場
合は、同じ節の最上位のものが選択される。
【0041】特に図5のフローチャートによれば、処理
されるべきPROLOGプログラムにおける全ての節お
よびファクトは、述語のタイプと共に初めて識別される
(60 PROLOGプログラムにおける全ての節およ
び述語を入力し、述語のタイプをリストする)。次に、
問題となるPROLOGプログラムにおけるファクトで
ある各述語Pはランク0を割当てられる(62 プログ
ラムにおけるファクトである各述語P毎に、ランク0を
割当てる;P.RANK←0)。次いで、述語Pが節の
ヘッド述語であるかどうかについて問合せが行われる
(64 述語Pが節のヘッド述語として現れるか?)。
もし「no」ならば、述語Pの最後のランクは0となる
(66 P.RANK=0は述語Pに対する最後のラン
ク)。もし「yes」ならば、プロセッサは、述語Pが
タイプ述語であるかどうかを判定する(68 述語Pが
タイプ述語か、P:−Bか?)。もし「no」ならば、
述語Pの最後のランクは∞となる(70 P.Rank
=∞が述語Pの最後のランク)。問合せ68に対する答
えが「yes」ならば、ボディにおける全ての述語がラ
ンク付けされるかどうかについて問合せが行われる(7
1 ボディにおける全ての述語が既にランク付けされた
か?)。もし「no」ならば、ランク付けされない述語
が処理のため選択され(78 ランク付けされない述語
を選択)、問合せ64へ戻る。ボディにおける全ての述
語が既にランク付けされるならば、述語Pが節のヘッド
述語であるボディ述語リストBバーにおける各ボディ述
語毎に、最高ランクXが見出される(72 ボディ述語
リストBバーにおける各ボディ述語B毎に、最高ランク
Xを見出せ)。述語Pのランクは、1+最高ランクXに
等しいものと定義される(74 述語Pのランクを1+
Xにセット、P.Rank=1+X)。
【0042】特定の述語Pをランク付けした後、全ての
述語がランク付けされたかについて問合せが行われる
(76 全ての述語がランク付けされたか?)。もし
「no」ならば、次のランクされない述語が選択され
(78 ランクされない述語を選択)、この新しい述語
のランク付けが先に述べたように行われる。一旦全ての
述語がランク付けされると、述語が終了する(80 終
了)。1つ以上の述語のマッチングが見出される場合、
本文に提示した節の選択ルールの使用の前に、識別され
た節間の相対的ランク付けが確立されねばならない(即
ち、図3および図4のフローチャートにおける命令4
7)。これは、節Cバーのリストにおける各節Cに節の
ボディ述語の最低ランクを割当てることにより行われ
る。更に、2つ以上の節が同じ相対的ランクを有するな
らば、リストにおける最上位のものが節の選択ルールに
従って最初に処理されることになる。
【0043】図6のタイプ束については、先に述べたラ
ンク付け法を用いて、「NATO」および「非提携」の
述語がそれぞれランク0を割当てられるが、これは両方
共ファクト述語であるためである。「親交」および「非
親交」はそれぞれランク1が割当てられる(即ち、各々
が節のヘッド述語として現れ、また各々がタイプ述語で
あるため、ランクはこれらの項が節のヘッド述語である
節におけるボディ述語の最高ランクである(1+X)と
して定義され、即ち、ランク=1+0=1)。同じ分析
を用いて、「国」はランク2として定義される(即ち、
ランク=1+1=2)。「Dangerous_Vis
it」および「Adventurous_Visit」
はそれぞれランク∞を割当てられるが、これは各々が節
のヘッド述語として現れるもタイプ述語ではないためで
ある。本例により定義される全ての述語対の順序付けは
下記の如くである。即ち、
【0044】Rank(Friendly)≦Rank
(Country) Rank(Unfriendly)≦Rank(Cou
ntry) Rank(NATO)≦Rank(Friendly) Rank(Non−Aligned)≦Rank(Fr
iendly) Rank(Non−Aligned)≦Rank(Un
friendly) Rank(Unfriendly)≦Rank(Dan
gerous_Visit) Rank(Friendly)≦Rank(Adven
turous_Visit) Rank(Dangerous_Visit)≦Ran
k(Adventurous_Visit)
【0045】再び、照会は、
【0046】 ?−Adventurous_Visit(X)
【0047】ここでは選択がないため、述語「Adve
nturous_Visit」は節7で解かれて次の目
標を得る。
【0048】?−Friendly(X),Dange
rous_Visit(X)
【0049】「Dangerous_Visit」は
「Friendly」より高いランクを持つため、述語
の選択ルールは最初の処理に対する 「Dangero
us_Visit」の選択を要求する。この述語は、節
6で解かれて下記の照会を結果として生じる。即ち、
【0050】?−Friendly(X),Unfri
endly(X)
【0051】「Friendly」および「Unfri
endly」は同じランクを持つため、照会における最
も左のものが最初に解かれる述語を含む。また、節3お
よび節4は同じランク付けを持つため、最上位の節であ
る節3が選択され、下記をもたらす結果となる。
【0052】 ?−NATO(X),Unfriendly(X)
【0053】この時、2つの簡素化ルールが用いられ
る。最初に、その時の Query_Listにおける2
つの述語が同じならば、それらの一方を削除する。第2
に、その時の Query_Listにおける同じでない
述語がランク0を持ち同じ引数を持つならば、失敗を宣
言する。これは、ゼロのランクを持つ述語がベース述語
であるためであり、これらが同じでなければ、そのタイ
プは必然な素である。これらの簡素化ルールの使用は、
伝統的なPROLOGサーチ法と混交されることが望ま
しい。例えば、簡素化法は図3のプログラムの処理の流
れにおける命令54として実現することができる。
【0054】上記の処理例に戻り、第2の簡素化ルール
を用いて、その時の照会 ?−NATO(X),Unf
riendly(X)は失敗となる。別の節である節4
については、下記の照会が得られる。即ち、
【0055】?−Non−Aligned(X),Un
friendly(X)
【0056】次の選択された述語は「Unfriend
ly(X)」で、これは節5で解かれる時、下記の照会
をもたらす結果となる。即ち、
【0057】?−Non−Aligned(X),No
n−Aligned(X)
【0058】この照会は第1の簡素化ルールにより短縮
されて下記を得る。即ち、
【0059】?−Non−Aligned(X)
【0060】ランク0のこの照会は次にファクトで解か
れて唯1つの答えX=Country Bを生じる。
【0061】当業者は、本文に述べた修正選択ルールお
よび本文に示した2つの簡素化ルールが、インスタンス
・レベル・サーチ前にタイプ・レベル・サーチを生じる
照会評価法をもたらす結果となることを認識しよう。イ
ンスタンス・レベルのサーチ前にタイプ束サーチを集中
することにより、照会の処理時間(コスト)における著
しい節減が得られる。更に、タイプ述語のランクによる
タイプ階層のコード化法は、現在あるPROLOGイン
タプリタに僅かな修正を必要とするに過ぎない。開示さ
れた手法は、エキスパート・システム、オブジェクト指
向データベース、オブジェクト指向演繹データベースお
よび知識表示のためのPROLOGの使用を著しく(マ
グニチュード次元での)高速化することができる。更
に、提示された概念は、他のオブジェクト・ベースの論
理プログラミング言語で書かれたプログラムの処理に適
用可能である。
【0062】
【発明の効果】本発明は、サーチ・スペースの低減に照
らした優れた試みを提供する。
【図面の簡単な説明】
【図1】PROLOGプログラム処理システムを示すブ
ロック図である。
【図2】本発明により処理されるサンプルPROLOG
プログラムに対する簡単なタイプ束を示す図である。
【図3】本発明によるPROLOGプログラム照会処理
の説明に役立つフローチャートである。
【図4】本発明によるPROLOGプログラム照会処理
の説明に役立つフローチャートである。
【図5】本発明による述語ランク付け手法の一例を示す
フローチャートである。
【図6】本発明によりランクが割当てられた図2のタイ
プ束を示す図である。
【符号の説明】
10 処理システム 12 中央処理装置 14 PROLOGインタプリタ 16 PROLOG作業スペース 18 入出力装置
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ディパヤン・ガンゴパデャイ アメリカ合衆国 ニューヨーク州、ブリュ ースター、ヴィレッジ・ドライブ 1206

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】オブジェクト指向論理プログラミング言語
    における、述語および節のクラス/サブクラス・レベル
    階層を定める分類学的分類を有するプログラムにおける
    照会の実行方法において、 前記クラス/サブクラス・レベル階層に基いて前記プロ
    グラムの述語および節にランク付けを予め割当て、 前記割当てられた述語および節のランク付けを用いて前
    記プログラムを照会サーチするステップを含み、該プロ
    グラムの照会は、述語/節のクラス・レベルのサーチが
    述語/クラスのサブクラス・レベル・サーチに先行し、
    かつ述語/節のクラス/サブクラス・レベル・サーチが
    述語/節のインスタンス・レベル・サーチに先行するよ
    うに実行されることを特徴とする方法。
  2. 【請求項2】前記論理プログラミング言語がPROLO
    Gであることを特徴とする請求項1記載の照会実行方
    法。
  3. 【請求項3】述語および節の前記クラス/サブクラス・
    レベル階層がタイプ述語と、節のヘッド述語と、述語イ
    ンスタンスとを含み、前記照会サーチが、 処理のため前記照会から1つの述語を選択し、 前記プログラムにおける述語インスタンスまたは節のヘ
    ッド述語が前記選択された照会述語とマッチするかどう
    かを識別し、 マッチングが識別される場合、マッチする述語インスタ
    ンスまたは節のヘッド述語を前記選択された照会述語と
    固定するステップを含むことを特徴とする請求項2記載
    の方法。
  4. 【請求項4】照会に応答してPROLOGプログラムを
    実行する方法であって、該PROLOGプログラムが述
    語および節のタイプ束を有する方法において、 前記タイプ束に基いて前記プログラムの述語および節に
    ランク付けを予め割当て、 前記割当てられた述語および節のランク付けを用いて前
    記プログラムをサーチするステップを含み、該プログラ
    ムの照会は、述語/節のタイプ・レベルのサーチが述語
    /節のインスタンス・レベルのサーチに先行するように
    実行されることを特徴とする方法。
  5. 【請求項5】述語および節の前記タイプ束が、タイプ述
    語と、節のヘッド述語と、述語インスタンスとを含み、
    前記照会サーチが、 処理のため前記照会から1つの述語を選択し、 前記プログラムにおける述語インスタンスまたは節のヘ
    ッド述語が前記選択された照会述語とマッチするかどう
    かを識別し、 マッチングが識別される場合、述語インスタンスまたは
    節のヘッド述語を前記選択された照会述語と固定するス
    テップを含むことを特徴とする請求項4記載の方法。
JP4265662A 1991-12-02 1992-10-05 オブジェクト指向論理プログラムおよび演繹データベースにおけるタイプ束による照会の最適化 Pending JPH05250162A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/801,323 US5307445A (en) 1991-12-02 1991-12-02 Query optimization by type lattices in object-oriented logic programs and deductive databases
US801323 1991-12-02

Publications (1)

Publication Number Publication Date
JPH05250162A true JPH05250162A (ja) 1993-09-28

Family

ID=25180797

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4265662A Pending JPH05250162A (ja) 1991-12-02 1992-10-05 オブジェクト指向論理プログラムおよび演繹データベースにおけるタイプ束による照会の最適化

Country Status (3)

Country Link
US (1) US5307445A (ja)
EP (1) EP0545090A3 (ja)
JP (1) JPH05250162A (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2696853B1 (fr) * 1992-10-12 1994-12-23 Bull Sa Procédé d'aide à l'optimisation d'une requête d'un système de gestion, de base de données relationnel et procédé d'analyse syntaxique en résultant.
US5659725A (en) * 1994-06-06 1997-08-19 Lucent Technologies Inc. Query optimization by predicate move-around
US5696973A (en) * 1995-02-17 1997-12-09 International Business Machines Corporation Index-based method for supporting multimethod function overloading with compile-time type checking and run-time dispatch
JP2747251B2 (ja) * 1995-07-24 1998-05-06 日本電気ホームエレクトロニクス株式会社 画像・音声編集システム
US5875285A (en) * 1996-11-22 1999-02-23 Chang; Hou-Mei Henry Object-oriented data mining and decision making system
DE19725965C2 (de) * 1997-06-19 2000-07-27 Naser Abdelwahab Verfahren eines deduktiven Kataloges zur allgemeinen Constraintsbehandlung im erweiterten relationalen Datenbankkonzept
US6157922A (en) 1997-10-24 2000-12-05 Trilogy Development Group, Inc. Method and apparatus for transparent backtracking
US6499036B1 (en) 1998-08-12 2002-12-24 Bank Of America Corporation Method and apparatus for data item movement between disparate sources and hierarchical, object-oriented representation
US6327587B1 (en) 1998-10-05 2001-12-04 Digital Archaeology, Inc. Caching optimization with disk and/or memory cache management
US6601058B2 (en) 1998-10-05 2003-07-29 Michael Forster Data exploration system and method
US6928399B1 (en) 1999-12-03 2005-08-09 Exxonmobil Upstream Research Company Method and program for simulating a physical system using object-oriented programming
US8170906B2 (en) * 2002-11-15 2012-05-01 Erick Von Schweber Method and apparatus for information surveying
US7240078B2 (en) * 2003-11-25 2007-07-03 International Business Machines Corporation Method, system, and program for query optimization with algebraic rules
EP1759226A1 (en) * 2004-06-07 2007-03-07 ExxonMobil Upstream Research Company Method for solving implicit reservoir simulation matrix equation
EA200701169A2 (ru) * 2004-11-29 2008-08-29 Шеврон Ю.Эс.Эй. Инк. Способ, система и запоминающее устройство для хранения программ для моделирования потока жидкости в физической системе с использованием расширяемой объектно-ориентированной архитектуры, основанной на динамической композиции
EP2247820A4 (en) * 2007-12-13 2016-02-24 Exxonmobil Upstream Res Co PARALLEL ADAPTIVE DATA DISTRIBUTION IN A STORAGE SIMULATION USING AN UN-STRUCTURED GRID
BRPI0919457A2 (pt) * 2008-09-30 2015-12-01 Exxonmobil Upstream Res Co método para simular escoamento de fluido em um reservatório de hidrocarboneto
CN102165413A (zh) * 2008-09-30 2011-08-24 埃克森美孚上游研究公司 自适应迭代求解器
US10162609B2 (en) * 2014-08-26 2018-12-25 Microsoft Technology Licensing, Llc Model-driven object composition for data access using function-expressions
DE102015013593A1 (de) 2015-10-15 2017-04-20 makmad.org e.V. Effizientes Verfahren zur logischen Vervollständigung eines deduktiven Kataloges zur allgemeinen Constraintsbehandlung im erweiterten relationalen Datenbankkonzept
DE102018008923A1 (de) 2018-10-09 2020-05-20 makmad.org e. V. Verfahren zur Erstellung einer effizienten, logisch vollständigen, ontologischen Ebene im erweiterten relationalen Datenbankkonzept

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4276597A (en) * 1974-01-17 1981-06-30 Volt Delta Resources, Inc. Method and apparatus for information storage and retrieval
US4318184A (en) * 1978-09-05 1982-03-02 Millett Ronald P Information storage and retrieval system and method
JPS5941064A (ja) * 1982-08-31 1984-03-07 Nec Corp プロログ処理装置
JPS59163659A (ja) * 1983-03-07 1984-09-14 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション ワ−ド・プロセシング・システムにおけるデ−タ・セツトのアクセス方式
US4620286A (en) * 1984-01-16 1986-10-28 Itt Corporation Probabilistic learning element
US4760523A (en) * 1984-06-29 1988-07-26 Trw Inc. Fast search processor

Also Published As

Publication number Publication date
EP0545090A2 (en) 1993-06-09
EP0545090A3 (en) 1993-12-22
US5307445A (en) 1994-04-26

Similar Documents

Publication Publication Date Title
JPH05250162A (ja) オブジェクト指向論理プログラムおよび演繹データベースにおけるタイプ束による照会の最適化
US7693820B2 (en) Use of materialized transient views in query optimization
Chamberlin et al. SEQUEL 2: A unified approach to data definition, manipulation, and control
US6915290B2 (en) Database query optimization apparatus and method that represents queries as graphs
EP0070119B1 (en) Join operation processing system in relational model
Ross et al. Monotonic aggregation in deductive databases
US6947930B2 (en) Systems and methods for interactive search query refinement
US7266553B1 (en) Content data indexing
US5471677A (en) Data retrieval using user evaluation of data presented to construct interference rules and calculate range of inputs needed for desired output and to formulate retrieval queries
US6560595B1 (en) Operator for correlated predicates in a query
US8626756B1 (en) Tagging data assets
Gauch et al. Search improvement via automatic query reformulation
CA2204733A1 (en) Object oriented database management system
WO1996015501A9 (en) Object oriented database management system
Lusk et al. The automated reasoning system ITP
US8577865B2 (en) Document searching system
Jones et al. INDEX: The statistical basis for an automatic conceptual phrase‐indexing system
US8635620B2 (en) Hardware device for processing the tasks of an algorithm in parallel
Nicholson et al. A denotational semantics for Prolog
JPH01123320A (ja) 探索コマンドの形成方法と装置
US20040054636A1 (en) Self-organizing neural mapper
Brafman et al. A new look at the semantics and optimization methods of CP-networks
Maulsby et al. Cima: an interactive concept learning system for end-user applications
CA1276728C (en) Information retrieval system and method
Adam et al. A form-based natural language front-end to a CIM database