JP4219165B2 - エンティテイにインデックス付けする方法 - Google Patents
エンティテイにインデックス付けする方法 Download PDFInfo
- Publication number
- JP4219165B2 JP4219165B2 JP2002550553A JP2002550553A JP4219165B2 JP 4219165 B2 JP4219165 B2 JP 4219165B2 JP 2002550553 A JP2002550553 A JP 2002550553A JP 2002550553 A JP2002550553 A JP 2002550553A JP 4219165 B2 JP4219165 B2 JP 4219165B2
- Authority
- JP
- Japan
- Prior art keywords
- area
- points
- sub
- subquad
- quad
- 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.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 claims description 122
- 230000008569 process Effects 0.000 claims description 61
- 238000004590 computer program Methods 0.000 claims description 3
- 230000003936 working memory Effects 0.000 claims 2
- 230000003213 activating effect Effects 0.000 claims 1
- 238000000547 structure data Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 24
- 230000001133 acceleration Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000036772 blood pressure Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 101100182247 Caenorhabditis elegans lat-1 gene Proteins 0.000 description 1
- 206010028980 Neoplasm Diseases 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000036760 body temperature Effects 0.000 description 1
- 201000011510 cancer Diseases 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005553 drilling Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99935—Query augmenting and refining, e.g. inexact access
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Processing Or Creating Images (AREA)
- Organic Low-Molecular-Weight Compounds And Preparation Thereof (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Description
【発明の属する技術分野】
この発明は、データベース内に記憶されるエンティティ(entities)とともに使用するインデックスを付ける方法に関する。
【0002】
【従来の技術】
あるデータベース内に莫大な数のエンティテイが存在しているときには、そのデータベース内のデータに関する問合せと合理的な時間的期間の中で調和をとりながらエンティテイを識別することが決して些細な活動でないことはすぐに分ることである。検索プロセスを容易にするために、データベース内のデータは、一般に何らかの方法でインデックスを付けられ、問合せはそこでインデックスについて実行される。エンティテイがインデックスを付けられるやり方は検索することの品質と速度について重要な意味をもつと期待できるのであり、情報がデータベース内に次第に増すように記憶されると、データにインデックスを付ける改良方法を見付けることが重要な関心事となる。
【0003】
場所の名称に基づいて、位置データにインデックスを付けることは知られている。また場所の名称から地理的な一組の座標を検索して、この座標から抽出された地形学的(topological)情報に基づいたインデックスを構築することも知られている(例えば、“GIPSY”はUCバークレイ校でジョイントNSF/NASA/ARPA(Wilensky他,1994)主導で共同開発されている)。さらに、地理的な座標自体に基づいてインデックスを構築することも知られている。OracleTMのようなデータベースベンダ(vendors)は幾何学的なデータを記憶してインデックスを付けるためのシステムを開発しており、例えばOracle空間データカートリッジがそれであり、これは空間的な問合せがSQLの拡張された(標準形ではない)形式を用いて実行されるようにしている。その他のベンダはMapInfoTM,SpatialWareTM,InnogisticTM,及びInformixTMのようなもので、空間データを処理するのに類似の専有のやり方を有している。とくに、InnogisticTMはCartology DSIとして知られている製品を開発し、これが幾何学的なベクトルデータをブロブ(blobs)として記憶する(これは二値の大きなオブジェクトであり、基礎に置かれたデータベースによっては真性な(intrinsically)ものとして認識できないものである。InnogisticTMはよく知られた“クアッド−ツリー(quad tree)”というアイデアに基づいてデータベースの外部でインデックスを創ることもする。このインデックスデータはバイナリ−ツリー(binary−tree)の構造の中に記憶されて、Distributed Component Object Model(DCOM)ミドルウェアサービスによってアクセスされる。
【0004】
【発明が解決しようとする課題】
OracleTMとInnogisticTMの両システムは、クアッド−ツリー方法の使用を行ない、この方法ではレイヤ(layer)の全領域が分割されまた部分分割(subdivided)されて一連の四つがネストした(nested)正方形とされる。全体の領域は0,1,2,3と指定された四つの正方形の一つに対して指定されている。こういった正方形の各々は四つのもっと小さな正方形に部分分割される。正方形1の領域は10,11,12,13となる。こういったものの各々がさらに部分分割され、これが意味しているのは、例えば正方形11の部分分割がインデックス値110,111,112,113を指定されるということである。結果として、地図の中のいずれの場所も単一のインデックス番号によって参照することができる。このクアッドツリーの方法での不都合な点は、部分分割された正方形の内部に点が一つも存在しないとすると処理時間が浪費されるということである。もしインデックス付けが大きな領域にわたって実行されるとすると、この浪費した処理時間は些細なものとはならずコスト高のものとなる。
【0005】
米国特許US 6,161,105はシステムを記述していて、それによると、多次元データが二進ハイパースペイシャル(hyperspatial)コード(BH code)によって提示されていて、このコードはクアッドツリー(quad tree)方法を用いてインデックス付けができる。
代りのインデックス付け方法は、k次元(k−dimensional)バイナリ−サーチツリー(binary search tree)方法であって、J.L.Bentley“Multidimentional binary search tree for associative searching”Commun.ACM18(9),1975,pp.509〜517に記述されている。この方法では、インデックスを付けられることになる点を含んでいる区域の垂直と水平の側部が比較されて、この区域が長い方の側部と垂直な直線によって二つの部分に分割されている。分割、もしくは区分け、線の位置は各結果として生じた部分がデータの同量を含むように決められている。この方法は、所定規準に合致するまで、反復して二つの部分の各々に適用される。一般に、この規準はリレーショナルデータベース内のページの容量(言い換えればデータベースの記憶拘束条件)に関係している。区分けされた部分はバイナリ−ツリーではノード(nodes)として提示され、区分間を分けている線の位置はそのツリーの中のノードの位置(他のノードに関する)となっている。この方法は関心のある領域に関する点の検索にとってとくに効果的なものであり、その理由はサーチ空間(バイナリ−ツリー)の部分が関心のある領域と部分を分けている線との間の単純な比較によって除去されるようにできることによる。
k−dツリー方法を地理的データに適用することは、“A file organisation for geographic information system based on spatial proximity”by Matsuyama et al,“Computer Vision,Graphics and image processing 26 pp.303〜318(1984)”に記述されている。とくに、Matsuyamaらはk−dツリー法の効果をクアッドツリー方法と比較し、k−dツリー方法は記憶空間の使用とデータ検索という両方の点ではるかに効果的な方法であることを見付けている。このうち記憶空間の使用については、クアッドツリー方法は一般に点のない地区に対しクアッドをしたがって記憶領域を割当てることが理由であり、またデータ検索は、サーチ空間が、上述のようにk−dツリー方法を用いて効果的に減らされるようにできることによる。
k−dツリー方法が標準のクアッドツリー方法よりも一層効果的であるという事実にも拘らず、以前として実際に必要とされるよりも多い領域に記憶領域を割当てる。上述のように、区域を区分するときに(バイナリ−ツリーの中にノードを作るときに)、区分けしている線は、結果として生ずる各部分が同じデータ量を含むように決められていて;その結果、必要とされるものよりも部分は大きなサイズとなり、終局的にはバイナリ−ツリーが必要以上に多くのノードをもつことになる。
【0006】
【課題を解決するための手段】
この発明の第一の特徴によると、複数のエンティテイに対してインデックスを構築する方法が提供され、各エンティテイは空間内で定義された点によって表わされている。該方法は:
(i)該エンティテイを表わしている点の周りに区域を作ることと;
(ii)該創られた区域に係るプロセスを実行することを含んでおり、該プロセスは、記憶領域内に該区域を識別するデータを記憶する段階と、該記憶領域内に、該区域内に入る点へのリンクを識別するリンクデータを記憶する段階と、複数の部分区域に該区域を分割する段階とを備えており;
該方法は、該複数の部分区域の各々について、さらに
(iii)所定の規準が満足されることとなるまで関係する該プロセスを繰返し実行することを含んでおり;
該記憶領域は該エンティテイに対するインデックスを構成し;
該プロセスが該区域の外に入る点の一つを生ずることとなるまで区域を減らすことを含んでいることを特徴とする。
【0007】
こうして、既知のインデックス付け方法との比較では、この発明は先ずインデックス付け空間を“シュリンク(shrinks)”して、それにより、点を含む領域上にだけインデックスを付けるようにする。したがって記録領域は対応してコンパクトになり、これが記憶空間の使用を最小とするという面で利点がある。
【0008】
実際、“A file organisation for geographic information system based on spatial proximity”と題した前記書面を参照して、Matsuyamaらはクワッドツリー方法に関連する問題、すなわち空のデータベースページ(p312参照)のインデックス付けを識別するが、しかし本発明の方法(k−dツリー方法)とは全く異なる方法を適用することによって問題を解決する。
【0009】
好都合なことは、区域を減らす段階が二次元の各々の次元でエンティテイ間の距離を計算することを含んでいて;また該次元の各々について、どのエンティテイがエンティテイ間で一番大きな距離を有しているかを識別することを含み、それによって該二つの次元が互に垂直であるときには、段階(ii)で創られた区域が少くとも二つの点により定義された矩形であるようにすることである。
部分区域(sub−regions)はいわゆる点の“リンクしたリスト(linked list)”を介してリンクされるようにできて、このリストは当業者に知られている効果的なリンク機構(linking mechanism)となっている。
好ましくは、この地区が四つの部分区域に分けられて、段階(ii)と(iii)とが第二の区域の各々について反復して繰返される。
便利なのは、この方法がデータベース内にリンクデータを記憶することと、該データベース内に記憶されたエンティテイの数のレジスタを維持することと、各部分区域について、現在のレジスタの数を対応する該記憶領域に書込むこととを含んでいることである。
【0010】
好都合なのはこの発明の前記第一の特徴に従ってインデックスを付けられたエンティテイが検索されるようにできることである。とくに該エンティテイに対応している点についてみれば、所定の領域により包含されている点は次の段階を実行することによって検索できる。すなわち
(a)該所定の領域によって包含される1またはそれ以上の区域を識別し、各区域は1またはそれ以上の点を取囲んでいて、リンクデータと関係しており、リンクデータは、各区域について、その区域により取囲まれている点を識別する段階と;
(b)該識別した区域に対応しているリンク用データにアクセスして該識別した区域により取囲まれた点を検索するようにする段階である。
【0011】
この区域は、この発明の第一の特徴によりインデックスを付けられた記憶領域に対応している。したがって記憶領域がコンパクトであるので、上述したように区域は点の周りに“シュリンクラップ(shrink wrapped)”されていて、インデックス内での点の識別は効果的なプロセスとなっている。
【0012】
好ましくは識別する段階(a)はある区域を検索して、その区域に関してプロセスを実行する段階を含んでおり、このプロセスは次の段階を含んでいる:すなわち、該領域の広がりの程度を該所定領域の広がりの程度と比較して第一の地域が該所定領域と重なるかどうか確定するようにし;そしてもし重なりが存在すれば該地区の部分区域を検索して、該所定領域内部に完全に入る広がりの程度をもつようなどんな部分区域をも識別する段階を含んでいる。このプロセスは各部分区域について、すべての部分区域が該所定領域内に完全に入ると識別されるまで繰返すことができる。
【0013】
便利なのは、複数の点が、それぞれの区域とその部分区域との間の関係に従って点のリストとして、前もって記憶されていて、またリンクデータは点のリスト内で対応している取囲まれた点の第一のものの位置を示している値を含んでいることである。アクセス段階(b)はそこで各識別された地区と部分区域とについて次のことを備えている:つまり取囲まれている点の数を表わしている識別子を検索すること、識別された部分区域と関係している位置の値を検索すること;及び、該点のリストにアクセスして、該位置の値により与えられる該リスト内の位置から取囲まれた点の数を検索することとを備えている。
【0014】
好ましくは、リンクデータ内に包まれた値が該記憶領域に書込まれたレジスタの数と対応していることである。
【0015】
この方法の段階は好ましくは1又はそれ以上の計算機プログラム内で実施され、このプログラムは全部があるいは一部が通信網上での伝送のために搬送波で信号として実施されているか、あるいは計算機が読取り可能な媒体の中で計算機プログラム製品として実施されているか、あるいはその両方として実施できるものである。
【0016】
便利なのは、点が二次元で表現できるデータと対応していることで、例えば位置(緯度と経度)データまたはレンジデータであることである。レンジデータは、営業時間(例えば始業及び終業時刻)、価格のマージン(例えば最高及び最低価格)、及び/又は医用データ(例えば、最高と最低血圧)を含んでいる。したがって、所定の領域は価格のレンジとすることができ、最高の家の価格と最低の家の価格といったものとすることができる。上で記述した検索方法によると、所定の領域の広がりは(すなわち、価格レンジ)はインデックスから検索された領域と比較される。特定の価格レンジの内に完全に入るある区域が識別されるまでこの価格のレンジと重なっているすべての領域はそこで継続して検索され、この識別された区域内に入るすべての点は、こうして特定された最大と最小の価格レンジ内に入るある価格をしている商品を表わす。
【0017】
【実施の形態】
この発明のさらなる様相、特徴、利点は添付の図面を参照して以下の好ましい実施形態の記述から明らかになる。
【0018】
概要
図1に示したようなデータベースサーバDB1,DB2は一般にユーザによる検索のための情報を記憶する。物理的なレベルでは、データベースサーバDB1,DB2が置かれている通信環境は少くとも一つのユーザインターフェースを含み、これが普通は計算機端末又はワークステーションT3により用意される。
【0019】
この発明の実施形態は、ワークステーションT3上で実施することができ、ワークステーションT3はデータベースサーバDB1,DB2に接続されている。データベースサーバDB1,DB2は端末T3と同じLAN N1上に示されてはいるが、データベースサーバDB1,DB2は異なる網に接続されるようにできて、異なる網が今度は1又はそれ以上のスイッチ及び/又はルータ(図示せず)を経由してLAN N1に接続されるようになると理解される。実施形態は入力として、例えばファイルとしてデータを受領して、データに対するインデックスを構築するが、その詳細は後述するところである。構築されたインデックスはそこでデータベースDB1,DB2の一つの中にセーブ(保管)され、またインデックスを付けたデータもセーブされ、その順序は構築されたインデックスの構造により与えられ、データベースDB1,DB2の一つにセーブされる。構築されたインデックスは、そのデータが記憶されていたデータベースと同じか異なるデータベース上にセーブすることができる。
【0020】
この発明の実施形態は、二次元で定義されているエンティテイにインデックス付けをすることに関係している。実施形態によりインデックス付けができるエンティテイの明白な例にはオブジェクト(objects)の場所、例えば給油所、現金出納機等のあるところであって、オブジェクトの位置は通常は緯度と経度とによって定義されているところである。数多くの他のエンティテイが二次元によって提示できる。例えば、モーターバイクの加速度は時間と速度との関数であり、ある材料の伝導率は材料の性質と温度との関数であり、オブジェクトの変形は材料の性質とオブジェクトに加えられる力との関数である等という具合である。さらに、変換をn次元パラメータに適用してこのパラメータを二次元パラメータにすることができて、二次元パラメータを二次元空間で表示することができる。
【0021】
この発明の実施形態を用いてインデックス付けができるエンティテイのさらなる例はレンジ情報を含んでいて、例えば時間的な情報、価格情報及び医用状態情報などを含んでいる。
【0022】
時間的なレンジ(range)情報の例は営業(business)とかレジャー施設の開始と終了の時間であり、こういった時間は二次元で表現できる。例えば終了と開始の時刻とがそれぞれ縦軸と横軸とで表現できる。同じように、一番速い時刻と一番遅いデリバリー時刻とが二次元で表現できる。
【0023】
価格情報の例は商品の価格を含み、したがって、例えば商品の最高価格と最低価格とが二次元の一方上でそれぞれ表現できて、この発明の実施形態を用いてインデックス付けができる。価格情報はまた取引情報を含んでいて、株式、債券などの売買に使用されるところとなる。
【0024】
医用状態情報の例は、体温と血圧といった測定可能な状態に関する統計を含んでいるし、癌の部位といった数値表示に変換可能な状態を含んでいる。
【0025】
以下の記述では、エンティテイは一般に“点(points)”と呼ばれ、エンティテイのコンテクスト(例えば給油所、現金出納機など)を実施形態の機構から分離するのにあてている。
【0026】
全体を概観するとして、点にインデックスを付ける方法の実施例は、図2を参照して記述される。図2は領域R1を示し、この領域の内部では、複数の点200が置かれている。各点はx,y座標空間で定義される。本質的に、領域R1がインデックスを付けられることになる点を含んでいて、領域R1が調べられて、点を含んでいる領域R3,R4と、点を含んでいない領域R2に分割される(領域はどんな形に分けることもでき、矩形、三角形、条(strips)のようになってよいが、図2はこの発明の発明思想を記述する目的で条に分けられた領域を示している)。この実施形態は、次に領域R3とR4との中の点の分布を調べ、領域R1について考慮されたよりも小さな規模(scale)についての識別し、R3とR4との領域には点が含まれている。図3を参照すると、R4は本質的にR11となり、R11内部での点の分布が調べられる。このやり方で点の分布に集中してみると、いずれの点も含んでいない領域である、図2の領域R2と、図3の領域R12とは黙示的に無視されている。プロセスは継続して繰返されて、小さくなって行くサイズの一連の領域を介して実効的に“掘り下げ(burrowing down)”が進み、領域のサイズが単一の点のサイズを破壊してしまうところまで行く。実施形態の“掘り下げ”として、各領域がその上の領域とリンクされていて、それにより各点は一連の領域によってリンクされている。こういった点に対するインデックスは、一連の領域を含んでいて、こういった領域と点とはインデックスを創るために使用される(後により詳述する)が、このインデックスがデータベースDB1内にセーブされる。点と領域との間の関係はインデックス内の領域の識別子によって識別されることになる。
【0027】
上述したように、インデックスを創る利点の一つは問合せ探索ドメインが領域に限られていて、この領域は点を含むことが既知であることである。すなわち、問合せはデータベースDB1内にセーブされた領域上でのみ実行されることになり、またこういった領域は定義により点を含んでいるので、探索ドメインは相対的にコンパクトなものとなっている。もう一度図2の参照に戻ると、ある問合せに関して点を識別するプロセスは上述の実施形態によると、領域R1全体に係る情報を備えたインデックスの場合よりも高速となる。
【0028】
実施形態の特定形式が図4〜12を参照して提示されているが、そこでは、点はx,y空間内の二次元座標となっている。インデックスを付けることになるエンティテイが加速度値であるとすると、この加速度値は時間と速度との値についての対応している組によって定義されていて、この時間と速度との値はx,y座標空間上に直接写像されて、それにより(t1,v1),(t2,v2)…(tn,vn)が加速度値に対応している点の座標となる。同様に、もしインデックスを付けることになるエンティテイが位置の値であって緯度と経度との値の対応する組により定義される値であれば、緯度と経度との値がx,y座標空間上に直接写像されて、(lat_1,long_1)…(lat_n,long_n)が位置の値に対応している点の座標となる。点は記憶されている(例えばあるファイルに書込まれている)と仮定されていて、それによりこの発明の実施例はファイルから点を読出す。代りの実施例ではユーザが点を入力できるものとし、その条件として点についてのインデックスが構築されそうになっているときとしている。
【0029】
さらに、以下に示す実施例では、領域は正方形であって、以下の記述では“クアッド(quads)”とが“サブクアッド(sub-quads)”と呼ぶこととし、各クアッド(quad)は継続して四つのサブクアッド(sub−quad)に分割されている。各サブクアッドは点の存在について調べられる。点のないものは無視されて、このことは図2と図3とを参照して記載された領域R2を無視することと同じプロセスであり、各新しいサブクアッドで点を含んでいるものがそのサブクアッド内の点を含んでいる一番小さな領域の周囲に“シュランク・ラップト(shrunkwrapped)”される。この実施例は正方形に従って領域を解析するが、数多くの他の形状も点の周りで“シュリンク・ラップ(shrink−wrap)”するのに使用できる。各サブクアッドは次に再び四つのサブクアッドに分けられて、空のサブクアッドが再び無視されて、各残っているサブクアッドが点を含んでいる一番小さな領域の周りで“シュリンク・ラップ”される。結果的に、各残っているサブクアッドは単一の点に“シュリンク・ラップ”されて、その座標が関与している点の座標となる。一旦クアッドとすべてのサブクアッドであって、無視されずに介在しているサブクアッドと単一の点と一致しているサブクアッドの両方を含んでいるものが識別されると、その点に対するインデックスでそれぞれのものと関連のあるクアッドとサブクアッドを備えているものが作られる。これが図6〜図11を参照して後に詳しく論じられる。
【0030】
以下では、段階S4.1ないしS.4.9が図4と図5との流れ図で連続して示されており、また図6ないし図12で示すように同じ参照番号で動作により示されている。
【0031】
図6
・段階S4.1 インデックスを付けることになるすべての点のx,y座標を読み込む。(上述したように、これらの点は記憶場所であるファイルなどから読出されてよいし、あるいはユーザから直接であってもよい);
・段階S4.2 すべての点について境界を形成している(bounding)箱を製図し、識別し、その周りを“シュリンクラッピング(shrink wrapping)”する。x次元,y次元の両方における一番外側の点の座標間の差、それぞれdxとdyによって境界を形成している箱が与えられる。この箱は一番外側のクアッド501である;・段階S4.3及びS4.4 クアッド501の広がりの程度(extent)をセーブする。すなわちdx,dyをセーブし、その中の点の座標をセーブする;
・段階S4.5 一番外側のクアッド501は正の寸法を有しているか(すなわち、クアッド501のdxとdyとはゼロに等しいか?)どうかをチェックする。図6に示した例では、一番外側のクアッド501が存在し、その理由はこのクアッドがその中に複数の点を有していて、dx,dyはゼロでなく、したがってクアッド501が正の寸法(size)をもつことによる;
・段階S4.6 一番外側のクアッド501を四つのサブクアッド503a,503b,503c,503dに分割する;
・段階S4.6.1 それぞれのサブクアッドで各点をタグ付けして、各サブクアッド内の点の数を記録する;
・段階S4.7 サブクアッド0(503a)から始まって、サブクアッド503a内にいずれかの点が存在するかどうかチェックする。
点があるときには、このサブクアッド0(503a)内部の点を段階S4.1に対して入れて、段階S4.1を介してサブクアッド0(503a)について進行させることとし、図7を参照して後述するように、実行する。
【0032】
図7
・段階S4.1 サブクアッド503aに対応している点のx,y座標を読み込む;
・段階S4.2 503a内のすべての点について境界を形成している箱を製図し、“シュリンクラップ”したサブクアッド0(601)を創る。これが上述した原理を示していて、実施例はサブクアッド0内部の領域で点のないところを識別し、この領域はそこで無視される;
・段階S4.3及び段階S4.4 サブクアッド0(601)の広がりの程度すなわち、dx,dyと、その中の点の座標とをセーブする;
・段階S4.5 サブクアッド601が正の寸法をもつかどうか(すなわち、クアッド601のdx,dyがゼロに等しいかどうか?)をチェックする。図7で見るように、クアッド601はその中に複数の点を有していて、クアッド601についてはdx,dyはゼロではなく、したがってサブクアッド601は正の寸法(サイズ)を有している;
・段階S4.6 サブクアッド0(601)を四つのサブクアッド、すなわち0,0(603a),0,1(603b),0,2(603c),0,3(603d)に分割する;・段階S4.6.1 各点に関連するサブクアッドでタグ付けをして、各サブクアッド内の点の数を記録する;
・段階S4.7 サブクアッド0,0(603a)から始まって、サブクアッド0,0(603a)内にいずれかの点が存在するかどうかチェックする:点があるときには、このサブクアッド0,0(603a)内部の点を段階S4.1に入れて、段階S4.1を介してサブクアッド0,0(603a)について進行させることとし、このことは図8を参照して後述する。
【0033】
図8
・段階S4.1 サブクアッド603aに対応している点のx,y座標を読み込む;
・段階S4.2 サブクアッド0,0(603a)内のすべての点について境界を形成している(取囲んでいる)箱を製図し、“シュリンクラップ”したサブクアッド0,0(701)を創る。サブクアッド0について、サブクアッド603a内部で点がない領域は無視される;
・段階S4.3及び段階S4.4 サブクアッド0,0(701)の広がりの程度すなわち、dx,dyをセーブして、その中の点の座標をセーブする;
・段階S4.5 サブクアッド701が正の寸法を持っているかどうか?をチェックする(すなわち、クアッド701のdx,dyがゼロに等しくないか?をチェックする)。図8から分るように、クアッド701はその中に複数の点を有していて、クアッド701についてdx,dyはゼロではなく、このサブクアッド701は正の寸法をもつ。
・段階S4.6 サブクアッド0,0(701)を四つのサブクアッド:0,0,0(703a)、0,0,1(703b)、0,0,2(703c)、0,0,3(703d)に分割する。
・段階S4.6.1 各点に関連のサブクアッドでタグ付けをして、各サブクアッド内の点の数を記録する;
・段階S4.7 サブクアッド0,0,0(703a)で開始して、サブクアッド0,0,0(703a)内にいずれかの点が存在するかどうかチェックする:サブクアッド0,0,0(703a)内に一つの点が存在すれば、このサブクアッド0,0,0内部の点を段階S4.1に入れて、段階S4.1を介してサブクアッド0,0,0(703a)について進行することとし、それについては図8を参照してさらに以下で記述する。
【0034】
図8についても
・段階S4.1 サブクアッド703aに対応している点をx,y座標で読み込む;
・段階S4.2 サブクアッド0,0,0(703a)内のすべての点について取囲んでいる箱を製図して、“シュリンクラップ”したサブクアッド0,0,0を作る:ここでは単一の点の周りに作ることになる。
・段階S4.3及び段階S4.4 “シュリンクラップ”したサブクアッド0,0,0の広がりの程度をセーブし、ここでは単一点となるまでにしてあるのでdxとdyとはゼロに等しく、この点の座標をセーブする;
・段階S4.5 この点をもつサブクアッドが正の寸法を有するかどうかをチェックする。(すなわちこの点のdxとdyがゼロに等しいかどうかをチェックする。)事実dxとdyとは共にゼロであり、その理由はサブクアッド703aが単一の点にまで分解されていることによる。そこで段階S4.8へ進む;
・段階S4.8 サブクアッドカウンタiをこのレベル(0,0,i)でインクレメントし、サブクアッド0,0,1(703b)内部の点を段階S4.1に入れて(段階S4.7)、段階S4.1を介してサブクアッド0,0,1(703b)について進行する。これについては図9を参照して以下に記述する。
【0035】
図9
・段階S4.1 サブクアッド703bに対応している点のx,y座標を読み込む;
・段階S4.2 サブクアッド0,0,1(703b)内のすべての点について取囲んでいる箱を製図して、“シュリンクラップ”したサブクアッド0,0,1(801)を創る。サブクアッド0についてと同様に、サブクアッド703b内部で点のない領域は無視される;
・段階S4.3及び段階S4.4 サブクアッド801についての広がりの程度すなわち、dx,dyをセーブし、またその中の点の座標をセーブする;
・段階S4.5 サブクアッド801が正の寸法かどうか(すなわち、クアッド703aのdx,dyがゼロに等しいかどうか)をチェックする。サブクアッド801がその中に複数の点をもっていれば、クアッド801についてのdx,dyはゼロでなく、したがってサブクアッド801は正の寸法を有する;
・段階S4.6 サブクアッド0,0,1(801)を四つのサブクアッド、0,0,1,0(803a)、0,0,1,1(803b)、0,0,1,2(803c)、0,0,1,3(803d)に分割する。
・段階S4.6.1 関連するサブクアッドで各点をタグ付けし、各サブクアッド内の点の数を記録する;
・段階S4.7 サブクアッド0,0,1,0(803a)で開始して、サブクアッド0,0,1,0(803a)内にいずれかの点があるかどうかをチェックする:サブクアッド0,0,1,0(803a)には点は存在しない;
・段階S4.8 サブクアッドカウンタiをこのレベル(0,0,1,i)でインクレメントして、サブクアッド0,0,1,1(803b)内部の点を段階S4.1に加えて(段階S4.7)、段階S4.1を介して、サブクアッド0,0,1,1(803b)について進行していく。このことについては図10を参照して以下で記述する。
【0036】
図10
・段階S4.1 サブクアッド803bに対応している点のx,y座標を読み込む;
・段階S4.2 サブクアッド0,0,1,1(803b)内のすべての点について取囲んだ箱を製図し、“シュリンクラップ”したサブクアッド0,0,1,1を作り、これが単一の点となる;
・段階S4.3及び段階S4.4 この単一の点の広がりの程度(extent)、すなわちdx,dyをセーブし、この点の座標をセーブする;
・段階S4.5 この点が正の寸法をもっているかどうか、すなわちこの点のdx,dyがゼロに等しいかどうかをチェックする。事実は、サブクアッド803bが単一の点に分解されているので、dxもdyも共にゼロであり、段階S4.8に進む;
・段階S4.8 このレベル(0,0,1,i)でサブクアッドカウンタiをインクレメントし、サブクアッド0,0,1,2(803b)内部の点を段階S4.1に入れて、段階S4.1を介してサブクアッド0,0,1,2(803b)に進行する。このことはさらに図10を参照して記述して行く。
【0037】
また図10について
・段階S4.1 サブクアッド803cに対応している点のx,y座標を読み込む;
・段階S4.2 サブクアッド0,0,1,2(803c)内のすべての点について取囲んでいる箱を製図して、“シュリンクラップ”したサブクアッド0,0,1,2(これは単一の点である)を作る;
・段階S4.3及び段階S4.4 この単一の点についての広がりの程度すなわちdx,dyをセーブし、またこの点の座標をセーブする;
・段階S4.5 この点が正の寸法であるかどうか、すなわちこの点のdx,dyがゼロに等しいかどうかをチェックする。事実は、サブクアッド803cが単一の点に分解しているのでdxとdyとは共にゼロである。そこで段階S4.8へ進む;
・段階S4.8 このレベル(0,0,1,i)でサブクアッドカウンタiをインクレメントする。サブクアッド0,0,1,3(803d)内部には点は存在しないので(段階S4.7)、そこで段階S4.8に戻り:サブクアッドカウンタiをこのレベル(0,0,1,i)でインクレメントする:しかしi>3であるから、
・段階S4.9 サブクアッドレベル0,0,iに戻って、サブクアッドカウンタを1から2へインクレメントして、ここでサブクアッド0,0,2(703c)を考える:サブクアッド0,0,2(703c)には一つ点があり、したがってサブクアッド0,0,2(703c)内部にこの点を入れ(段階S4.7)て、段階S4.1へ向い、段階S4.1を介してサブクアッド0,0,2(703c)について進行する。このことは図11を参照して説明するところである。
【0038】
図11
・段階S4.1 サブクアッド703cに対応している点のx,y座標を読み込む;
・段階S4.2 サブクアッド0,0,2(703c)内のすべての点について取囲んでいる箱を製図して、“シュリンクラップ”したサブクアッド0,0,2(これは単一の点である)を創る。
・段階S4.3及び段階S4.4 この単一の点の広がりの程度すなわちdx,dyをセーブし、この点の座標をセーブする;
・段階S4.5 この点が正の寸法をもっているかどうか、すなわちこの点のdx,dyがゼロに等しいかどうかをチェックする。事実は、サブクアッド703cは単一の点にまで分解されているのでdxとdyとは共にゼロである。したがって段階S4.8となる;・段階S4.8 このレベル(0,0,i)でサブクアッドカウンタiをインクレメントする。サブクアッド0,0,3(703d)内部には点は存在しない(段階S4.7)ので段階S4.8へ戻る:このレベル(0,0,i)でサブクアッドカウンタiをインクレメントする:しかしi>3であるからそこで
・段階S4.9 サブクアッドレベル0,iに戻り、サブクアッドカウンタiを0から1へインクレメントして、これによりサブクアッド0,1(603b)を考慮する。このことが図12を参照して記述される。
【0039】
図12
図7〜11で記述したプロセスが繰返されるが、サブクアッド0,1については、サブクアッド0,n内部のすべての点が一度サブクアッドに指定されてしまうと、このプロセスはサブクアッド1に向けて移動することになる。
【0040】
始めに記述したように、こういった点に向けてのインデックスを構築することは、サブクアッド情報をセーブすることという事項である。このことについてはたくさんのやり方が工夫考案されているが、好ましいのは、インデックスが段階S4.3とS4.4とでセーブされたサブクアッド情報を備えていることであり、言い換えると、x,y座標でのサブクアッドの広がりの程度(extent)と、その中に落ち込むことになる点の座標であり、またそのサブクアッド内部の四つのサブクォードラント(sub−quadrants)へのリンクであることとされる。したがって、このインデックスは本質的にはサブクアッド構造の階層構造を備え、この構造は階層構造が各継続するサブクアッドとその四つのサブクアッドとの間の関係によって与えられるものとなっている。サブクアッドはサブクアッド階層構造に従ってインデックスに書込まれ、このサブクアッド階層構造は最大のサブクアッド(ここでは図6の501)から一番小さいサブクアッドに下っていくものである。
【0041】
データベースDB1内にサブクアッド構造をセーブすることに加えて、点がこのデータベースに書込まれる。このデータベースは同じものでも異なるものでもよく、例えばファイル内にサブクアッド階層構造の反転したもので与えられる順序で書込まれる。したがって、この場合には、階層構造の底のサブクアッド内の点が先ずファイル内に書込まれる。点がファイルに書込まれるにつれて、点の全数についての移動書付け記録(running tally)(点の数のレジスタ)が維持されて、ファイルに各点が書かれると、カウンタが次のように提示する:“current number of points encountered so far+1”(これまでに出逢った点の現在数プラス1)であり、これがそれぞれのサブクアッド構造に書込まれる。移動書付け記録は一番小さなサブクアッドから上方へ作業をして行き、各サブクアッドについては、そのサブクアッド内のすべての点の第一のものの位置をインデックスを付けられているすべての点によって(Possub_quad )本質的に表示する。例えば、図13を参照すると、次のようになる。
【0042】
【表1】
【0043】
こうして、サブクアッド501(一番外側のクアッド、図6を参照)についての点のファイルはn,m,p,o…を読む(これが一番小さいサブクアッド0,0,1,1から始まっている)。点の数(N)と、点のサブクアッド内の第一の点に対応している移動書付け記録(Possub_quad)の数の両方がそのサブクアッドに対して書かれるので、次に、関心のあるサブクアッドが一旦識別されると、識別されたサブクアッド内部に存在する点が点ファイル内でPossub_quadへ移動してその位置からN個の点を抽出することによって抽出ができる。このことが点の検索を示している実施例の中で示されている。
【0044】
情報の検索( Retrieval )
第二の発明は、各要素と他の要素でそのインデックス内のものとの間の関係と、インデックス内の要素とインデックスを付けられているエンティテイとの間の関係とが既知のときに、エンティテイと関係している要素のインデックスによってエンティテイを検索する方法に関するものである。この方法は上で提示したインデックス付けの方法に従って創り出されたインデックスに対して直ちに適用ができるのであり、その理由は、このインデックスがサブクアッド構造の階層構造を備えていて、またこの階層構造が(クアッド>サブクアッド関係により)よく定義されていることによる。しかしながら、この方法は、こういった条件を満足するいずれの形式のインデックスに対して等しく適用できることに留意されたい。
【0045】
以下の記述では、検索プロセスの実施例が記述され、そこでは点に対するインデックスが問合せが“関心のある区域(region of interest)”を特定する問合せで照合される。次のことが仮定される:
・インデックス内の要素は所定領域内部の複数の領域である;
・インデックスを付けられるエンティテイは、二次元によって定義される点である;
・領域間には所定の関係が存在する;また
・領域と点との間には所定の関係が存在する。
本質的なことは、実施例が領域のどれが次のものであるかを識別するというのである:
a)関心のある区域と重なる、また
b)関心のある区域と重なるこういった領域内部に点を含んでいる。
領域と点との間の所定の関係がそこで使用されて識別された領域内部に落ち込む点を抽出する。
【0046】
関心のある領域はエンティテイの二次元提示内部の区域を指している。したがって、上述の時間的なレンジ(range)(すなわち、営業やレジャー施設の閉じたり開いたりする時間)については、関心のある区域は関心のある時間期間であって、“店は10時と13時の間開いている”といったものである。関心のある区域はそこである区域(好ましいのは正方形)によって定義されることで、この区域は前もって特定された点の内部に取囲まれている。図35a〜eを参照すると、関心のある領域は次のいずれか一つとなることができる:
(0,10),(13,24)≡10時と13時との間のある時間開いている機関(図35a)
(0,13),(10,24)≡10時と13時との間連続して開いている機関(図35b)
(0,10),(10,13)≡10時前に開くが13時前に閉じる機関(図33c)
(10,13),(13,24)≡10時後に開くが13時後に閉じる機関(図33d)(10,10),(13,13)≡10時後に開きしかも13時前に閉じる機関(図33e)
同じように、上述した値段付け範囲については、関心のある区域は価格のレンジ(範囲)であり、それ故に、「範囲が英ポンド50.00ないし80.00の範囲のどこかに入ることになるすべてのアイテム」についての検索要件については、関心のある区域は点(0,50)と(80,80)との内部に限定されてた区域によって定義できる。
【0047】
上述した位置情報については、関心のある区域は場所の範囲であり、例えば「第一の場所((lat,long)1 )と第二の場所((lat,long)2 )の間に置かれた全アイテム」のようなものである。
【0048】
関心のある区域と重なる領域を識別する方法の段階を示している流れ図は、関心のある区域が位置情報と関係しているときに、図14と図15とに示されている。これらの段階は、図16に示した関心のある区域については、図16ないし図33で示されている。この実施例では、所定区域内部の領域の特定例がクアッドとサブクアッドとして呼ばれている。図14,図15に示した方法の段階は以下に図16ないし図33の各々を参照して記述されている。
【0049】
図16
・S13.1.1 関心のある区域(x1,y1)(x2,y2)のx,y座標を読み込む。例をあげると、もしユーザがある領域内のガレージ(garages)を位置決めしたいとすると、これが緯度/経度の対としてインデックス付けされて、二次元の空間内の点を定義するものとなり、またユーザが関心をもっている地理的領域が、その二次元の空間内で「関心のある区域」として表現されることができる。
・S13.1.2 点の座標と一番外側のクアッドについてのクアッドの寸法とを検索し、一番外側のクアッドの寸法に対して(X1_Q,Y1_Q),(X2_Q,Y2_Q)を設定する;
・S13.2 関心のある区域が切取り(cropping)を必要とするかどうか評価する:もしx1<X1_Qであればx1=X1_Qと設定し;もしy1<Y1_Qであればy1=Y1_Qと設定し;もしx2>X2_Qであればx2=X2_Qと設定し;もしy2>Y2_Qであればy2=Y2_Qと設定する。例としての関心のある区域で図16に示したものは、これらの条件のいずれも満足していないと;
・S13.3 x1>x2もしくはy1>y2かどうかを評価する。この場合、いずれの条件も満足されていないと;
段階S13.2とS13.3とは条件の唯一の例であり、この条件は関心のある区域とS13.1.2で検索されたサブクアッドが重なるかどうか、また、もし重なりが存在すれば重なっている区域内にいずれかの点が存在するかどうかを確定するために適用できるものである;この確定に適用するために代りの方法が適用できるものと考えている。
・S13.4 関心のある区域がそのクアッドと正確に重なっているかどうか評価する。否(NO)であれば:
・S13.5 図17を参照して記述するように、S13.1.2に従って現在のクアッド(501)のサブクアッド(503a)を検索する。
【0050】
図17
・S13.1.2 “シュリンクラップ”したサブクアッド0(601)から点の座標とサブクアッドの寸法とを検索する: “シュリンクラップ”したサブクアッド601の寸法に、(X1_Q,Y1_Q)(X2_Q,Y2_Q)を設定する;
・S13.2 関心のある区域が切取り(cropping)を必要としているかどうか評価する:もしx1<X1_Qであればx1=X1_Qと設定し;もしy1<Y1_Qであればy1=Y1_Qと設定し;もしx2>X2_Qであればx2=X2_Qと設定し;もしy2>Y2_Qであればy2=Y2_Qと設定する。この場合こういった条件がいずれも満足されていないと;
・S13.3 x1>x2またはy1>y2かどうか評価する。この場合にいずれの条件も満足されていないと;
・S13.4 関心のある区域がそのクアッドと正確に重なっているかどうか評価する。否であれば:
・S13.5 図18と19を参照して記述するように、S13.1.2に従って現在のサブクアッドのサブクアッドを検索する。
【0051】
図18及び図19
・S13.1.2 “シュリンクラップ”したサブクアッド0,0(701)から点の座標とサブクアッドの寸法とを検索する:(X1_Q,Y1_Q)(X2_Q,Y2_Q)を“シュリンクラップ”したサブクアッド701の寸法に設定する;
・S13.2 関心のある区域が切取り(cropping)を必要としているかどうか評価する:x2>X2_Qであればx2=X2_Qと設定し;またy2>Y2_Qであればy2=Y2_Qと設定する;
・S13.3 x1>x2あるいはy1>y2かどうかを評価する。この場合(図19)両条件が満足されているならば、これが関心のある区域内部に落込むサブクアッド0,0(701)内の点が存在しないことを意味する;
・S13.6 このレベル(0,i)でサブクアッドカウンタiをインクレメントし、図20と21を参照して記述するようにS13.1.2に従ってサブクアッド(0,1)を検索する。
【0052】
図20及び図21
・S13.1.2 “シュリンクラップ”したサブクアッド0,1から、点の座標とサブクアッドの寸法とを検索する: (X1_Q,Y1_Q)(X2_Q,Y2_Q)を“シュリンクラップ”したサブクアッド0,1の寸法に対して設定する;
・S13.2 関心のある区域が切取り(cropping)を必要としているかどうか評価する:x1<X1_Qであればx1=X1_Qと設定し、またy2>Y2_Qであればy2=Y2_Qと設定する;
・S13.3 x1>x2もしくはy1>y2であるかどうか評価する。いずれの条件も満足されていない場合には;
・S13.4 関心のある区域(今では切取りがされている)がサブクアッドと正確に重なっているかどうか評価する。否であれば:
・S13.5 図22(a)と図22(b)とを参照して記述するように、S13.1.2に従って現在のサブクアッド0,1のサブクアッド0,1,0を検索する。
【0053】
図22(a)及び図22(b)
・S13.1.2 “シュリンクラップ”したサブクアッド0,1,0から、点の座標とサブクアッドの寸法を検索する: (X1_Q,Y1_Q)(X2_Q,Y2_Q)を“シュリンクラップ”したサブクアッド0,1,0の寸法に設定する;
・S13.2 関心のある区域が切取り(cropping)を必要とするかどうか評価する:x2>X2_Qであればx2=X2_Qと設定し、またy2>Y2_Qであればy2=Y2_Qと設定する;
・S13.3 x1>x2あるいはy1>y2かどうか評価する。この場合(図22b)両条件が満足されたならば、すなわち関心のある区域内に入るサブクアッド0,1,0内に点が存在していないことを意味する;
・S13.6 このレベル(0,1,i)でサブクアッドカウンタiをインクレメントし、図23(a),23図(b)を参照して記述するように、S13.1.2に従ってサブクアッド(0,1,1)を検索する(S13.6.1)。
【0054】
図23(a)及び23図(b)
・S13.1.2 “シュリンクラップ”したサブクアッド0,1,1から点の座標とサブクアッドの寸法とを検索する:“シュリンクラップ”したサブクアッド0,1,1(すなわち単一の点)の寸法に(X1_Q,Y1_Q)(X2_Q,Y2_Q)を設定する。・S13.2 関心のある区域が切取り(cropping)を必要としているかどうか評価する:x1<X1_Qであればx1=X1_Qと設定し、y2>Y2_Qであればy2=Y2_Qと設定する;
・S13.3 x1>x2あるいはy1>y2であるかどうか評価する。この場合(図23(b))に両方の条件が満足されれば、関心のある区域内に入るサブクアッド0,1,1内に点が存在しないことを意味する;
・S13.6 このレベル(0,1,i)でサブクアッドカウンタiをインクレメントし、S13.1.2に従ってサブクアッド(0,1,2)を検索する(S13.6.1)。このことは図24(a)と24(b)とを参照して記述するところである。
【0055】
図24(a)及び図24(b)
・S13.1.2 “シュリンクラップ”したサブクアッド0,1,2から点の座標とサブクアッドの寸法とを検索する:(X1_Q,Y1_Q)(X2_Q,Y2_Q)を“シュリンクラップ”したサブクアッド0,1,2すなわち単一の点に設定する;
・S13.2 関心のある区域が切取り(cropping)を要求しているかどうか評価する:x1<X1_Qであればx1=X1_Qと設定し、y1<Y1_Q,x2>X2_Q及びy2>Y2_Qであればx1=X1_Q,y1=Y1_Q,x2=X2_Q,y2=Y2_Qと設定する。
・S13.3 x1>x2もしくはy1>y2であるかどうか評価する。否であれば
・S13.4 関心のある区域(今までは切取られている)がサブクアッドと正確に重なるかどうか評価する:肯定(YES)であれば
・S13.4.2 サブクアッドとそのサブクアッド内の点の数(ここでは1)とを記録する;
・S13.6 このレベル(0,1,i)でサブクアッドカウンタiをインクレメントし、図25(a)及び25図(b)を参照して記述するようにS13.1.2に従ってサブクアッド(0,1,3)を検索する(S13.6.1)。
【0056】
図25(a)及び図25(b)
・S13.1.2 “シュリンクラップ”したサブクアッド0,1,3から点の座標とサブクアッドの寸法とを検索する:(X1_Q,Y1_Q)(X2_Q,Y2_Q)を“シュリンクラップ”したサブクアッド0,1,3すなわち単一の点に対して設定する;
・S13.2 関心のある区域が切取り(クロッピング)を必要としているかどうか評価する:x1<X1_Qであればx1=X1_Qと設定し、y1<Y1_Q,x2>X2_Q及びy2>Y2_Qであればx1=X1_Q,y1=Y1_Q,x2=X2_Q,y2=Y2_Qと設定する;
・S13.3 x1>x2もしくはy1>y2であるかどうか評価する。否であると
・S13.4 関心のある区域(今では切取られている)がサブクアッドと正確に重なるかどうか評価する:肯定(YES)であれば
・S13.4.2 サブクアッドとサブクアッド内の点の数(ここでは1)とを記録する;
・S13.6 このレベル(0,1,i)…i>3でサブクアッドカウンタiをインクレメントし、図26,27を参照して記述するようにS13.1.2に従ってサブクアッド(0,2)を検索する(S13.6.2)。
【0057】
図26及び図27
・S13.1.2 “シュリンクラップ”したサブクアッド0,2から、点の座標とサブクアッドの寸法とを検索する: (X1_Q,Y1_Q)(X2_Q,Y2_Q)を“シュリンクラップ”したサブクアッド0,2の寸法に対して設定する;
・S13.2 関心のある区域が切取り(クロッピング)を要求するかどうかを評価する:y1<Y1_Qであればy1=Y1_Qと設定し、またx2>X2_Qであればx2=X2_Qと設定する。
・S13.3 x1>x2もしくはy1>y2であるかどうか評価する。この場合にいずれの条件も満足されていなければ;
・S13.4 関心のある区域(今では切取りがされている)がサブクアッドと正確に重なるかどうか評価する。否であると:
・S13.5 現在のサブクアッド0,2のサブクアッド0,2,0をS13.1.2に従って、図28(a)と図28(b)とを参照して記述するように検索引出しする。
【0058】
図28(a)及び図28(b)
・S13.1.2 “シュリンクラップ”したサブクアッド0,2,0から点の座標とサブクアッドの寸法とを検索する:(X1_Q,Y1_Q)(X2_Q,Y2_Q)を“シュリンクラップ”したサブクアッド0,2,0の寸法に対して設定する;
・S13.2 関心のある区域が切取り(クロッピング)を必要としているかどうか評価する:x2>X2_Qであればx2=X2_Qと設定し、またy2>Y2_Qであればy2=Y2_Qと設定する;
・S13.3 x1>x2もしくはy1>y2かどうかを評価する。この場合(図28(b))、両方の条件が満足されると、関心のある区域内部に入るサブクアッド0,2,0内に点が存在しないことを意味する;
・S13.6 このレベル(0,2,i)でサブクアッドカウンタiをインクレメントし、図29(a)と図29(b)とを参照して記述するように、S13.1.2に従ってサブクアッド(0,2,1)を検索する(S13.6.1)。
【0059】
図29(a)及び図29(b)
・S13.1.2 “シュリンクラップ”したサブクアッド0,2,1から点の座標とサブクアッドの寸法とを検索する:(X1_Q,Y1_Q)(X2_Q,Y2_Q)を“シュリンクラップ”したサブクアッド0,2,1すなわち単一の点の寸法に設定する;
・S13.2 関心のある区域が切取り(クロッピング)を必要としているかどうか評価する:x1<X1_Qであればx1=X1_Qと設定し、y1<Y1_Q,x2=X2_Q及びy2>Y2_Qであればx1=X1_Q,y1=Y1_Q,x2=X2_Q,y2=Y2_Qと設定する;
・S13.3 x1>x2或いはy1>y2かどうか評価する。否であれば
・S13.4 関心のある区域(今では切取られている)がサブクアッドと正確に重なるかどうか評価する:肯定であれば
・S13.4.2 サブクアッドとサブクアッド内部の点の数(ここでは1)とを記録する;
・S13.6 このレベル(0,1,i)…i<3でサブクアッドカウンタiをインクレメントして、図30(a)と図30(b)とを参照して記述するようにS13.1.2に従ってサブクアッド(0,2,2)を検索する(S13.6.1)。
【0060】
図30(a)及び図30(b)
・S13.1.2 “シュリンクラップ”したサブクアッド0,2,2から点の座標とサブクアッドの寸法とを検索する:(X1_Q,Y1_Q)(X2_Q,Y2_Q)を“シュリンクラップ”したサブクアッド0,2,2のサイズに対して設定する;
・S13.2 関心のある区域が切取り(クロッピング)を必要としているかどうか評価する:x2>X2_Qであればx2=X2_Qと設定し、またy1<Y1_Qであればy1=Y1_Qと設定する;
・S13.3 x1>x2あるいはy1>y2かどうか評価する。この場合(図30(b))両方の条件が満足されていれば、関心のある区域内に落込むサブクアッド0,2,2内の点は存在しないことを意味する;
・S13.6 このレベル(0,2,i)でサブクアッドカウンタiをインクレメントし、また図31を参照して記述するように、S13.1.2に従ってサブクアッド(0,2,3)を検索する(S13.6.1)。
【0061】
図31
・S13.1.2 “シュリンクラップ”したサブクアッド0,2,3から点の座標とサブクアッドの寸法とを検索する:0,2,3に対応しているサブクアッドは存在しないがその理由はこのサブクアッドに対応している領域内に点が存在しないことであり、そこでS13.6へ跳び
・S13.6.2 このレベル(0,2,i):i>3でサブクアッドカウンタiをインクレメントして、それにより図32及び図33を参照して記述するようにS13.1.2に従ってサブクアッド(0,3)を検索する(S13.6.2)。
【0062】
図32及び図33
・S13.2 関心のある区域が切取り(クロッピング)を必要とするかどうか評価する:x1<X1_Qであればx1=X1_Qと設定し、y1<Y1_Q,x2>X2_Q及びy2>Y2_Qであればx1=X1_Q,y1=Y1_Q,x2=X2_Q,y2=Y2_Qと設定する。
・S13.3 x1>x2かy1>y2かどうかを評価する:否であれば
・S13.4 関心のある区域(今では切取られている)が正確にサブクアッドと重なるかどうか評価する:肯定であれば
・S13.4.2 サブクアッドとサブクアッド内部の点の数(ここでは2)を記録する;
・S13.6 このレベル(0,i)…i>3でサブクアッドカウンタiをインクレメントし、それによりS13.1.2に従ってサブクアッド1を検索する(S13.6.2)。
【0063】
図16から見ることができるように、関心のある区域はサブクアッド0とその中にあるサブクアッドの内部にだけに入ることになり、それにより、図14と図15とに記述したプロセスがサブクアッド1,2,3に適用されるときには、段階S13.2とS13.3で適用された条件2〜3段階(a few steps)以内で該プロセスを終結する。
【0064】
関心のある区域と重なっているサブクアッドを識別するためのプロセスの終りでは、サブクアッドと、こういったサブクアッド内部の点の数であって段階S13.4.2で記録されたものが復帰される。この例は:
サブクアッド0,1,2,点の数:1点
サブクアッド0,1,3,点の数:1点
サブクアッド0,2,1,点の数:1点
サブクアッド0,3, 点の数:2点
ひとたびサブクアッドが識別されると、実際の点が検索される。この実施例では、上述したように、点はフラットファイル内に記憶されている。さらに、各サブクアッド構造は位置を示している数を記憶していて、それぞれのサブクアッド内部の第一の点についての、インデックスを付けられた点の全数と関係している(例えば図4,図5の例を参照するとクアッド501内部の点の全部の数と関係している)。点を実際に検索するためのプロセスは図34に示されている:
段階S13.4.2で記録された各クアッドについては:
・S32.1 サブクアッド(N)の中に入る点の数をそのサブクアッドについて検索する;
・S32.2 対応しているサブクアッド構造(Possub_quad)から第一の点の位置を検索する;
・S32.3 Possub_quadによって与えられる点のファイル内の位置にファイルポインタを移動する;
・S32.4 この位置から、ファイルからN個の点を抽出する。
【0065】
実施
図4及び図5、図14及び図15、また図34で記述したプロセスは、ソフトウェアで実施され、端末T3,T4の1つで実行されるか、端末T3,T4の間で分散される。端末T3,T4はしたがって複数の電算機の一つまたは複数を代表していて、好ましくはサーバコンピュータである。
【0066】
インデックスを付けられることになる点は端末T3,T4にファイルもしくは類似のものを介して入力されることができ、上述したように創られたインデックスがデータベースDB1内に記憶されるようにでき、また点のファイルもデータベースDB1内に記憶されるようにできる。関心のある領域はデータベース問合せの形式で入力されることができ、クライアント端末(図示せず)を介して入力され、既知のやり方で網N1上で通信される。
【0067】
好ましくは、上述のプロセスがCプログラム用言語で実施され、また反復的なプログラミング方法を使用して“バロウダウン(burrow down)”がサブクアッド内部のサブクアッドに対して行なわれることである。このような方法はこの発明にとって本質的なことではないと理解されたい。
【0068】
追加的な詳記事項及び変形
上述したように、この発明は二次元で表現されたデータにインデックス付けをし検索するために使用できる。この発明はまた、二次元よりも高次元のデータをインデックス付けして検索するためにも使用できるのであって、n>2であるn次元データが二次元に変換できるようにする。この場合に、変換された、二次元データはこの発明によってインデックスが付けられて検索される。例えば、三次元空間内で定義されたオブジェクトはNCARグラヒックスのようなパッケージを用いる二次元に変換されることができ、NCARグラヒックスはUnixに基づくグラヒックスパッケージであって、これが広範囲にわたる能力を数値データについての表示と処理とについて提供していて、大気研究用の大学共同体(the University Corporation for Atmospheric Research)によって開発されたものである。(これに関して、http://www.dkrz.de/ngdoc/ng4.0.1をNCARグラヒックスに関係する情報について参照し、また、http://ngwww.ucar.edu/ngdoc/ng/fund/chp16-21/threed.htmlを3次元から2次元変換という問題に係る情報について参照されたい。)
その他の変形修正も可能であり、例えば、簡単なものにクアッドとサブクアッドとを各反復で異なる数の領域へ分割することを用いることがあり、4に代って8とか10とすることが挙げられる。
【図面の簡単な説明】
【図1】 この発明により使用される通信システムの特徴を示す模式図。
【図2】 この発明によりインデックスを付けされる点(ポイント)の例を示す模式図。
【図3】 図2の拡大図を示す模式図。
【図4】 図4(4a)は、図5(4b)と組合わせて流れ図を構成し、図2で示した点にインデックス付けをするときの、この発明によるインデックス付けプロセスの実施例を示す。
【図5】 図5(4b)は、図4(4a)と組合わせて流れ図を構成し、図2で示した点にインデックス付けをするときの、この発明によるインデックス付けプロセスの実施例を示す。
【図6】 図2に示した点の周りにクアッドを創るための図4と図5のプロセスの適用を示す模式図。
【図7】 図6により創られたクアッドのサブクアッドを創るための図4と図5とのプロセスの適用を示す模式図。
【図8】 図7のサブクアッドの一つのサブクアッドを創るための図4と図5とのプロセスの適用を示す模式図。
【図9】 図8の拡大図。
【図10】 図8に示したサブクアッドとは別なものを創るための図4と図5とのプロセスの適用を示す図9の拡大図。
【図11】 図8に示したサブクアッドとは別なものを創るための図4と図5とのプロセスの適用を示す図9の拡大図。
【図12】 図7のサブクアッドの一つの別のサブクアッドを創るための図4と図5とのプロセスの適用を示す模式図。
【図13】 この発明による点を記憶するプロセスを示す模式図。
【図14】 図14(13a)は図15(13b)との組合わせにより流れ図を構成し、関心のある領域に従って点を検索するときのこの発明による検索プロセスの実施形態を示す。
【図15】図15(13b)は図14(13a)との組合わせにより流れ図を構成し、関心のある領域に従って点を検索するときのこの発明による検索プロセスの実施形態を示す。
【図16】 点が検索されることになる関心のある領域の例を示す模式図。
【図17】 図7のサブクアッドの一つに対する図14と図15のプロセスの適用を示す模式図。
【図18】 図17の拡大図であり、図8のサブクアッドの第一のものに対して図14と図15のプロセスの適用を示す模式図。
【図19】 図17の拡大図であり、図8のサブクアッドの第一のものに対して図14と図15のプロセスの適用を示す模式図。
【図20】 図17の拡大図であり、関心のある領域と図8のサブクアッドの第二のものとを示す図。
【図21】 図20に対応している模式図であり、図8のサブクアッドの第二のものに対して図14と図15のプロセスの適用を示す図。
【図22】 (a)と(b)とは図20に示したサブクアッドの(第一の)サブクアッドに対して図14と図15のプロセスの適用を示す模式図。
【図23】 (a)と(b)とは図20に示したサブクアッドの別の(第二の)サブクアッドに対して図14と図15のプロセスの適用を示す模式図。
【図24】 (a)と(b)とは図20に示したサブクアッドの別の(第三の)サブクアッドに対して図14と図15のプロセスの適用を示す模式図。
【図25】 (a)と(b)とは図20に示したサブクアッドの別の(第四の)サブクアッドに対して図14と図15のプロセスの適用を示す模式図。
【図26】 図17の拡大図であり、関心のある領域と、図8のサブクアッドの第三のものとを示す図。
【図27】 図26に対応している模式図であって、図8のサブクアッドの第三のものに対して図14と図15のプロセスの適用を示す図。
【図28】 (a)と(b)とは図26に示したサブクアッドの(第一の)サブクアッドに対して図14と図15のプロセスの適用を示す模式図。
【図29】 (a)と(b)とは図26に示したサブクアッドの別の(第二の)サブクアッドに対して図14と図15のプロセスの適用を示す模式図。
【図30】 (a)と(b)とは図26に示したサブクアッドの別の(第三の)サブクアッドに対して図14と図15のプロセスの適用を示す模式図。
【図31】 (a)と(b)とは図26に示したサブクアッドの別の(第四の)サブクアッドに対して図14と図15のプロセスの適用を示す模式図。
【図32】 図17の拡大図であり、関心のある領域と図8のサブクアッドの第四のものとを示す図。
【図33】 図32に対応している模式図であり、図8のサブクアッドの第四のものに対して図14と図15のプロセスの適用を示す図。
【図34】 図14と図15の検索プロセスに含まれるさらなるステップを示す流れ図。
【図35】 (a)ないし(e)の各図は関心のある領域についての模式的な例示であり、関心のある領域についてこの発明により点が検索されることになる。
Claims (15)
- データベースに蓄積された複数のエンティテイに対してインデックスを構築する方法であって、各エンティテイは、ワーキングメモリ内に部分区域データ構造の階層を構築することによって、空間内で定義された点を識別するデータにより表現されており、該方法はデータプロセッサで実行され、該方法は:
(i)該エンティテイを表わしている点の周りに最小境界区域を作ることと;
(ii)該作られた最小境界区域又は部分区域に係るプロセスを実行することを含んでおり、
該プロセスは、
前記ワーキングメモリ内に区域データ構造或いは部分区域データ構造を生成する段階と、
前記区域データ構造或いは部分区域データ構造内に、それぞれの区域或いは部分区域の大きさを特定するデータを記憶する段階と、
前記区域データ構造或いは部分区域データ構造内に、それぞれの区域或いは部分区域内へ入る点へのリンクを記憶する段階と、
前記区域或いは部分区域を分割して複数の部分区域を生成する段階と、
複数の点を有する前記複数の部分区域の各々に対して、前記複数の点の一つが前記部分区域外に出る結果となるまで前記部分区域を減少させる段階と、を備えており;
該方法は、さらに
(iii)所定の規準が満足されることとなるまで、複数の点を有する生成された部分区域の各々に関して該プロセスを繰返し実行することを含んでおり;
該方法は更に、それぞれの区域データ構造或いは部分区域データ構造内に、それぞれの複数の部分区域に対応する部分区域データ構造へのリンクを記憶する段階を含み、部分区域データ構造の階層が該エンティティに対するインデックスを提供する、方法。 - 請求項1記載の方法であって、該所定の規準は部分区域が単一の点を含むものとする方法。
- 請求項1又は請求項2記載の方法であって、区域を減らす段階が、二次元の各々についてエンティテイに対応している点間の距離を計算することと;
該次元の各々について、どの点が点間で最大の距離を有するかを識別し、該二次元が互に直交しているときには、段階(i)で作られた最小境界区域が矩形であり、少くとも二つのエンティテイに対応する点によって定義されるようにすることとを含んでいる方法。 - 請求項1ないし請求項3のいずれか1項記載の方法であって、該区域が四つの部分区域に分割されている方法。
- 請求項1ないし請求項4のいずれか1項記載の方法であって、段階(ii)及び(iii)が反復して繰返される方法。
- 請求項1ないし請求項5のいずれか一項記載の方法であって、データベース内に該エンティティを記憶することと、該データベース内に記憶されたエンティテイの数のレジスタを維持することと、各部分区域について、現在のレジスタの数を対応する該部分区域データ構造に書込むこととを含んでいる方法。
- 請求項6記載の方法であって、エンティテイが該データベースに部分区域のサイズに従って書込まれて、一番小さな部分区域内に入るエンティテイが該データベースに最初に書込まれるようにする方法。
- 請求項1ないし請求項7のいずれか1項記載の方法であって、段階(i)ないし(iii)を発動させるためのトリガ信号を受信することを含んでいる方法。
- 請求項1ないし請求項8のいずれか1項記載の方法であって、所定区域内部に含まれている1又はそれ以上のエンティテイを検索する段階を更に含み、各エンティテイは請求項1ないし請求項8のいずれか1項記載の方法によりインデックスが付けられており、本項記載の方法は、
(a)該所定領域内部に含まれている1又はそれ以上の区域を識別し、各区域が1又はそれ以上の点を取囲んでいて、しかも、各区域について、その区域によって取囲まれた点を識別するリンクデータと関係付けがされているようにする段階と;
(b)該識別された区域に対応しているリンクデータにアクセスして、それにより該識別された区域により取囲まれた点を検索するようにする段階とを含んでいる。 - 請求項9に記載の方法であって、該識別する段階(a)
は、
(i)ある区域を識別するデータを検索する段階と;
(ii)該区域に関して、次の段階を備えたプロセスを実行する段階とを含み、
該プロセスは、該区域の広がりの程度を該所定領域の広がりの程度と比較して該区域が該所定領域と重なるかどうかを確定する段階と、もし重なりがあれば、該区域の部分区域を識別するデータを検索して、かつ広がりの程度が該所定領域内部に完全にある部分区域を識別する段階とを含んでおり;また
(iii)各部分区域について、すべての部分区域が完全に該所定領域内に入ることが識別されるまで該プロセスを繰返す段階も含んでいて、
さらに、該アクセスする段階(b)は該識別された部分区域に対応しているリンクデータにアクセスすることを含んでいて、それにより該部分区域により取囲まれた点を検索するようにした方法。 - 請求項10記載の方法であって、該複数の点は、それぞれの区域とその区域の部分区域との間の関係に従って点のリストとして予め記憶されていて、該リンクデータは該点のリスト内の該対応している取囲まれた点の第一のものの位置を表示する値を含み、
また、該アクセスする段階(b)は、該識別した区域の各々について:
取囲んだ点の数を表わす識別子を検索し、かつ該識別した区域と関係する位置の値を検索することと;
該点のリストにアクセスして、該位置の値により与えられるリスト内の位置から取囲まれた点の数を検索することを含んでいる方法。 - 請求項9ないし請求項11のいずれか1項記載の方法であって、該区域と、対応しているリンクデータとがインデックス内に記憶される方法。
- 請求項9ないし請求項12のいずれか1項記載の方法であって、該所定の領域がレンジ情報に対応する方法。
- 請求項13記載の方法であって、該レンジ情報は地理的レンジ情報、動作時間情報、配信時間情報、及び医療情報のいずれか一つを含んでいる方法。
- 計算機に対して、請求項1ないし請求項14記載の方法を実行させる一組の命令を備えている計算機プログラム。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP00311234 | 2000-12-15 | ||
EP00311228 | 2000-12-15 | ||
GB0123154A GB0123154D0 (en) | 2001-09-26 | 2001-09-26 | Method of indexing entities |
PCT/GB2001/005486 WO2002048909A1 (en) | 2000-12-15 | 2001-12-11 | Method of indexing entities |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004516553A JP2004516553A (ja) | 2004-06-03 |
JP4219165B2 true JP4219165B2 (ja) | 2009-02-04 |
Family
ID=27223583
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002550553A Expired - Lifetime JP4219165B2 (ja) | 2000-12-15 | 2001-12-11 | エンティテイにインデックス付けする方法 |
JP2002550552A Expired - Lifetime JP4259864B2 (ja) | 2000-12-15 | 2001-12-11 | エンティテイを検索する方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002550552A Expired - Lifetime JP4259864B2 (ja) | 2000-12-15 | 2001-12-11 | エンティテイを検索する方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US7904486B2 (ja) |
JP (2) | JP4219165B2 (ja) |
AU (2) | AU2002222172A1 (ja) |
CA (2) | CA2430446C (ja) |
DE (1) | DE60132243T2 (ja) |
WO (2) | WO2002048909A1 (ja) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080168002A1 (en) * | 2007-01-05 | 2008-07-10 | Kagarlis Marios A | Price Indexing |
US20090164300A1 (en) * | 2007-12-21 | 2009-06-25 | Yahoo! Inc. | Application program interface and graphical user interface for providing a user interface for targeting mobile advertisements in a mobile marketing environment |
US8589436B2 (en) * | 2008-08-29 | 2013-11-19 | Oracle International Corporation | Techniques for performing regular expression-based pattern matching in data streams |
US8935293B2 (en) * | 2009-03-02 | 2015-01-13 | Oracle International Corporation | Framework for dynamically generating tuple and page classes |
US10789834B2 (en) * | 2009-11-24 | 2020-09-29 | Verizon Patent And Licensing Inc. | Traffic data distribution in a navigational system |
US8959106B2 (en) * | 2009-12-28 | 2015-02-17 | Oracle International Corporation | Class loading using java data cartridges |
US9305057B2 (en) * | 2009-12-28 | 2016-04-05 | Oracle International Corporation | Extensible indexing framework using data cartridges |
US9430494B2 (en) * | 2009-12-28 | 2016-08-30 | Oracle International Corporation | Spatial data cartridge for event processing systems |
US8713049B2 (en) | 2010-09-17 | 2014-04-29 | Oracle International Corporation | Support for a parameterized query/view in complex event processing |
US9189280B2 (en) | 2010-11-18 | 2015-11-17 | Oracle International Corporation | Tracking large numbers of moving objects in an event processing system |
US8990416B2 (en) | 2011-05-06 | 2015-03-24 | Oracle International Corporation | Support for a new insert stream (ISTREAM) operation in complex event processing (CEP) |
US9329975B2 (en) | 2011-07-07 | 2016-05-03 | Oracle International Corporation | Continuous query language (CQL) debugger in complex event processing (CEP) |
US8730264B1 (en) | 2011-09-26 | 2014-05-20 | Google Inc. | Determining when image elements intersect |
US9977789B2 (en) * | 2011-11-29 | 2018-05-22 | Oracle International Corporation | Hierarchical grid for spatial querying |
US9563663B2 (en) | 2012-09-28 | 2017-02-07 | Oracle International Corporation | Fast path evaluation of Boolean predicates |
US9262479B2 (en) | 2012-09-28 | 2016-02-16 | Oracle International Corporation | Join operations for continuous queries over archived views |
US10956422B2 (en) | 2012-12-05 | 2021-03-23 | Oracle International Corporation | Integrating event processing with map-reduce |
US9098587B2 (en) | 2013-01-15 | 2015-08-04 | Oracle International Corporation | Variable duration non-event pattern matching |
US10298444B2 (en) | 2013-01-15 | 2019-05-21 | Oracle International Corporation | Variable duration windows on continuous data streams |
US9390135B2 (en) | 2013-02-19 | 2016-07-12 | Oracle International Corporation | Executing continuous event processing (CEP) queries in parallel |
US9047249B2 (en) | 2013-02-19 | 2015-06-02 | Oracle International Corporation | Handling faults in a continuous event processing (CEP) system |
US9418113B2 (en) | 2013-05-30 | 2016-08-16 | Oracle International Corporation | Value based windows on relations in continuous data streams |
US9934279B2 (en) | 2013-12-05 | 2018-04-03 | Oracle International Corporation | Pattern matching across multiple input data streams |
US9244978B2 (en) | 2014-06-11 | 2016-01-26 | Oracle International Corporation | Custom partitioning of a data stream |
US9712645B2 (en) | 2014-06-26 | 2017-07-18 | Oracle International Corporation | Embedded event processing |
US10120907B2 (en) | 2014-09-24 | 2018-11-06 | Oracle International Corporation | Scaling event processing using distributed flows and map-reduce operations |
US9886486B2 (en) | 2014-09-24 | 2018-02-06 | Oracle International Corporation | Enriching events with dynamically typed big data for event processing |
WO2017018901A1 (en) | 2015-07-24 | 2017-02-02 | Oracle International Corporation | Visually exploring and analyzing event streams |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4435752A (en) * | 1973-11-07 | 1984-03-06 | Texas Instruments Incorporated | Allocation of rotating memory device storage locations |
US5499360A (en) * | 1994-02-28 | 1996-03-12 | Panasonic Technolgies, Inc. | Method for proximity searching with range testing and range adjustment |
CA2205836C (en) * | 1994-11-21 | 2005-05-24 | Oracle Corporation | Method and apparatus for multidimensional database using binary hyperspatial code |
JP3952518B2 (ja) * | 1996-03-29 | 2007-08-01 | 株式会社日立製作所 | 多次元データ処理方法 |
US5926820A (en) * | 1997-02-27 | 1999-07-20 | International Business Machines Corporation | Method and system for performing range max/min queries on a data cube |
US5963956A (en) * | 1997-02-27 | 1999-10-05 | Telcontar | System and method of optimizing database queries in two or more dimensions |
US6073134A (en) * | 1997-05-29 | 2000-06-06 | Oracle Corporation | Method article of manufacture, and apparatus for generating a multi-dimensional record management index |
US6134541A (en) * | 1997-10-31 | 2000-10-17 | International Business Machines Corporation | Searching multidimensional indexes using associated clustering and dimension reduction information |
US6070164A (en) * | 1998-05-09 | 2000-05-30 | Information Systems Corporation | Database method and apparatus using hierarchical bit vector index structure |
US6223182B1 (en) * | 1998-06-30 | 2001-04-24 | Oracle Corporation | Dynamic data organization |
JP2000035965A (ja) * | 1998-07-17 | 2000-02-02 | Nippon Telegr & Teleph Corp <Ntt> | 類似特徴量の検索方法及び装置及び類似特徴量の検索プログラムを格納した記憶媒体 |
US6366911B1 (en) * | 1998-09-28 | 2002-04-02 | International Business Machines Corporation | Partitioning of sorted lists (containing duplicate entries) for multiprocessors sort and merge |
JP3542732B2 (ja) * | 1999-01-06 | 2004-07-14 | 日本電信電話株式会社 | 多次元空間データ構造および多次元空間データの更新および探索方法と前記多次元空間データ構造を記録した記録媒体および前記方法を実施するプログラムを記録した記録媒体 |
US6549907B1 (en) * | 1999-04-22 | 2003-04-15 | Microsoft Corporation | Multi-dimensional database and data cube compression for aggregate query support on numeric dimensions |
US6381605B1 (en) * | 1999-05-29 | 2002-04-30 | Oracle Corporation | Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets |
US6633882B1 (en) * | 2000-06-29 | 2003-10-14 | Microsoft Corporation | Multi-dimensional database record compression utilizing optimized cluster models |
US6879980B1 (en) * | 2001-06-29 | 2005-04-12 | Oracle International Corporation | Nearest neighbor query processing in a linear quadtree spatial index |
US6973457B1 (en) * | 2002-05-10 | 2005-12-06 | Oracle International Corporation | Method and system for scrollable cursors |
-
2001
- 2001-12-11 AU AU2002222172A patent/AU2002222172A1/en not_active Abandoned
- 2001-12-11 JP JP2002550553A patent/JP4219165B2/ja not_active Expired - Lifetime
- 2001-12-11 WO PCT/GB2001/005486 patent/WO2002048909A1/en active IP Right Grant
- 2001-12-11 CA CA2430446A patent/CA2430446C/en not_active Expired - Fee Related
- 2001-12-11 AU AU2002222178A patent/AU2002222178A1/en not_active Abandoned
- 2001-12-11 DE DE60132243T patent/DE60132243T2/de not_active Expired - Lifetime
- 2001-12-11 JP JP2002550552A patent/JP4259864B2/ja not_active Expired - Lifetime
- 2001-12-11 US US10/433,260 patent/US7904486B2/en active Active
- 2001-12-11 CA CA002430437A patent/CA2430437C/en not_active Expired - Fee Related
- 2001-12-11 US US10/433,063 patent/US7277886B2/en not_active Expired - Lifetime
- 2001-12-11 WO PCT/GB2001/005479 patent/WO2002048908A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2002048909A1 (en) | 2002-06-20 |
JP4259864B2 (ja) | 2009-04-30 |
AU2002222178A1 (en) | 2002-06-24 |
JP2004516552A (ja) | 2004-06-03 |
DE60132243T2 (de) | 2008-12-11 |
AU2002222172A1 (en) | 2002-06-24 |
US20040039725A1 (en) | 2004-02-26 |
DE60132243D1 (de) | 2008-02-14 |
CA2430446C (en) | 2010-10-26 |
US7904486B2 (en) | 2011-03-08 |
WO2002048908A1 (en) | 2002-06-20 |
CA2430437C (en) | 2006-05-09 |
CA2430446A1 (en) | 2002-06-20 |
US7277886B2 (en) | 2007-10-02 |
US20040019592A1 (en) | 2004-01-29 |
CA2430437A1 (en) | 2002-06-20 |
JP2004516553A (ja) | 2004-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4219165B2 (ja) | エンティテイにインデックス付けする方法 | |
US20230084389A1 (en) | System and method for providing bottom-up aggregation in a multidimensional database environment | |
Gaede et al. | Multidimensional access methods | |
KR100656528B1 (ko) | 영역-합 질의를 위한 동적 업데이트 큐브와 하이브리드질의 검색방법 | |
Sankaranarayanan et al. | Query processing using distance oracles for spatial networks | |
US11720606B1 (en) | Automated geospatial data analysis | |
US20060235838A1 (en) | System and method for managing complex relationships over distributed heterogeneous data sources | |
CN110309264A (zh) | 基于知识图谱获取地理产品数据的方法和装置 | |
JP2003141159A (ja) | 距離インデクスを用いた検索装置および方法 | |
CN115827907A (zh) | 基于分布式内存的跨云多源数据立方体发现与集成方法 | |
CN117131050B (zh) | 面向工作负载和查询敏感性的基于磁盘的空间索引方法 | |
CN117608476A (zh) | 矢量数据分块存储方法、装置、电子设备及介质 | |
Kontakis et al. | Spatial indexing of complex virtual reality scenes in the web | |
US8645402B1 (en) | Matching trip data to transportation network data | |
EP1342175B1 (en) | Method of indexing entities | |
EP1342174B1 (en) | Method of retrieving entities | |
US20040230554A1 (en) | Method of adding data in bulk to a spatial database | |
JP2000517448A (ja) | データベース・システム及びn次元データセットの編成方法 | |
JP4171884B2 (ja) | データ階層化およびデータ再構成方法/装置/プログラム/記録媒体、データ記録媒体 | |
EP4345644A1 (en) | Processing spatially referenced data | |
CN113779353B (zh) | 高速铁路时空大数据分析服务引擎系统及方法 | |
Akande et al. | Towards an efficient storage and retrieval mechanism for large unstructured grids | |
CN116303249B (zh) | 基于湖仓一体式的多源遥感时空大数据处理方法和装置 | |
Zhao et al. | A novel approach of indexing and retrieving spatial polygons for efficient spatial region queries | |
KR20170095044A (ko) | 공간 스트림 데이터 분산 처리 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041102 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080401 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080701 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080704 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080708 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080819 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080917 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20081014 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20081111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111121 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4219165 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111121 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121121 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121121 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131121 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |