JPH0550774B2 - - Google Patents

Info

Publication number
JPH0550774B2
JPH0550774B2 JP61315906A JP31590686A JPH0550774B2 JP H0550774 B2 JPH0550774 B2 JP H0550774B2 JP 61315906 A JP61315906 A JP 61315906A JP 31590686 A JP31590686 A JP 31590686A JP H0550774 B2 JPH0550774 B2 JP H0550774B2
Authority
JP
Japan
Prior art keywords
link
node
file
attribute
version
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
Application number
JP61315906A
Other languages
English (en)
Other versions
JPS62160549A (ja
Inventor
Dei Shuwarutsu Meiyaa
Emu Derisuru Nooman
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.)
Tektronix Inc
Original Assignee
Tektronix Inc
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 Tektronix Inc filed Critical Tektronix Inc
Publication of JPS62160549A publication Critical patent/JPS62160549A/ja
Publication of JPH0550774B2 publication Critical patent/JPH0550774B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、コンピユータ化したデータ蓄積及び
検索方法、特にユーザが定義可能な関係で分離し
たデータ・フアイルをリンクするフアイル管理方
法に関する。
〔従来の技術及び問題点〕
典型的には、大型エンジニアリング又は類似の
プロジエクトで最も困難なことの1つは、記録の
保持である。原子核プラントを設計及び構築する
場合、予備調査、図面、仕様書、手紙、報告書等
の膨大な量の文書が生じる。これら文書は、必要
なときに検索できるように論理型式で蓄積してお
かなければならない。これら文書の数が非常に多
くなり、これらを蓄積してしまうと、検索しよう
とする文書名及びフアイルした参照番号ではな
く、文書の特徴しか判らない場合、その文書を見
つけることはしばしば困難である。
文書の蓄積及び検索に関連した問題に加えて、
あるプロジエクト文書の変更が他のプロジエクト
文書に関係するという「リツプル」効果に関連し
た事項も考慮すべきである。例えば設計図面を変
更した場合、その図面に関する仕様の他の図面も
変更しなければならない。非常に複雑なプロジエ
クトでは、影響を受ける他の文書を判断するのは
容易でない。文書の前のバージヨンのみでなく、
文書の変更理由及び変更者の付加的記録等の文書
変更記録を保持することもしばしば重要である。
コンピユータ化したデータ・ベース・システム
の利用は周知である。データ・ベース・システム
によれば、「編集者」、「文書型式」、「要旨」等の
文書の種々のアトリビユート(属性)によつて文
書を特徴づけることができる。例えば、スミスが
書いたポンプの仕様を特徴づけるには、ユーザが
文字列「スミス」、「仕様」及び「ポンプ」を編集
者、文書型式及び要旨のアトリビユートの値とし
て割当てることができる。典型的には、かかるデ
ータ・ベース・システムは、ユーザが選択したア
トリビユート値のリストに一致する割当てアトリ
ビユート値が指示する文書を探す検索ルーチンを
含んでいるので、スミスの書いた総てのポンプ仕
様の如きアトリビユートの共通セツトを占める総
ての文書をユーザは容易に探せるようになる。
つい最近は、高速アクセス大容量データ蓄積装
置及びマルチ・コンピユータ・ネツトワークの出
現により、コンピユータ・システムが大容量蓄積
装置内に文書の履歴を保持する他に、フアイルと
して文書を正確に作成したり電気的に蓄積するこ
とが可能になつた。大きなプロジエクトに関連し
た文書を効果的に蓄積したり検索するために、フ
アイル管理システムは、共通アトリビユートの文
書を含んだフアイルのグループを見つけられるだ
けでなく、ある定義できる方法で、所定フアイル
に関連したフアイルのグループも発見できなけれ
ばならない。例えば、ユーザは、スミスのポンプ
規格を含んだ特定のフアイルを見つけると、ポン
プ規格に関する検閲者のコメント又はこのポンプ
仕様に関連したポンプ図面を含んだ他のフアイル
を探そうとするかもしれない。「ハイパーテキス
ト(hypertext)」システムに属するコンピユータ
化したデータ蓄積及び検索システムには、連続的
動作がある。このハイパーテキスト・システム
は、2つのフアイルが何らかの点で関連している
ことを示すフアイル対間をユーザが「リンク」す
ることを可能にする。(1985年10月にIEEEが発行
した「コンピユータ」の15〜30ページに掲載され
たニコル・ヤンケロビツチ及びノーマン・メイロ
ウイツの論文「リーデイング・アンド・ライテイ
ング・ジ・エレクトロニツク・ブツク」にこの型
式のシステムに関する従来技術の要点が記載され
ている。)第2フアイルが第1フアイルに関係し
ていることを示す第1フアイルから第2フアイル
へのポインタとして、「リンク」を目に見えるよ
うにすることができる。リンクされた第1及び第
2フアイルを示すデータ、及びこれら2つのフア
イル間の関係の特徴を定義するリンク・アトリビ
ユート・データを含む蓄積記録として、リンクを
実現できる。例えば、第1フアイルが仕様であ
り、第2フアイルがこの仕様に関するコメントの
とき、第1及び第2フアイルを示し、これらフア
イル間の関係がコメントの1つであることを示す
リンク・アトリビユート・データを含んだリンク
記録を作成してもよい。リンクされたフアイルの
総ての対に対して、独立したリンク記録を設け
る。もし、ある特定の仕様について記載した3つ
のコメントをそれぞれ3つの独立したフアイルに
蓄積したならば、3つのリンク記録が作成され、
各リンク記録は、仕様フアイルと3つのうちの1
つの対応するコメント・フアイルの間にあつて、
コメント・フアイルが仕様フアイルを「コメン
ト」するという関係にあることを示す。リンクさ
れたフアイルに応じてリンク記録をグループ化で
きるので、仕様フアイルの如き特定フアイルを確
認すると、この特定フアイルにリンクされるコメ
ント・フアイルの如き他の総てのフアイルは、特
定フアイルに関連したリンク記録のみを精査する
ことにより迅速に判断できる。
フアイルと、これらフアイル間のリンクとに、
そのフアイル又はリンクを特徴づけるアトリビユ
ートを定めることができるが、当業者に周知の如
くフアイル・アトリビユートの概念は、リンク・
アトリビユートの概念といくらか異なつている。
フアイル・アトリビユートにより独立フアイルを
関連づけられるが、かかるフアイル間の関係は、
1つの共通性を有しているが、あるフアイルが他
のフアイルを指し示すという方向性のある関係で
はない。例えば、スミスが作成した総てのフアイ
ルは共通の編集者を有することにより関係づけら
れ、各フアイル用の「編集者」フアイル・アトリ
ビユートの値として「スミス」を利用することに
より、かかるフアイルの各々のこの共通の特徴を
示すことができる。これと対比して、リンクは方
向付けた状態でフアイルの対の関係を記述し、リ
ンクがユーザを第1文書「から」他の文書「に」
特別の理由で導くという意味において、リンク・
アトリビユートはその理由を記述する。よつて、
リンク・アトリビユートが示す関係は、ある1つ
の共通性ではなくむしろ1つの「結合性」であ
る。例えば、図面を含む第1フアイルと、この図
面に関するコメントを含む第2フアイルとの関係
は、これらフアイルが共通に有しているもの(即
ち、フアイル・アトリビユート)によつては容易
に説明できない。これは、フアイルが異なつてい
る、即ち、1つのフアイルは「図面」で、他のフ
アイルが「コメント」であるからである。しか
し、「コメント」の概念を用いて、フアイルの一
方の特徴を説明するのではなく、これら2つのフ
アイル間のリンクを説明すれば、これらフアイル
間の関係を明瞭に規定できる。
フアイルが「コメント」を含んでいると考え
て、フアイル・アトリビユート値「コメント」を
定めることができるが、ユーザはコメントを含む
総てのフアイルのグループを見つけることに典型
的には関心をもつていないので、このようにする
ことは特に有効ではない。その代りにユーザは、
通常、自分が特定したフアイルについてのコメン
トを含むフアイルを見つけることに大きな関心を
もつ。よつて、リンクが「コメント」アトリビユ
ートを有する2つのフアイル間のリンクを確立す
ることがより有用である。
リンクは、フアイル対を接続して「網状組織
(web)」又は「図表」を形成することにより、フ
アイル構造を収集する。ここで、各フアイルは、
それぞれを1つの「ノード(node)」として、リ
ンクにより他のノード(フアイル)に相互接続さ
れると考えることができる。従来のいくつかのシ
ステムは、図表の表示に適しており、地図が道路
又は川によつて町をどのように相互接続されてい
るかを示しているのと同じ方法で、フアイルのセ
ツトがどのように相互接続されているかをユーザ
の目に見えるようにしている。よつて、例えば、
ユーザが1つのフアイル(ノード)の変更を決め
たとき、変更されるノードにリンクされた他のノ
ードを調べることにより、変更により影響を受け
る他の総てのフアイルを迅速に判断できる。
しかし、プロジエクトに関連したフアイルの数
が大きくなると、図表は複雑となり、表示が困難
となり、ユーザが利用するのも困難となる。よつ
て、典型的にはシステムは、ユーザがこのシステ
ムに対して関心のある種々のフアイルのアトリビ
ユートを特定して、表示する図表の大きさを小さ
くできるようにする。次に、このシステムは、特
定のアトリビユートが特徴づけるノードのみを含
む「副図表」を表示する。例えば、ユーザがポン
プに関連したフアイルにのみ関心があるとき、こ
のシステムはポンプに関連したフアイルを表わす
ノードと共にそれらの相互接続リンクを表示す
る。よつて、関心のある特定フアイルを見つける
ため、ユーザが調べなければならないフアイルの
数が減る。
従来のシステムは、ユーザを助けて蓄積データ
を系統化し、検索するが、これらのシステムに
は、記録の保持に関してまだ未解決の問題が残さ
れている。問題の1つは、最も有利なフアイル又
はリンク・アトリビユートの型式を予め選択する
ことが困難ということである。システムにとつて
有用とするために、フアイル及びリンクを説明す
るためにユーザが利用できるアトリビユート及び
それらの値は、システムが実行すべき探索用に適
当な原理を与えなければならない。しかし、アト
リビユートの数は、通常、制限されている。
プロジエクトの文書が時間と共にいかに変更し
たかの包括的な記録を保守する設備をハイパーテ
キスト・システムが含んでいるならば、このシス
テムもより有効である。いくつかのコンピユータ
化されたデータ蓄積システムは文書の古いバージ
ヨンも蓄積するが、大きなプロジエクトの文書は
しばしば多くの改訂を受けているので、総ての文
書の総てのバージヨンを蓄積することは非現実的
であり、非可能である。また、フアイル及びリン
ク・アトリビユートの変更の履歴を保守すること
も望ましい。例えば、フアイル・アトリビユート
は、その文書の変更の承認に責任のある人の名前
を示すことができ、他の人がその責任を引き継い
だときは、対応するアトリビユート値を変更しな
ければならない。しかし、そのようにする際、そ
の情報を維持するための何らかの手段を設けるこ
とができなければ、変更の承認責任が前からある
人の同一性が失われる。理想を言えば、以前の任
意の時点におけるシステム全体の図表を完全に再
生成できるのが望ましい。つまり、その任意の時
点におけるフアイル内容及びそのフアイルに割り
当てられたフアイル・アトリビユート、さらにそ
の時点に存在したフアイル間のリンク及びそのリ
ンク・アトリビユートを再生成できるのが望まし
い。この特徴は、プロジエクト期間中に生じた問
題の原因を把握するのに非常に有効であるが、そ
の実現は、従来のシステムでは一般的に非現実的
である。
マルチユーザ・システムの利用に関した他の問
題は、2人が独立に同じフアイルを同時に変更し
ようとしたときに生じる。どちらの新バージヨン
を最新バージヨンとみなすかについて競合が生じ
る。いくつかのシステムでは、2人以上が同時に
フアイルをアクセスするのを防止して、この競合
を避けるが、このアプローチは、特に1人のユー
ザがフアイルを変更するのではなく単に読出した
いとき、マルチユーザ能力を効果的に利用できな
い。
〔本発明の目的〕
そこで、本発明の目的は、検索の際に最も有利
なフアイル及びリンク・アトリビユートを予め選
択しなくとも必要に応じていつでも変更でき、そ
の数にも制限がないフアイル管理方法を提供する
ことである。
本発明の他の目的は、以前の任意の時点におけ
るシステム全体の図表を容易に完全に再生成でき
るフアイル管理方法を提供することである。つま
り、その任意の時点におけるフアイル内容及びそ
のフアイルに割り当てられたフアイル・アトリビ
ユート、さらにその時点に存在したフアイル間の
リンク及びそのリンク・アトリビユートを容易に
再生成できるフアイル管理方法を提供することで
ある。
本発明のさらに他の目的は、ユーザが所望のフ
アイルを完全に識別できなくとも、つまり、フア
イル名等が分からなくともその特徴を指示するだ
けで任意の時点における所望のフアイルを検索す
ることが可能なフアイル管理方法を提供すること
である。
また、本発明の別の目的は、複数のユーザ(マ
ルチユーザ)がシステムを使用しているときに、
あるユーザが図表中のフアイル、リンクその他の
特徴点にアクセスしたり、これらを変更しようと
するときには、他のユーザにこれを知らせること
ができるフアイル管理方法を提供することであ
る。つまり、図表中のフアイルその他の特徴点が
既に変更されていたり、これから変更しようとす
るときに、その関心のある特徴点を容易にユーザ
に知らせることができるフアイル管理方法を提供
することである。
本発明のさらに別の目的は、複数のユーザが同
じフアイルを同時に変更するのを防止できるフア
イル管理方法を提供することである。
〔問題点を解決するための手段及び作用〕
本発明によるデータ・フアイル管理方法は、ユ
ーザ定義可能な「フアイル・アトリビユート」に
応じて、蓄積されたデータ・フアイル(ノード)
をユーザが特徴づけられるようにする。(以下、
用語「フアイル」及び「ノード」を相互に同じ意
味で用いる。)各フアイル・アトリビユートは、
「編集者」又は「要旨」の如くユーザ定義名の変
数であり、ユーザは値を各フアイルのフアイル・
アトリビユートに割当てることができる。フアイ
ル・アトリビユートに割当てできる値は、「スミ
ス」又は「ポンプ仕様」の如くユーザ定義文字列
でもよいし、整数でもよい。フアイル管理システ
ムは、フアイル・アトリビユート及びそれらの値
を表わすデータを1組の「ノード記録」に蓄積す
る。なお、各ノード記録はフアイルに関連したデ
ータの集合から成る。
フアイル・アトリビユートはユーザが定義可能
なので、ユーザがフアイルに関する新たな識別特
徴を認めたときはいつでも新たなアトリビユート
を確立できる。例えば、新たなテキスト・フアイ
ルは、前に蓄積したフアイルと異なる言語で書い
て作成でき、ユーザは書かれた言語に応じて新た
なフアイルを分類できる。本発明によれば、ユー
ザは文字列「言語」と名付けた新たなフアイル・
アトリビユートを確立できる。次にユーザは、フ
ランス語で書かれた総てのフアイルに対して言語
アトリビユートの値として文字列「フランス語」
を割当てることができ、また、英語で書かれた総
てのフアイルに対して言語アトリビユートの値と
して文字列「英語」を割当てることができる。よ
つて、従来のデータ管理方法と異なり、本発明に
よれば、必要なときはいつでもユーザは新たなフ
アイル・アトリビユートを確立でき、ユーザは所
定数の予め定めたアトリビユートの中から選択す
るというような制限は受けない。
本発明のデータ・フアイル管理方法は、ユーザ
が関連フアイル対間の「リンク」を行なうのを可
能にする。「リンク」は、2つのフアイル間のユ
ーザ定義関係であり、このリンクは蓄積された
「リンク記録」により明らかとなる。また、デー
タの集合は、リンクされる2つのフアイルの参照
(レフアレンス)を含むと共に、「リンク・アトリ
ビユート」及びそれらに割当てられた値を表わす
データを含む。「リンク・アトリビユート」は、
ユーザが定義した名前としての文字列から成る変
数である。更にユーザは、2つのフアイル間の関
係を特徴づける変数をアトリビユート値に割当て
ることができる。このアトリビユート値は、ユー
ザが定義した文字列でもよいし、整数でもよい。
リンクの利用例として、第1フアイルがポンプの
図面を含んでおり、第2フアイルが図面に示した
ポンプの仕様を含んでおり、第3フアイルが図面
に関するコメントを含んでいるとき、ユーザは2
つのリンクを定義できる。なお、第1リンクは第
1及び第2フアイルをリンクし、第2リンクは第
1及び第3フアイルをリンクする。ユーザが例え
ば「レフアレンス」と名付けたリンク・アトリビ
ユートにより各リンクを特徴づけることができ
る。図面フアイルを仕様フアイルに関連させるリ
ンクに対して、ユーザが「仕様」と呼ぶ「レフア
レンス」リンク・アトリビユートに値を割当るこ
とができる。図面フアイルを設計者コメント・フ
アイルに関連させるリンクに対して、ユーザは、
「レフアレンス」リンク・アトリビユートの値と
しての文字列「コメント」を割当ることができ
る。本発明は、リンクすべきフアイル、リンク・
アトリビユートの名前及び値に関したユーザ入力
を基本とした適当なリンク記録を作成できる。
本発明によれば、ユーザは、フアイル及びリン
ク・アトリビユートの値を定義できるだけではな
く、新たなユーザ定義リンク・アトリビユートを
基本にしてフアイル間の新たなリンクを作成でき
る。フアイル及びリンク・アトリビユートの利用
が可能な従来の装置においては、フアイル及びリ
ンク・アトリビユートの数及び名前は固定されて
おり、ユーザは特定のフアイル及びリンクに既に
関連づけられた限定されたフアイル及びリンク・
アトリビユートの値の変更しかできなかつた。よ
つてユーザは、新たなフアイル又はリンク・アト
リビユートの確立を企だてることができなかつ
た。
更に本発明は、フアイル及びリンク・アトリビ
ユート値のユーザが選択した組合せにより特徴づ
けられた総てのフアイル及びリンクを探すのに適
している。フアイル管理システムは、ノード及び
リンク記録を検索することにより、適切なフアイ
ル及びリンクを見つける。新たなリンク及びフア
イル・アトリビユートをユーザが定義できるの
で、割当て可能なフアイル及びリンク・アトリビ
ユートの数及び特徴が予め定められて固定してい
る場合よりも、フアイル及びリンクの選択にわた
つてより柔軟な制御が得られる。
更に本発明のフアイル管理方法は、「横断検索」
を行うのに適している。これは、まず、ユーザが
検索したい所望フアイルが有するアトリビユート
及びアトリビユート値を表すフアイル及びリンク
の属性の組を分かつている範囲でシステムに与え
ると、システムがこれに該当する最初のフアイル
(第1ノード)を識別する。次にシステムは、中
間ノード及びリンクを介してこの第1ノードに接
続されたすべてのノードを識別する。なお、これ
ら中間ノード及びリンクは、すべて先に選択した
フアイル(ノード)及びリンク・アトリビユート
値で特徴づけられたものである。必要ならば、検
索の過程でユーザがフアイル及びリンクの属性の
組をさらに付加的に指示していくことにより、最
終的に所望のフアイルを見つけ出すことができ
る。この横断検索は、これらのリンクがフアイル
の変更経過を示すときに有効である。例えば、各
仕様(ノード)が独立に蓄積され、リンクが「次
のセクシヨン(つまり、ノード)」を指し示すと
いう属性を有し、連続する各セクシヨン(ノー
ド)を接続しているときに有効である。このよう
にユーザは、最初に第1ノードを識別させ、シス
テムに「仕様」などのフアイル・アトリビユート
値及び「次のノード」などを指し示すリンク・ア
トリビユート値を与えるだけでよい。そうすれ
ば、システムがその「仕様」(フアイル・アトリ
ビユート値)を有するすべてのフアイルを見つけ
出し、そのフアイル(ノード)をその発生順序で
ユーザに教えてくれる。
従来のハイパーテキスト・システムは、「質問
(query)」検索を実行する。ここで、ユーザは、
選択したフアイル及びリンク・アトリビユート値
のリストを与えるが、開始ノードは与えない。次
に装置は、選択したフアイル・アトリビユート値
が特徴づける総てのフアイルと、識別されたフア
イルを相互接続する選択されたリンク・アトリビ
ユート値が特徴づける総てのリンクとを識別す
る。よつて、本発明の横断検索では、常にフアイ
ルを適切な順序で識別する一方で、従来ある質問
検索では、フアイルの識別順序は不定である。更
に質問検索でフアイルを充分に選択するために
は、通常、フアイル・アトリビユートを横断検索
より正確に定義する必要がある。例えば、もし2
つ以上の仕様(フアイル)がシステムに蓄積され
た場合、仕様は異なるが関連するフアイルを区別
するのに付加的なアトリビユート値を必要とする
ことがある。さもないと質問検索では、所望の仕
様フアイルだけでなく、すべてのフアイルを検索
してしまうことがある。横断検索は、質問検索よ
りも非常に早くできる。これは、質問検索では、
総てのノード記録及び総てのリンク記録を点検し
ているのに対して、横断検索では、選択したアト
リビユート値の(「横断中」の)中間ノード及び
リンクを通過する検索の間に出会つたノード及び
リンク記録のみを点検すればよいからである。
また本発明によれば、ユーザが定義可能な文字
列(「デーモン」)をシステムが機能するコンピユ
ータ・オペレーテイング・システムに転送するよ
うにさせる。フアイルを修正したり、リンクを削
除したり、又はフアイル又はリンク・アトリビユ
ート値を変更したりするユーザ要求の如く、図表
に影響を与える1組の事象の任意の1つが生じる
と、デーモンを転送する。オペレーテイング・シ
ステムが、プログラム実行コマンドの如きコマン
ドとしてデーモン文字列を識別するように、これ
らデーモン文字列を選択できる。例えば、電子郵
便システムにおいて、フアイル変更の承認責任者
にメツセージを送るプログラムを開始させるのに
デーモン(UNIXシステムにおけるサーバ・プロ
セス)を利用できる。誰かがフアイルの内容を変
更しようとするときに必ずデーモンにより転送す
るようにシステムを構築できるので、これによつ
て責任者に警告メツセージを送ることができる。
また本発明によれば、ノードが作成された時間
を示すタイム・パラメータ(バージヨン・タイ
ム)に応じて、フアイル管理システムはノードを
識別する。システムがユーザ入力に応答してノー
ドを修正するとき、このノードを識別するバージ
ヨン・タイムは現在の時間に更新される。ユーザ
がノードの内容を変更しようとするとき、ユーザ
は変更しようとしているノードのバージヨン・タ
イムを示す。そして、ユーザが示したバージヨ
ン・タイムがノードの現在のバージヨン・タイム
でない場合、システムはユーザ変更がノードの古
いバージヨンに基づいていることを知る。すなわ
ち、このユーザが最後にノードの内容を得てか
ら、そのノードの内容が何回か変更されてきてい
るということである。かかる場合、システムは、
ユーザがノードを修正するのを禁止し、問題をユ
ーザに知らせる。本発明は、2人以上のユーザが
同時にノードに独立にアクセスし、変更しようと
するときに生じる競合を防ぐ。
また本発明によれば、任意の以前の時に存在し
ている如く、フアイル、リンク、アトリビユート
値及びデーモンの状態をシステムに決定させる。
ユーザがフアイルの内容を変更してフアイルの新
たな「バージヨン」を作成したときはいつでも、
新しいバージヨンを、このバージヨンが置替えた
前のバージヨンに戻す1組の命令を含む「バージ
ヨン履歴」記録を装置は作成し、蓄積する。前の
フアイル全体は蓄積されていない。新しいバージ
ヨンのフアイルが作成された時間を指定するよう
に調整されたバージヨン・タイムにより、新しい
バージヨンのフアイルを識別する。フアイルの以
前のバージヨンが作成された時を示すバージヨ
ン・タイムにより、以前のバージヨン用のバージ
ヨン履歴記録も識別する。特定の時間に存在した
として、フアイルの内容の点検をユーザが望むと
き、ユーザはその特定時間をシステムに示すと、
システムは、フアイルのどのバージヨンがその特
定時間のバージヨンであつたかの識別子をバージ
ヨン・タイムから決定でき、そのバージヨン履歴
を用いてそのバージヨンを再構成できる。またシ
ステムは、バージヨン・タイムを各リンクに割当
てて、そのリンクが作成された時間を示すので、
システムは所定時間にどのリンクが存在したかを
決定できる。システムは更に、以前に割当てたフ
アイル及びリンク・アトリビユートの値の時間を
基準とした記録、及び以前に存在したデーモンの
時間を基準とした記録を保守する。
本発明の要旨は本明細書に指摘してある。しか
し、本発明の構成、動作、利点及び目的は添付図
を参照した以下の説明から最も良く理解できよ
う。なお、添付図において、同じ構成要素は同じ
参照番号で示す。
〔実施例〕
第1図は、本発明を利用した情報管理システム
のブロツク図であり、この情報管理システム10
は、マルチユーザ用の選択したデータ処理動作を
実行する。このシステムは、本発明によるソフト
ウエアを基本としたデータ・フアイル管理装置
(マシン)14を具えており、システム・ユーザ
が作成した独立のデータ・フアイル内のデータ間
の関係の表示を保守するデータ蓄積及び検索ユー
テイリテイを提供する。本発明の好適な実施例に
おいて、システム10は、マルチユーザUNIXオ
ペレーテイング・システム環境で動作するのに適
合している。(UNIXオペレーテイング・システ
ムはザ・アメリカン・テレホン・アンド・テレグ
ラフ・カンパニーにより開発され、1981年にザ・
レストン・パブリツシング・カンパニーが発行し
たリチヤード・ガウシヤーによる「ユージング・
ザUNIXシステム」に説明されている。)独立し
たUNIX処理として実行するユーザ・インタフエ
ース・アプリケーシヨン・ソフトウエアにより、
各ユーザはデータ・フアイルを作成し、修正す
る。第1図の例においては、マシン14としての
同一コンピユータ16上で実行し、UNIXパイプ
を介してこのマシンをアクセスする独立したアプ
リケーシヨン・ソフトウエア12及び12aを2
人のユーザが同時に実行できる。(UNIXパイプ
は、マシン14及びアプリケーシヨン・プログラ
ム12又は12aの如き2つの処理がアクセス可
能なオープン・フアイルである。)他の2人のユ
ーザは、リモート・サーバ18及び18aを介し
てマシン14をアクセスするリモート・コンピユ
ータ20及び20a上で実行するアプリケーシヨ
ン・ソフトウエア12′及び12a′を利用できる。
コンピユータ16,20及び20aは、デジタ
ル・イクイプメント・コーポレーシヨン製VAX
型コンピユータ、又はUNIXオペレーテイング・
システム環境内で動作できる他のコンピユータで
適切に構成されている。
ユーザ・アプリケーシヨン・ソフトウエア12
(及び12a)(以下「ユーザ」という)は、任意
の種々のデータ処理機能を実行でき、例えば、ワ
ード・プロセツサ、コンピユータ支援設計及び他
の図形システム、並びにデータ・ベース・システ
ムから構成してもよく、これらの各々はフアイル
内に蓄積すべきデータのシーケンスを発生する。
ユーザからのこのデータ・シーケンスをマシン1
4に転送する。このマシン14は、UNIXオペレ
ーテイング・システムにより動作するが、デイス
クの如き大容量蓄積媒体にフアイルとしてデー
タ・シーケンスを蓄積するのを制御する責任があ
る。
データ・フアイル管理マシン14は、ユーザ定
義可能な「フアイル・アトリビユート」に応じて
蓄積データ・フアイル(「ノード」)をユーザが特
徴づけるのを可能にする。フアイル・アトリビユ
ートは、「編集者」又は「要旨」の如きユーザ定
義名を有する変数であり、各フアイルを特徴づけ
るユーザ定義値を割当てることができる。フアイ
ル・アトリビユート値は、「スミス」又は「ポン
プ仕様」の如きユーザ定義文字列でもよいし、ユ
ーザ選択の整数でもよい。ユーザは、フアイルを
特徴づけるのに、所定数の予め定めたフアイル・
アトリビユートの中から選択するということに限
定されず、必要なときにいつでも新たなフアイ
ル・アトリビユート及び新たなフアイル・アトリ
ビユート値を確立できる。例えば、ユーザがフア
イル内のデータのバイト数に応じてフアイルを分
類すると決めると、ユーザが文字列「長さ」と名
前を選んだ新たなフアイル・アトリビユートを確
立でき、「長さ」の値として文書の長さを表わす
整数を各フアイルのアトリビユートに割当てるこ
とができる。ユーザが、アトリビユートを割当て
るべきフアイルを示すデータ、並びにアトリビユ
ートの名前及び値をマシン14に与えると、この
マシンはそのフアイルに関連した「ノード記録」
内にフアイル・アトリビユート及びその値を示す
データを蓄積する。各ノードに関連したノード記
録は、ユーザが定義し、フアイルに割当てられた
総てのフアイル・アトリビユート及びそれらの値
を示すデータを含んでいる。
マシン14により、ユーザは関連フアイルの選
択した対間の「リンク」を確立できる。「リンク」
は、2つのフアイル間のユーザ定義関係であり、
このリンクは蓄積した「リンク記録」内のデータ
により明らかになる。リンク記録は、リンクする
2つのフアイルを識別するデータを含み、種々の
「リンク・アトリビユート」及びそれらの割当て
た「リンク・アトリビユート値」を説明するフア
イルである「リンク・アトリビユート」は、フア
イルの識別した対の間の関係を特徴づけるリン
ク・アトリビユート値をユーザが割当てられる
「レフアレンス」の如きユーザ定義可能な名前を
有するパラメータである。アトリビユート値もユ
ーザ定義であり、文字列又は数字の一方である。
例えば、第1フアイルはポンプ用の図面を含んで
おり、第2フアイルは同じポンプの仕様を含んで
おり、第3フアイルは図面に関するコメントを含
んでいる。ユーザは2つのリンクを確立できる
が、1つのリンクは第1及び第2フアイル間であ
り、他のリンクは第1及び第3フアイル間であ
る。ユーザが「レフアレンス」と名付けてもよい
リンク・アトリビユートにより各リンクを特徴づ
けることができ、その値は、フアイル及びそのフ
アイルを参照する他の総てのフアイル間に存在す
る1組の関係の1つをより正確に説明する。仕様
を図面に関係させるリンクに対して、ユーザは、
「仕様」と呼ぶ「レフアレンス」リンク・アトリ
ビユートに値を割当てることができる。図面を設
計者のコメントに関係させるリンクに対して、ユ
ーザは文字列「コメント」をレフアレンス・リン
ク・アトリビユートの値として割当てることがで
きる。次にマシン14は、第1リンク記録及び第
2リンク記録を有する適当なリンク記録を確立す
る。なおこの第1リンク記録は第1及び第2フア
イルを識別し、「レフアレンス」をそのリンクの
アトリビユートとして示し、「仕様」をそのアト
リビユートの値として示すデータを含んでいる。
また第2リンク記録は、第1及び第3フアイルを
識別し、「レフアレンス」をそのリンクのアトリ
ビユートとして示し、「コメント」をそのアトリ
ビユートの値として示すデータを含んでいる。リ
ンクを特徴づける際、ユーザには所定のリンク・
アトリビユートの限定された組の中から選択する
という制限はなく、必要なときはいつでも、任意
の数の新たなリンク・アトリビユート及び新たな
リンク・アトリビユート値を定義できる。
よつて、本発明によれば、ユーザがフアイル及
びリンク・アトリビユートの新たな値を定義でき
るばかりでなく、新たなフアイル及びリンク・ア
トリビユートを作成できる。フアイル及びリン
ク・アトリビユートを利用できる従来のシステム
においては、フアイル及びリンク・アトリビユー
トの数及び名前は固定されており、ユーザは特定
のフアイル及びリンクに関連したフアイル及びリ
ンク・アトリビユートの値を変更できるだけであ
り、新たなフアイル又はリンク・アトリビユート
を定義できなかつた。
ユーザがどのフアイルを探そうとしているのか
ユーザには正確に識別できないが、そのフアイル
のある特徴が判つている場合、適切に選択したリ
ンク及びフアイル・アトリビユートを利用するこ
とにより、ユーザは関心のあるフアイルを迅速に
探せる。フアイル及びリンク・アトリビユート値
のユーザ選択組合せにより特徴づけられる総ての
フアイル及びリンクのリストをマシン14はユー
ザに与える。このマシンは、フアイル及びリン
ク・アトリビユート情報を含むノード及びリンク
記録を検索することにより、適切なフアイル及び
リンクを見つける。よつて、新たに認知したフア
イル又はリンクの特徴が有効な検索の基本を与え
るとユーザが判断したとき、新たなアトリビユー
トをフアイル及びリンクに対して定義し、割当て
られるというユーザの能力により、割当て可能な
フアイル及びリンク・アトリビユートの数及び特
性が固定で予め定まつている場合よりも、ユーザ
はフアイル検索に対してより制御ができる。
2種類の検索を実行するようにマシン14を適
合させる。なお、検索の1つは、「横断」検索と
呼び、他は「質問」検索と呼ぶ。「横断」検索を
実行するには、ユーザはマシンに第1ノードの識
別を与えると共に、所望の1組のアトリビユート
及びそれらの値を説明するフアイルの属性及びリ
ンクの属性を与える。次にマシンは、選択したア
トリビユート値により特徴づけられたリンクが第
1ノードに接続した1組の第2ノードを探すた
め、第1ノードを他のノードに接続するリンクに
関連した総てのリンク記録を検索する。次に、マ
シンは、第2ノードの各々のノード記録を検索
し、第2ノードのサブセツトを探す。なお、サブ
セツトの各々は、選択したフアイル・アトリビユ
ートにより特徴づけられている。そして、マシン
は、第2ノード・サブセツトに接続されたリンク
に関連したリンク記録を検索して、選択したリン
ク・アトリビユート値が特徴づけたリンクにより
第2ノード・サブセツトに接続された1組の第3
ノードを見つける。一連の中間リンク及びノード
を介して第1ノードに接続された総てのノードを
マシンが識別するまで、この処理を接続する。な
お、中間ノード及びリンクは、選択されたノード
又はリンク・アトリビユート値により総て特徴づ
けられている。よつて、横断検索において、マシ
ン14は、初めのノードで開始し、選択したリン
ク・アトリビユートを有するリンクのみ追跡し、
選択したフアイル・アトリビユートを有するノー
ドのみ通過して、図表を「横断」する。そして、
このマシンは、この型式で横断したノード及びリ
ンクをユーザに知らせる。
リンクがフアイルの整然とした連続を示すと
き、例えば、仕様の各部分を独立したフアイルと
して蓄積し、「次の部分」のアトリビユート値を
有するリンクを各連続部分に関連させるとき、こ
の横断検索は特に有効である。よつて、ユーザ
は、仕様の第1部分を識別し、「仕様」フアイ
ル・アトリビユート値及び「次の部分」のリン
ク・アトリビユート値をマシンに与えることのみ
が必要である。マシンは、仕様の総ての部分を見
つけ、出会つた順にそれらもユーザに知らせる。
整然としたリンクを横断することにより検索を実
行しているので、仕様部分に出会う順序は、その
部分が仕様内にて生じる順序と一致する。
質問検索が実行できるようにマシン14を更に
適合させる。質問検索に対して、ユーザは、1組
のアトリビユート及びその値を説明するフアイル
及びリンク述部を与えるが、開始ノードは与えな
い。次にシステムは、総てのノード及びリンク記
録を検索して、選択したフアイル・アトリビユー
ト値で特徴づけられる総てのフアイルと、識別し
たフアイルを相互接続する選択したリンク・アト
リビユート値により特徴づけられる総てのリンク
とを識別する。横断検索及び質問検索の結果にお
ける1つの違いは、横断検索が適当な順序でフア
イルを常に識別するのに対して、質問検索は任意
の順序でフアイルに戻ることである。十分に選択
的である質問検索にとつて、フアイル・アトリビ
ユートは横断検索よりもより正確に定義しなけれ
ばならない。仕様の例では、2つ以上の仕様をシ
ステムに蓄積したならば、異なる仕様に関連した
フアイル間を区別するのに、付加フアイル・アト
リビユート値を利用しなければならない。これは
横断法には必要ない。横断法は質問法よりもはる
かに高速にできる。これは、質問法では総てのノ
ード記録を点検しているのに対し、横断法では横
断中に出会つたノード記録のみを点検しているか
らである。それにもかかわらず、特にユーザが横
断検索の開始ノードを識別できないとき、質問検
索は有効である。
ユーザがフアイルすべき新たなデータ・シーケ
ンスを作ると、ユーザはそのデータをマシン14
に転送し、マシン14は、UNIXオペレーテイン
グ・システムがUNIXデータ・フアイルの如きデ
イスク又は他の大容量蓄積装置にそのデータを蓄
積するのに必要なUNIX命令を発生する。マシン
14は2つのパラメータにより各データ・フアイ
ル(ノード)を識別する。これら2つのパラメー
タは、そのノードに関連した独特のコードである
「ノードインデツクス(Node Index)」と、その
ノードが作成された日時に応じて決まる数である
「タイム(Time)」とがある。フアイルが蓄積さ
れたときに、これらパラメータはユーザに戻る。
よつて、ユーザが存在するノードの内容にアクセ
スしようとするとき、ユーザはそのノードをアク
セス(「チエツクアウト」)するようにマシン14
に要求を転送して、ノードインデツクス及びタイ
ム・パラメータによりそのノードを識別する。次
にマシン14は、そのノードの内容のコピーをユ
ーザに転送する。ユーザはその内容を修正した
り、蓄積するためその内容をマシン14に戻した
りすることができる。マシンがフアイルの内容を
変更したとき、タイム・パラメータを更新して、
そのノードが初めに作成されたときではなく、変
更されたときにする。タイム・パラメータの利用
により、マシン14は異なるユーザが同じノード
の内容を修正しようとする際に生じる競合を識別
し解決できる。ノード内容の変更又は修正におい
て、現在のノード内容の代りに新たなノード内容
を蓄積(「チエツク・イン」)するようにマシン1
4に要求したとき、第1ユーザはノード・インデ
ツクス及びタイム・パラメータを供給してそのノ
ードを識別する。供給したタイム・パラメータ値
がそのノードの現在の内容(現在バージヨン)に
対応するタイム・パラメータ値に等しくない場
合、マシン14は第1ユーザのバージヨンの蓄積
を中止する。これは、第1ユーザのチエツク・ア
ウト以後、第2ユーザがそのノードを修正したこ
とを第1ユーザの供給した不正確なタイム・パラ
メータが示しているからである。
マシン14は、ノードが「フアイル」型式か
「アーカイブ(archive)」型式かをユーザが明ら
かにできるようにする。ユーザがノード内容の修
正されたバージヨンにチエツク・インすると共
に、そのノードの前のバージヨンが失なわれた
「フアイル」型式ノードにチエツク・インしたと
き、存在するノードの内容は書替えられる。しか
し、「アーカイブ」ノードの場合、あとに続いた
とき、ノードの最新バージヨンを前のバージヨン
に変換する1組の命令(「バージヨン履歴」)をマ
シン14は蓄積する。アーカイブ・ノードが変更
される毎にバージヨン履歴が作成され、蓄積され
る。これらバージヨン履歴により、マシン14は
アーカイブ・フアイルの総ての以前のバージヨン
を再作成できる。
マシン14は、またリンクインデツクス・パラ
メータ及びタイム・パラメータに応じて、各リン
クを識別する。リンクインデツクス・パラメータ
はリンクを識別する独特なコードであり、タイ
ム・パラメータはリンクが作成されたとき(「バ
ージヨン・タイム」)を示す数である。ユーザは、
マシンに「図表」からリンクを削除するように命
令できる。リンクが「フアイル」型式のノードし
か接続していないためにバージヨン履歴が保守さ
れていない場合、マシンは削除すべきリンクを説
明するリンク記録を破壊して応答する。しかし、
リンクが「アーカイブ」型式ノードを接続してい
ると、マシン14はリンク記録を破壊しないだろ
う。代りに、マシン14は、リンクが削除された
時を示す記録内に付加タイム・パラメータを蓄積
する。よつて、マシンは、リンク記録内に蓄積さ
れた作成及び削除タイム・パラメータからそのリ
ンクが「存在した」時間を決定できる。
更にマシンは、フアイル及びリンク・アトリビ
ユート値が任意時間に存在したとして、これらフ
アイル及びリンク・アトリビユートの以前に割当
てた値の記録を保守する。時間基準リンク記録及
びノード・バージヨン履歴に関連したこれら記録
により、フアイル、リンク及びアトリビユート値
が以前に存在したとして、マシン14はこれらの
状態を決定できる。実際には、総てのノードがア
ーカイブ型式ノードとして明らかになつた場合、
マシン14は「図表」が以前に存在したとしてそ
の「図表」を完全に再構成できる。
上述の如くユーザがマシン14に質問又は横断
検索の実行を要求すると、ユーザはマシンに特定
の以前の時間を与えることができ、図表がユーザ
指定時に存在したのでマシンはその図表を質問又
は横断検索の基礎にする。よつて、マシン14を
以前に存在した図表の再構成に適合させるばかり
ではなく、図表の以前の状態を基礎としたユーザ
命令の質問及び横断検索の実行にも適合させるの
で、ユーザにとつて、フアイルの以前のバージヨ
ンを探すのが容易になる。
図表、又は図表内の選択されたフアイル又はリ
ンクが作成されるか、アクセスされるか、変更さ
れるか、又は破壊されるとき、ユーザ定義可能な
文字列「デーモン」をUNIXオペレーテイング・
システムに転送するように本発明のマシン14を
適合させる。典型的には、デーモンを用いて、
UNIXオペレーテイング・システムにプログラム
を実行するように命令する。デーモンが求めたプ
ログラムは、例えば、ノードをアクセスする総て
のユーザのリストを保守するか、フアイルがアク
セスされたときはいつでも電子郵便システムを介
してメツセージをフアイルの編集者に送る。
本発明によりマシン14を実現するプログラム
はC言語で書ける。第2図はこのプログラムのブ
ロツク図であり、各ブロツクがプログラム又はこ
のプログラムが保守するいくつかのデータ・フア
イルの1つを表わす。第2図において、マシン1
4は、各ノード用のノード内容フアイル22を保
守すると共に、相互接続されたノード及びリンク
に関する情報を蓄積する多くの他のフアイルも保
守している。
ノード辞書24は1組の項目(「ノード記録」)
を含むフアイルであり、各項目はノードに関する
情報の記録を含む。ノード毎に、1つのノード辞
書24項目がある。各ノード辞書24項目には次
のパラメータがある。
最終更新時間(last Update Time): このパラメータの値は、この項目に対応するノ
ードの次の最新バージヨン用のバージヨン・タイ
ムを示す。本発明の好適な実施例において、任意
の開始瞬間以後に経過した秒数によりバージヨ
ン・タイムを表わす。
作成時間(creation Time): このパラメータは、この項目が述べるノードの
バージヨン・タイムを示す。
削除時間(deletion Time): 図表からノードが「削除」され、このノードが
アーカイブ・ノードならば、ノードが削除された
時間を示す値にこのパラメータを割当てる。
状態(status): このパラメータは、ノードがアーカイブ型式ノ
ードであるかを示す。
経路プリフイクス(path Prefix): このパラメータは、UNIXオペレーテイング・
システムがノードの蓄積位置を決定するのを可能
にする。
作成器(creator)、削除器(deletor): これらパラメータは、ユーザが作成及び削除す
るノードを識別する。
第1出力リンク(first Out Link): このパラメータは、上述のリンク記録を蓄積す
るためのフアイルであるリンク辞書26内の項目
に対するポインタである。この第1出力リンク・
パラメータは、図表内においてこのノードから他
のノードを指す総ての「出力リンク」の第1組を
説明するリンク辞書26項目(即ち、リンク記
録)を示す。
第1入力リンク(first In Link): このパラメータは、図表内の他の任意のノード
からこのノードを指摘する総ての「入力リンク」
の第1組を説明するリンク辞書26内の他の項目
を示す。
アトリビユート(attributes): これは、第2図のアトリビユート名辞書32及
びアトリビユート値辞書34における項目を示す
1組のアトリビユート/値パラメータ対である。
各アトリビユート名辞書32項目は、特定のアト
リビユートの名前を示し、各アトリビユート値辞
書34項目は特定のノード又はリンク・アトリビ
ユート値を示す。ノードを特徴づける各アトリビ
ユート用に、1つのアトリビユート・パラメータ
対は、各ノード辞書24項目内に含まれる。
事象動作(event Action): これは、パラメータ及び関連値の配列である。
各パラメータは、ノードに対する特定の動作(即
ち、アクセス、変更、破壊等)に応答してデーモ
ン列が呼出されているかを示す。各値は、呼出さ
れるべきデーモン文字列用の列インデツクスであ
り、デーモン値バージヨン・フアイル40内の項
目に対するポインタも含んでいる。このフアイル
において、必要なら、デーモン列の前のバージヨ
ンの列インデツクスを蓄積する。同じデーモンの
連続したバージヨンに関連したデーモン値バージ
ヨン・フアイル項目を総てリンクして、リンクさ
れたリストを形成する。このリストを横断して、
デーモン値の任意の以前のバージヨンを見つけ
る。
第2図のリンク辞書26は、対応リンクに関す
る情報を蓄積しているリンク記録から夫々成る1
組の項目を含んでいる。各リンク辞書26項目
は、以下のパラメータを含んでいる。
フロムノード(from Node): これは、「フロムノード」の現在のバージヨン
用のノード辞書24項目を指摘するノード・イン
デツクス・パラメータである。なお、そのバージ
ヨンからリンクが指摘する。
ツーノード(to Node): これは、「ツーノード」の現在のバージヨン用
のノード辞書24項目を指摘する他のノード・イ
ンデツクス・パラメータである。なお、そのバー
ジヨンへリンクは指摘する。
フロムバージヨンタイム(from Version
Time): これは、リンクが接続する「フロムノード」の
特定バージヨンを識別するバージヨン・タイム・
パラメータである。
ツーバージヨンタイム(to Version Time): これは、リンクが接続する「ツーノード」の特
定バージヨンを識別するバージヨン・タイム・パ
ラメータである。
削除時間(deletion Time): これは、リンクが削除された場合、図表からリ
ンクが削除された時間を示すバージヨン・タイ
ム・パラメータである。リンクが削除されていな
いと、「削除時間」パラメータを最大の零でない
整数に割当てる。
削除器(deletor): このパラメータは、図表からリンクを削除する
ユーザを識別する。
アトリビユート(attribute): これは、アトリビユート値辞書34及びアトリ
ビユート名辞書32における項目を指摘する1組
のパラメータ対である。1つのアトリビユート・
パラメータ対は、リンクを特徴づける各アトリビ
ユート用の各リンク辞書26項目内に含まれる。
アトリビユート値辞書34項目は、そのリンクに
関連したアトリビユートの値を示し、アトリビユ
ート名辞書32項目はそのリンクに関連したアト
リビユートの名前を示す。
現在のバージヨン(current Version): このパラメータは、リンクが関係させた「フロ
ムノード」及び「ツーノード」に蓄積されたデー
タのシーケンス内で、「リンク点位置」を示すパ
ラメータを含む第2図のリンク・バージヨン・フ
アイル28内の項目を指摘する。「リンク点位置」
は、ノード内のデータの特定ビツトを参照する。
なお、そのノードへ又はそのノードからリンクは
指摘する。
以前のバージヨン(previous Version),以前の
インテツクス(prev Index): このパラメータは、リンクの以前のバージヨン
を説明するリンク・バージヨン・フアイル28内
の第2項目を指摘する。
次の出力リンク(next Out link): このパラメータは、このリンクと同じ「フロム
ノード」から向けられた他のリンク(即ち、現在
のリンク辞書項目に関連したリンク)に関連した
リンク辞書26内の他の項目を指摘する。各リン
ク辞書26項目内の「次の出力リンク」パラメー
タは、任意の個々のノードから向けられたリンク
を説明する総てのリンク辞書項目を相互接続し
て、「出力リンク」項目のリンクされたリストを
形成する。各ノードを説明するノード辞書24項
目内の「第1出力リンク」パラメータは、「出力
リンク」項目のリンクされたリストの第1リンク
辞書26項目を指摘し、出力リンク・リストを横
断することにより他の総ての出力リンクを決定で
きる。
次の入力リンク(next In link): このパラメータは、リンクと同じノードに向か
うこのリンク(即ち、今のリンク辞書項目に関連
したリンク)に関連したリンク辞書26内の他の
項目を指摘する。各リンク辞書26項目における
「次の入力リンク」パラメータは、任意の個々の
ノードに向かつたリンクを説明する総てのリンク
辞書項目を相互接続して、項目のリンクされた
「入力リンク」リストを形成する。特定のノード
を説明するノード辞書24項目内の「第1入力リ
ンク」パラメータは、出力リンク項目のリンクさ
れたリストの第1リンク辞書26項目を指摘す
る。よつて、リンク辞書項目のリンクされた「入
力リンク」リストもノード毎に設ける。関連した
「入力リンク」リストを横断することにより、各
ノード用の「入力リンク」を決定できる。
第2図のアトリビユート値辞書34は、各ノー
ド又はリンク用の各アトリビユート値に対する項
目を含んでいる。各項目は以下のパラメータを含
んでいる。
エンテイテイ(entity): これは、アトリビユート値辞書34項目が参照
したアトリビユート値が割当てられたノード辞書
24又はリンク辞書26の項目に対するポインタ
(ノードインデツクス又はリンクインデツクス)
である。
現在の値(current Value): リンク又はノード・アトリビユートの値を時々
変更でき、アーカイブ・ノード及びアーカイブ・
ノードを接続するリンク用に各アトリビユート値
のバージヨン履歴を保守する。アトリビユート値
もバージヨン・タイムに割当てて、同じアトリビ
ユートの異なるバージヨンを識別する。「現在の
値」パラメータは、アトリビユートの現在の値に
関連したバージヨン・タイムの記録と、現在のア
トリビユート値の文字列名を表わす整数値又は列
インデツクス・パラメータとを含むアトリビユー
ト値バージヨン・フアイル36内の項目に対する
ポインタである。第2図の列テーブル46をアク
セスして、列インデツクス・パラメータが表わす
文字列を決定する。
前の(previous)、前のインデツクス(prev
Index): アトリビユート値バージヨン・フアイル36も
アトリビユート値の前のバージヨンを説明する項
目を含んでおり、アトリビユート値バージヨン・
フアイル内のこれら項目は横断されるリンク・リ
ストを形成して、ノード又はリンク・アトリビユ
ート値の任意の前のバージヨンを確かめる。「前
の」又は「前のインデツクス」パラメータを用い
て、リンクされたリストの第1項目を探す。
第2図のアトリビユート名辞書32は各アトリ
ビユート名に対する項目を収容しており、またア
トリビユートを名付ける文字列を表わす列インデ
ツクス・パラメータも含んでいる。第2図のエン
テイテイ・アトリビユート辞書30は超過アトリ
ビユート・パラメータ対を蓄積するために設け
る。これら超過アトリビユート・パラメータ対
は、固定化された記録サイズのために、種々のノ
ード及びリンクに関係するノード辞書24又はリ
ンク辞書26の項目内に蓄積できない。アトリビ
ユート・パラメータ対で満たされたノード辞書2
4又はリンク辞書26の各項目は、付加アトリビ
ユート・パラメータ対が蓄積されるエンテイテ
イ・アトリビユート辞書30内の項目に対するポ
インタを含んでいる。同じノードに関するエンテ
イテイ・アトリビユート辞書内の項目もリンクし
て、そうでなければノード又はリンク用のノード
又はリンク辞書項目内に蓄積されていないノード
又はリンク用に総てのアトリビユート値の対を決
定するために横断されるリンクされたリストを形
成する。
アトリビユート名、アトリビユート値、UNIX
システム辞書プリフイクス、デーモン及びユーザ
名用に文字列を利用する。列インデツクス・パラ
メータが総ての列を参照し、各列を独特な列イン
デツクス・パラメータ値に割当てる。第2図の列
ハツシユ・テーブル42及び列テーブル46と共
に列インデツクス・テーブル44を設けて、文字
列から列インデツクス・パラメータ値に及びその
逆に変換する。列ハツシユ・テーブル42は、ハ
ツシユされた文字列に関する列インデツクス番号
が蓄積された列インデツクス・テーブル44内の
項目に対するポインタを与える文字列ハツシユイ
ング技術を実現する。列テーブル46を利用し
て、列インデツクス番号を対応文字列に変換す
る。
ノード辞書24及び第2図の種々の他のフアイ
ル間の関係を第3図に示す。ノード辞書24の1
つの項目110に含まれたパラメータの選択され
た部分は、リンク辞書26内の項目112を指摘
する「第1入力リンク(first In Link)」パラメ
ータを含んでいる。項目112は、項目110が
説明するノードを指摘する総てのリンクの「入力
リンク」リストの第1リンクを説明すると共に、
入力リンク・リストの次のリンク辞書項目に対す
る「次の入力リンク(next In Link)」ポインタ
を含んでいる。同様に、ノード辞書項目110の
「第1出力リンク(first Out Link)」パラメータ
は、リンク辞書26内の項目114を指摘する。
このリンク辞書26は項目110が説明するノー
ドから指摘する総てのリンクを説明する「出力リ
ンク」項目のリンクされたリストの第1項目から
成る。項目114は、次のリンク辞書26項目を
出力リンク・リストに指摘する「次の出力リンク
(next Out Link)」パラメータを含んでいる。
ノード辞書24の項目110の1つのアトリビ
ユート・パラメータ対(ATTRIBUTE/
VALUE PAIRSで示す)を第3図に示す。この
対のアトリビユート部分はアトリビユート名辞書
32の項目116を指摘する。この項目は、その
アトリビユートの名前に関連した「列インデツク
ス(string Index)」パラメータを含んでいる。
この対の値部分は、アトリビユート値辞書34の
項目118を指摘する。上述の如く、ノードをそ
のノード用のノード辞書24項目内に蓄積できる
以上にアトリビユート・パラメータ対に割当てる
と、超過アトリビユート・パラメータ対がエンテ
イテイ・アトリビユート辞書30内に蓄積され
る。第3図の例において、ノード辞書項目110
内の「次の(next)」ポインタは、アトリビユー
ト対の次のグループを含むエンテイテイ・アトリ
ビユート辞書の項目120を指摘する。項目12
0は、ノード辞書項目110が説明したノードに
関連したアトリビユート対の付加グループを含ん
だ他のアトリビユート辞書項目に対する「次の
(next)」ポインタも含んでいる。
ノード辞書項目110内の値ポインタが参照し
たアトリビユート値辞書34の項目118は、整
数値を収容する「現在値(current Value)」パ
ラメータか、又はアトリビユート値名に関連した
「列インデツクス(string Index)」数を含んでい
る。更に項目118は、アトリビユート値の前の
バージヨンを参照するアトリビユート値を収容す
る項目124に対する「前の(previous)」ポイ
ンタを含むと共に、アトリビユート値の初期のバ
ージヨンに関連した付加アトリビユート値バージ
ヨン・フアイル36の項目をリンクする他の「前
の(previous)」ポインタも含んでいる。アトリ
ビユート値辞書項目118は、ノード辞書項目1
10に戻つて指摘するエンテイテイ・パラメータ
も含んでいる。
アトリビユート値バージヨン・フアイル36に
連結したアトリビユート辞書34により、マシン
14は選択した値のアトリビユート値を有する総
てのノードを決定し、アトリビユート値の特性を
変更し、各アトリビユート値の前のバージヨンを
決定することができる。例えば、ノード内のデー
タの変更を承認する責任者名を示す各ノード用
に、「所有権(ownership)」アトリビユートを作
成してもよい。スミスに1組のノードに対する変
更責任がある場合、その組の各ノード用の「所有
権」アトリビユートを「スミス」という値に割当
ててもよい。項目100に対応するノードをその
組の1つのノードと仮定すると、「スミス」はア
トリビユート値辞書フアイル34の項目118に
蓄積された現在の値である。この組の所有権責任
がジヨーンズに渡されると、その組の総てのノー
ドに対するアトリビユート値を変更する必要があ
る。記録124に類似した新たなアトリビユート
値バージヨン・フアイル36を作成して、古い値
「スミス」を蓄積する。この記録内の「前の
(previous)」ポインタが記録124を指摘するよ
うに調整する。記録118内の「現在の値
(current Value)」パラメータを「ジヨーンズ」
に変更し、記録118内の「前の(previous)」
ポインタを変更して、「スミス」値を収容するア
トリビユート値バージヨン・フアイル36内の新
たな記録を指摘するようにする。
第3図に示すノード辞書24の項目110は、
選択したノード事象に応答して発生すべきデーモ
ン文字列を参照する「列インデツクス(string
Index)」パラメータを各々収容する1組の「事
象動作(event Action)」パラメータを含んでい
る。項目110は、デーモン値バージヨン・フア
イル40の項目128を指摘する各「事象動作
(event Action)」パラメータに関係して「前の
(previous)」ポインタも含んでいる。この項目1
28は、デーモンのまだ初期のバージヨンに関連
した付加デーモン・フアイル40項目をリンクす
る他の「前の(previous)」ポインタと共に、デ
ーモンの初期バージヨンの「列インデツクス
(string Index)」を含んでいる。
リンク辞書26及び他の種々のフアイルの関係
を第4図に示す。リンク辞書26の1つの項目1
30用のパラメータの選択した部分は、「ツーノ
ード(to Node)」パラメータを含んでおり、こ
のパラメータは、このリンクに関係した「ツーノ
ード(to Node)」を説明するノード辞書24内
の項目132を指摘する。項目130の「フロム
ノード(from Node)」パラメータは、このリン
クに関連した「フロムノード(from Node)」を
説明するノード辞書24内の項目134を指摘す
る。リンク辞書26の項目130の1つのリン
ク・アトリビユート・パラメータ対を示す。この
対のアトリビユート(attribute)部分は、リン
ク・アトリビユートの名前に関連した「列インデ
ツクス(string Index)」パラメータを収容する
アトリビユート名辞書32の項目136を指摘す
る。また、この対の値(value)部分は、アトリ
ビユート値辞書34の項目138を指摘する。項
目130内の「次の(next)」ポインタは、アト
リビユート対の次のグループを収容するエンテイ
テイ・アトリビユート辞書30の項目140を指
摘する。項目140は、リンク辞書項目130が
説明するリンクに関連したアトリビユート・パラ
メータ対の付加グループを収容する他のエンテイ
テイ・アトリビユート辞書30項目に対する他の
次のポインタも含んでいる。
アトリビユート値辞書34の項目138は、整
数値又はリンク・アトリビユート値名の「列イン
デツクス(string Index)」を収容する「現在値
(current Value)」パラメータを含んでいる。更
に項目138は、リンク・アトリビユート値の前
のバージヨンを参照するアトリビユート値を収容
する項目144に対する前のポインタも含んでい
る。項目144は、リンク・アトリビユート値の
まだ初期のバージヨンに関連した付加アトリビユ
ート値バージヨン・フアイル36をリンクする他
の前のポインタを収容する。アトリビユート値辞
書項目138は、ノード辞書エントリ130に戻
つて指摘するエンテイテイ・パラメータを収容す
る。
第4図のリンク辞書26の項目130に、リン
ク・バージヨン・フアイル28の項目146に対
する「前の(previous)」ポインタを更に設ける。
この項目146は、リンクの前のバージヨンに関
する情報を収容する。また、項目146は、この
リンクのまだ初期のバージヨンに関する情報を収
容するリンク・バージヨン・フアイル28の項目
を指摘する前のパラメータを収容する。
第2図のトランザクシヨン・ログ・フアイル4
1を設けて、ユーザが要求した動作をマシンが実
行するとき、第2図のフアイルに行なつた変更に
関する情報を蓄積する。何らかの理由により、要
求された動作が不適当に終了した場合、トランザ
クシヨン・ログにより、マシン14は第2図の他
のフアイルに行なつた変更を「取消す」ことがで
きる。動作が完全に完了すると、トランザクシヨ
ン・ログに蓄積された情報は破棄される。
本発明によるプログラムは、第2図に示した種
種のデータ・フアイルを制御する。第2図におい
て、f−nodeプログラム43は、ノード辞書2
4への入出力アクセスをバツフアし、プログラム
f−linksは、リンク辞書フアイル26への入出
力アクセスをバツフアし、プログラムf−link
Hist48は、リンク・バージヨン・フアイル2
8へのアクセスをバツフアする。f−ent Attプ
ログラム50、f−att Defプログラム5入力、
f−att Valueプログラム54及びf−att Hist
プログラム56は、エンテイテイ・アトリビユー
ト辞書30、アトリビユート名辞書32、アトリ
ビユート値辞書34及びアトリビユート値バージ
ヨン・フアイル36へのアクセスを夫々バツフア
する。同様に、プログラムf−demon Hist(ブ
ロツク58)はデーモン値バージヨン・フアイル
40への入出力アクセスをバツフアする一方、f
−stringsプログラム60は、列バツシユ・テー
ブル42、列インデツクス・テーブル44及び列
テーブル46へのアクセスをバツフアする。1対
のプログラム45(デイレクトリ及びデイレク
ト)は、デイレクトリを表わし、デイレクトリの
動作を実現するために用いるデータ構造を定義す
る。
本発明によるプログラムは、第2図の内容フア
イル22も含んでいる。各ノード内容フアイル2
2は、データ・フアイルの現在のバージヨンを含
んでおり、また、アーカイブ・フアイルの前のバ
ージヨンを作成するために、現在のバージヨンに
要求された変更を示すバージヨン履歴データも収
容する。ns−nodeプログラム62はノード内容
フアイル22内に蓄積された現在のバージヨン・
データへの変更を制御し、アーカイブ・プログラ
ム64はノード内容フアイル内に蓄積されたバー
ジヨン履歴データの入出力を制御する。lcsプロ
グラム66は、ユーザが提供したフアイルの最新
バージヨンを最近蓄積されたバージヨンと比較し
て、ノード内容フアイルに蓄積すべきバージヨン
履歴データを発生する。
本発明は「列(string)」プログラム68を有
しており、このプログラム68は、f−stringプ
ログラム60を介して列テーブル46を利用し
て、所定入力文字列を関係した列インデツクスを
見つけ、そこに戻る。また、列プログラム68
は、新たな文字列用の新たなインデツクス番号を
作成する。「ログ(log)」プログラム70は、ト
ランザクシヨン・ログ・フアイル41への入出力
を制御し、ユーザによる図表アクセスの不適当な
終了に対する回復機構を実現する。また、ログ・
プログラム70は、図表に対するマルチユーザ・
アクセスを同期させる。
本発明による1組のプログラムは、ユーザが要
求した種々の動作を実現する。この動作を以下に
示す表記により定義する。
オペランド1×オペランド2×…×オペランド
n→ 結果0 × 結果1 ×…× 結果m ここで、nは1以上であり、mは0以上である。
各オペランドi及び結果iは、値の「デーモン」
を有する。更に、YnはY×Y×…Y(Yをn回掛
ける)を意味し、Y*はYmを意味する。なお、m
は0以上である。オペランド及び結果の定義域
(即ち、各オペランド又は結果を割当てられる値)
は次の通りである。
オペランド又は結果: 定義: Attribute:アトリビユート名(文字列) Attribute Index:
アトリビユート名(番号)用の独特な識別 Boolean:真/偽インジケータ Contents:ノード内のデータ Context: 現在アクセスした図表用の独特な識別 Demon: デーモン値 Difference: 削除、挿入又は交換命令 Directory:
有効なUNIXフアイル・デイレクトリ名 Event:デーモン列を呼出す事象 Explanation:説明テキスト Link Index:リンク用識別 Machine:コンピユータ・ネツトワーク内の個々
のコンピユータ用識別 Node Index:ノード用識別 Position:ノード内のデータの選択した対の位置
を表わす番号 Predicate:アトリビユート及びそれらの値によ
るブール式 Project Id:図表用の独特な識別 Protections: 複数のフアイル保護モードの1つ Time:
所定データ及び時間を表わす負でない整数 Value:アトリビユート値 第2図において、図表プログラム72は、デイ
レクトリに影響する次の動作を実現する。
Create Graph: Directory×Protections→Project Id この動作Create Graphは、特定のUNIXフアイ
ル保護モード(Protections)を利用する特定の
UNIXデイレクトリ(Directory)において新た
な「からの」図表を作成する。図表は、いかなる
ノードも収容していないという意味で初め「か
ら」である。Create Graph動作は、この動作を
呼出したユーザに図表用の独特な識別から成る
Project Idパラメータを戻す。その後、オープン
すべき図表を識別するために新たな図表をオープ
ンするときはいつでも、ユーザはProject Id及び
Directoryパラメータを特定しなければならない。
Destroy Graph: Project Id×Directory→− 動作Destroy Graphは、Directory内に存在する
図表を破壊する。Project Idは、第1の場所に図
表を作成したCreate Graph動作が戻したのと同
じ値でなければならない。図表の破壊は、この図
表に関連する第2図の総てのフアイルの破壊を含
む。
Open Graph: Project Id×Machine×Directory→Context ユーザはOpen Graph動作を呼出して、マルチコ
ンピユータ・システムの選択したコンピユータ
(マシン)が保守する蓄積装置用の特定のデイレ
クトリ(Directory)内に位置する実在の図表を
アクセス(オープン)する。Project Idパラメー
タの値は、図表を作成したCreate Hraph動作が
戻したのと同じでなければならない。「Context」
は図表用の独特な識別であり、ひとたび図表をオ
ープンして他の動作を呼出したとき、この
「Context」を利用する。Contextの値は任意であ
るが、同時にオープンした図表の各々で異なる。
Add Note: Context×Boolean→Node Index×Time ひとたびユーザが図表をオープンすると、ユーザ
は新たなノードを付加できる。まずユーザは、
Add Note動作を呼出して、Contextが識別した
図表内に新たなからのノードを作成することによ
り、からのノードを付加する。Booleanが真なら
ば、バージヨン履歴をそのノード用に保守、即ち
そのノードをアーカイブ・ノードとして保守す
る。Booleanが偽ならば、そのノードはフアイ
ル・ノードであるとみなして、バージヨン履歴を
保守しない。ひとたびノードを作成すれば、Add
Nodeは新たなノード用のNode Index及びTime
パラメータを戻す。ひとたび、からのノードを作
成すれば、ユーザは他の動作「modify Node」
(後述する)を呼出して、それをデータで満たす
ことができる。
Delete Node: Context×Node Index→− Delete Node動作は、(Contextが識別した)図
表と共に、削除したノードに又はこのノードの外
の総てのリンクから、Node Indexが識別したノ
ードを除去する。フアイル・ノードの場合、第2
図のノード内容フアイル22を蓄積装置から除去
するが、アーカイブ・フアイルの場合、そのノー
ドは「削除された」とマークされ、そのノードの
前のバージヨンを再構成できるようにノード・フ
アイル内容及びノード内容フアイルのノード履歴
部分を保守する。
Add Link: Context×Link Pt1×Link Pt2→ Link Index×Time Add Link動作は、2つのノード間の新たなリン
クを作成する。第5図は2つのノード内容フアイ
ル間のリンクを示しており、データをバイトのシ
ーケンスとして各ノード内容フアイルに蓄積す
る。リンクは、「ノードから」102内の1つの
選択したバイト100を「ノードへ」106内の
他の選択したバイト104に接続する。リンクを
行なつたノード内容フアイル内のバイト・シーケ
ンスの特定のバイトから成るリンク点(Link
Pt)は、次のように特定する。
Link Pt=Node Index×Position×Time ここで、Node Indexはノードを識別し、
Positionはリンクが指摘するノード内のバイト・
シーケンス位置内を識別する。リンク点(Link
PT1又はLink PT2)がアーカイブ・ノードを参
照すると、リンクのバージヨン履歴を保守する。
Timeはノードのバージヨン・タイムを参照し、
マシンは、ユーザが零でないTimeを明らかにす
るまでそのノードを現在のバージヨンと仮定す
る。Link Pt1は、リンクが開始する「ノードか
ら」内のバイトを認識し、Link Pt2はリンクが
終了する「ノードへ」内のバイトを認識する。
Add Link動作はLink Index、新たなリンク用の
独特な識別子、及びリンク用の作成時間
(Time)を戻す。
Copy Link: Context×Link Index×Time1×Boolean×
Link Pt→Link Index×Time Copy Link動作は2つのノード間の新たなリン
クを作成するが、リンクの一端は、Link Index
及びTime1が識別した存在するリンクの一端と
等しい。よつて、この存在するリンクの端を新た
なリンクの一端として扱い、Link Ptが新たなリ
ンクの他端を識別する。Booleanが真ならば、
Link Indexが新たなリンク点の源を識別し、
Link Ptが行き先を識別する。Booleanが偽なら
ば、Link Indexは新たなリンクの行き先を識別
し、Link Ptは源を識別する。Copy Link動作
は、新たなリンク及びそのある時間(Time)用
のLink Index識別子を戻す。
Delete Link: Context×Link Index→− Delete Link動作は、Contextが与えた図表の
Link Indexが識別したリンクを除去するが、リ
ンク・バージヨン履歴は削除しない。
第2図の図表プログラム72は、デイレクト及
びデイレクトリ・プログラム45を利用して、ノ
ード辞書フアイル24の内容を制御する上述の動
作を実現する。ユーザによる不適当な終了後の回
復動作中、ログ・プログラム70を実行し、ロ
グ・プログラムからトランザクシヨン・データを
取込む動作に関する情報を図表プログラム72が
与える。
第2図において、線形プログラム74は以下の
動作を実現する。
Linearize Graph: Context×Node Index×Time×Predicate1×
Predicate2×Attribute Index1m×Attribute
Index2n→(Node Index×Valuem*×(Link
Index×Valuen* この動作は、上述した「横断」検索を実行す
る。Linearize Graph動作は、Context及びTime
が識別する図表のバージヨンのリンクされた副図
表に戻る。この副図表は、図表のあるゆるノード
を収容する。なお、この図表は、Predicate1を満
足する。そして、この図表は、Predicate2を満足
するリンクのみを横断して、Predicate1を満足す
る他のノードを通過して、開始ノード(Node
Indexにより識別される)から到達することがで
きる。「predicate」は、各アトリビユートに関連
した1つ以上の値と共に、選択した1組のノード
又はリンク・アトリビユートを示す。「満足する」
ためには、述部、ノード又はリンクは、その述部
が示したアトリビユート値を所有しなければなら
ない。ノード及びリンク述部(predicate)を以
下に原理により説明する。
predicate → expression expression → −expression → (expression) → term → expression&expression → expression|expression term → attribute relop value → “true” → “false” relop → “<” → “</” → “>/” → “>” → “=” → “≠” attribute → “string” value → integer|“string”||*| 上の原理において、文字「*」は任意の値を表
わす。例えば、ノードが値「text」であるアトリ
ビユート名「type」及びアトリビユート名
「year」を有すると仮定すれば、典型的な
Predicate1表現は上述の規則により次のようにな
る。
type=text&year>1960 この述部は、1960年以後に書かれたテキスト・
ノードは、副図表内に含まれるべきであることを
示している。副図表のノード及びリンクを識別す
る1組のNode Index及びLink Index値としての
Linearize Graphにより副図表を戻す。また、
Linearize Graph動作は、副図表のノード及びリ
ンクに関連し選択したアトリビユートの値
(Value*)、Attribute Index1mに応じて選択する
ノード・アトリビユート、及びAttribute
Index2nに応じて選択するリンク・アトリビユー
トを戻す。Linearize Graph動作の実行におい
て、線形プログラム74は、アトリビユート・プ
ログラム82を呼出すことによりノード及びリン
ク用のアトリビユート値を得、「検索」プログラ
ム75を利用して、ノード及びリンクのアトリビ
ユートを評価し、Predicate1又はPredicate2が満
足されたかを判断する。
第2図の「フイルタ」プログラム76は次の動
作を実行する。
Get Graph Query: Context×Time×Predicate1×Predicate2×
Attribute Index1o→(Node Index×Valuem*
×(Link Index×Valuen* この動作は上述の「質問検索」を実行する。
Contextが与えた図表の副図表が時点Timeに存
在したので、Get Graph Query動作はこの副図
表を戻す。副図表は、Predicate1を満足する総て
のノードと、これら副図表ノードを接続する
Predicate2を満足する総てのリンクを含む。
Pradicate1及びPredicate2は、Linearize Graph
動作に関連した述部用の上述の原則に従う。Gat
Graph Query動作により戻された副図表は、
Predicate1を満足する図表のノードと、
Predicate2を満足する任意の相互接続リンクとを
識別する1組のNode Index及びLink Index値か
ら成る。また、この動作は、副図表のノード及び
リンクに関係する選択したアトリビユートの値
(Value*)、Attribute Index1mに応じて選択する
ノード・アトロビユート、及びAttribute
Index2nに応じて選択するリンク・アトリビユー
トを戻す。この動作を実行する際、フイルタ・プ
ログラム76は、アトリビユート・プログラム8
2及び検索プログラム75を利用する。
「ds−node」プログラム78は、ノードに影
響を与える次の動作を実行する。
Open Node: Contex×Node Index×Time1×Attribute
Index1m×Attribute Index2n→Contents×
Valuem×Time2×(Link Pt×Value** Time1が零ならば、Open Node動作は、Node
Indexが識別した存在するノード及びContextが
識別した図表の内容(Contents)及び現在のバ
ージヨン・タイム(Time2)を戻す。Time1が
零でなければ、Open Nodeは、Time1としての
ノードの内容の最終バージヨン及び戻された内容
のバージヨン・タイム(Time2)を戻す。更に
この動作は、Attribute Index1mが識別した存在
するノードのノード・アトリビユートの値
(Value*)、そのノードに接続された各リンクの
Link Pt識別、及びAttribute Index2nが識別し
たリンク・アトリビユートの値を戻す。「Open
Node」ノード動作は、ns−nodeプログラム62
を呼出すことにより、ノード内容フアイル22内
のノードの現在のバージヨンをアクセスする。
Modify Node: Context×Node Index×Time×Contents×
(Link Index×Position)*→− Modify Node動作を呼出して、Node Index及び
Timeが識別した図表内容の存在するノードの新
たなバージヨン(Contents)を蓄積する。Time
の値は、ノードの現在のバージヨンに等しくなけ
ればならない。そうでなければ、Modify Node
動作は、競合の指示をユーザに戻し、新たなノー
ド・バージヨンを蓄積しない。更に、動作
Modify Nodeは、Link Indexが識別した存在す
る各リンクのノードにおいて、始点又は終点
(position)を再配置する。ds−nodeプログラム
78はns−nodeプログラム62を利用して、新
たなノード内容を蓄積する。ns−nodeプログラ
ム62は、アーカイブ・プログラム64及び1cs
プログラム66を交互に利用して、変更すべきノ
ードがアーカイブ・モードのとき新たなバージヨ
ン履歴を作成する。ds−nodeプログラム78は、
f−nodesプログラム43を呼出して、リンク点
において指示して変更を反映するように、ノード
辞書24内の項目を修正する。
Get Node Time Stamp: Context×Node Index→Time このGat Node Time Stamp動作は、Node
Indexが識別した図表Contextのノード用の現在
のバージヨン・タイムを戻す。現在のバージヨ
ン・タイムをノード辞書フアイル24に蓄積す
る。
Convert File To Archive: Context×Node Index→− 上述の如く、add Node動作がノードを作成する
と、それはフアイル・ノードとして示されて、ノ
ードの現在のバージヨンのみを保守するか、アー
カイブ・ノードとして示されてノードのバージヨ
ン履歴を保守する。Convert File To Archive
動作を呼出して、初めはフアイル・ノードとして
示されたノード(Node Index及びContextによ
り識別される)をアーカイブ・ノードに変更する
ので、その後ノード用に、完全なバージヨン履歴
を維持する。
Change Node Protections: Context×Node Index×Protections→− このChange Node Protections動作は、Node
Index及びContextが識別したノードの内容を蓄
積するフアイル用のフアイル保護モードを
Protectionが識別したモードに設定する。
Get Node Versions: Context×Node Index→Version1+×
Version2* このGet Node Versions動作は、Version1+が識
別した「メージヤ・バージヨン」及びVersion2*
が識別した「マイナ・バージヨン」を含むNode
Index及びContextが識別したノード用のバージ
ヨン履歴を戻す。「Version」は次のように定義
する。
Version=Time×Explanation ここで、Timeはバージヨンを識別し、 Explanationはバージヨンの特性(即ち、メージ
ヤ・バージヨンかマイナ・バージヨンか)を説明
するテキストである。メージヤ・バージヨンはノ
ード内容の更新であり、一方、マイナ・バージヨ
ンは、リンクの付加又はアトリビユート値の変更
に関係した如きノードに関する他の変更である
が、ノード内容は変更しない。ds−nodeプログ
ラム78はf−nodeプログラム43を利用して、
ノード辞書からバージヨン履歴データを取入れ
る。
Get Node Differences: Context×Node Index×Time1×Time2→
Difference* このGet Node Differences動作は、Node
Index及びContextが識別したノードのTime1及
びTime2バージヨン、即ち1組の付加間の
「差」、Time1バージヨンをTime2バージヨンに
変更する削除及び挿入指令を戻す。ds−nodeプ
ログラム78は、ns−nodeプログラム62、ア
ーカイブ・プログラム64及び1csプログラム6
6を利用して、ノード内容フアイル22からバー
ジヨン履歴を取込む。
「ds−link」プログラム80はリンクに関する
次の動作を実行する。
Get To Node: Context×Link Index×Time1→Node Index
×Time2 このGet To Node動作は、Contextが識別した
図表のLink Indexが識別したリンクのTime1バ
ージヨンの行先ノードの識別Node Index及びバ
ージヨン・タイム(Time2)を示す。ds−linkプ
ログラム80は、f−linksプログラム49及び
f−link Histプログラム48を用いて、リンク
辞書26及びリンク・バージヨン・フアイル28
からLink Index番号を得る。
Get From Node: Context×Link Index×Time1→Node Index
×Time2 このGet From Node動作は、Link Index及び
Context及びバージヨン・タイム(Time1)が識
別したリンクのソース・ノードの識別Node
Index及びバージヨン・タイム(Time2)を戻
す。
「アトリビユート」プログラム82は次の動作
を実行する。
Get Attributes: Context×Time→(Attribute×Attribute
Index)* このGet Attributes動作は、Contextが識別した
図表用の所定時点(Time)に存在する総てのア
トリビユート(Attribute)及びそれらに関連し
たAttribute Indexsを戻す。上述した如く、
Contextは、open Graph動作の結果として確立
した図表用の独特な識別子である。ノード及びリ
ンクに関連したAttribute Index番号を取込むた
めに、アトリビユート・プログラム82は、アト
リビユート名辞書68からAttribute Index番号
を取込むf−att Defプログラム52を呼出す。
アトリビユート・プログラム82は、列プログラ
ム68を呼び出して、各Attribute Index番号に
関連したアトリビユート名(Attribute)を決定
する。
Get Attribute Value: Context×Attribute Index×Time→Value* このGet Attribute Valuesは、所定時に
Contextが識別した図表用に、Attribute Index
が識別し選択したアトリビュートに割当てた値
(Value*)のリストを戻す。アトリビユート・プ
ログラム82は、f−att Valueプログラム54
及びf−att Histプログラム56を利用して、ア
トリビユート値バージヨン・フアイル36内に蓄
積されたアトリビユート値列インデツクス・デー
タを探すと共に、列プログラム68は利用して、
アトリビユート値列インデツクス・データを、選
択したAttribute Indexに関係したアトリビユー
ト値を表わす文字列に変換する。
Get Attribute Index: Context×Attribute→Attribute Index アトリビユート・プログラムのGet Attribute
Index動作は、列プログラム68を利用して、図
表Contextに関連したアトリビユート名用の独特
な列インデツクス識別(Attribute Index)を戻
す。アトリビユートが新しければ、この動作は新
たなアトリビユート・インデツクス値を割当て
る。
Set Node Attribute Value: Context×Node Index×Attribute Index×
Value→− このSet Node Attribute Value動作は、新たな
値を、Node Index及びContextが識別したノー
ドの現在のバージヨンのアトリビユート
(Attribute Indexにより識別される)に割当てる
と共に、値(Value)をアトリビユートに割当て
る。Node Indexが識別したノードがアーカイ
ブ・ノードならば、アトリビユート値の新たなバ
ージヨンを作成する。
Get Node Attribute Value: Context×Node Index×Attribute Index×
Time→Value このGet Node Attribute Value動作は、f−
nodeプログラム43を用いて、Node Index及び
Contextが識別した所定ノード用の所定時点
(Time)において、Attribute Indexが識別した
アトリビユート用の値(Value)を戻し、ノード
辞書24をアクセスする。
Delete Node Attribute: Context×Node Index×Attribute Index→− このDelete Node Attribute動作は、f−nodes
プログラム43を利用し、Node Index及び
Contextが識別したノード用のAttribute Index
が識別したアトリビユートを削除して、ノード辞
書24を修正する。
Get Node Attributes: Context×Node Index×Time→(Attribute
×Attribute Index×Value)* このGet Node Attributes動作は、図表Context
の選択したノード(Node Index)用の選択した
時点(Time)におけるアトリビユート名
(Attribute)、それらに対応した列インデツクス
識別子(Attribute Index)、及びそれらの値
(Value*)の総てを戻す。このAttribute Index
は、f−nodesプログラム43によりノード辞書
24から得、またアトリビユート用のValue
Indexパラメータは、f−att Valueプログラム
54によりアトリビユート値辞書34から得る。
よつて、列プログラム68を呼出して、取込んだ
Value Index及びAttribute Index番号を文字列
(Attribute及びValue)に変換する。
Set Link Attribute Value: Context×Link Index×Attribute Index×
Value→− このSet Link Attribute Value動作は、アトリ
ビユート/値ポインタ対をリンク辞書26に付加
して、図表Contextのリンク(Link Index)の選
択したアトリビユート(Attribute Index)の値
(Value)を設定する。このようにするため、ア
トリビユート・プログラムは、ds−linkプログラ
ム80を呼出し、このプログラム80は、f−
linksプログラム49を介してリンク辞書26を
アクセスする。このリンクがアーカイブ型式ノー
ドに適合していれば(即ち、ノードのバージヨン
履歴を保守すべきであれば)、f−att Valueプ
ログラム54を介してアクセスしたアトリビユー
ト値辞書34において、アトリビユート値の新た
なバージヨンを作成する。
Get Link Attribute Value: Context×Link Index×Attribute Index×
Time→Value このGet Link Attribute Value動作は、
Contextが識別した図表のLink Indexが識別した
リンクの選択したバージヨン(Time)用の
Attribute Indexが識別したアトリビユートの値
(Value)を戻す。ds−linkプログラム80を呼
出して、リンク辞書26からアトリビユートに関
連した値ポインタを得、次に、f−att Valueプ
ログラム54を呼出して、アトリビユート値辞書
34からアトリビユートの値を得る。
Delete Link Attribute: Context×Link Index×Attribute Index→− このDelete Link Attribute動作は、Link Index
が参照した図表Contextのリンク用のAttribute
Indexが示したアトリビユートを、リンク辞書2
6から削除する。
Get Link Attribute: Context×Link Index×Time→(Attribute×
Attribute Index×Value)* このGet Link Attributes動作は、選択した時点
にLink Indexが識別した図表Contextのリンク用
の各アトリビユートのアトリビユート名
(Attribute)、このアトリビユート用の列インデ
ツクス(Attribute Index)及び値(Value)を
戻す。この動作の実行の際、アトリビユート・プ
ログラム82は、ds−linkプログラム80に呼び
かけて、リンク辞書26又はリンク・バージヨ
ン・フアイル28から列インデツクス番号を取込
むと共に、f−att Valueプログラム54及びf
−att Histプログラム56に呼びかけて、アトリ
ビユート値を参照するValue Index番号を取込
む。また、列プログラム68を用いて、列インデ
ツクス番号が参照したアトリビユート及び値文字
列を戻す。
「デーモン」プログラム84は次のデーモン動
作を実行する。
Set Graph Demon Value: Context×Event×Demon→− このSet Graph Demon Valueは、Contextが識
別した図表に対して、Eventが定義した図表動作
を実行するときにはいつも呼出されるデーモン列
を作成する。デーモン列を呼出す目的でEvents
として識別できる図表動作には、Open Graph,
Add Node,Delete Node,Add Link,Coph
Link及びDelete Linkがある。この動作の実行
中、デーモン・プログラム84は、ds−linksプ
ログラム80及びds−modeプログラム78を呼
出して、リンク辞書26及びノード辞書24内の
項目を修正し、また、f−demon Histプログラ
ム58を呼出し、デーモン辞書38及びデーモン
値バージヨン・フアイル40内に適当な項目を作
成する。また、このデーモン・プログラムは、列
プログラム68を利用して、デーモン文字列を列
テーブル46に蓄積すると共に、列インデツク
ス・テーブル44内にデーモン用の列インデツク
スを作成する。
Get Graph Demons: Context×Time→(Event×Demon)* このGet Graph Demons動作は、デーモン列を
呼出して、呼出されたデーモン列を戻すContext
及びTimeが識別した図表のバージヨン用の総て
の事象(Event)を戻す。
Set Node Demon: Context×Node Index×Event×Demon→− このSet Node Demon動作は、Node Indexが識
別した図表Contextのノードに対して、Eventが
定義した動作を実行するときはいつでも呼出され
るデーモン列(Demon)を作成する。デーモン
列を呼出す目的でEventとして識別できるこの動
作には、上述の如くOpen Node及びModify
Nodeがある。
Get Node Demons: Context×Node Index×Time→(Event×
Demon)* このGet Node Demons動作は、デーモン列を
呼出すNode Index及びTimeが識別した図表
Contextのノードのバージヨンに影響する総ての
事象(Event)を戻す。また、このGet Node
Demons動作は、呼出されたデーモン列
(Demon)を戻す。
〔発明の効果〕
本発明によれば、リンクによつて共通性を有し
ないフアイルの間をも関係させることができる。
よつて、フアイル・アトリビユートは、ユーザが
フアイルに新たな識別特徴を見つけたときに必要
に応じて任意の時点で定義しても、検索に関して
問題は生じない。また、フアイルの間に新しいリ
ンク・アトリビユートを任意の時点で定義してフ
アイル間に新しい結合(リンク)関係を生成する
ことができるので、この定義について制約を受け
ることがない。よつて、フアイル及びリンク・ア
トリビユートの数を予め一定数に制限する必要が
なく、検索に最も好適なフアイル及びリンク・ア
トリビユートを任意に設定できる。
また、本発明によれば、検索したい所望のフア
イルが正確に分からないときでも、その特徴をフ
アイル・アトリビユート、リンク・アトリビユー
ト又はバージヨン・タイムによつて指示すれば、
所望のフアイルを見つけ出すことができる。即
ち、フアイル・アトリビユート、リンク・アトリ
ビユート又はバージヨン・タイムを指示すること
により、検索を開始する最初の第1フアイル(ノ
ード)が定まる。この第1フアイルに先に指示し
たリンク・アトリビユートで結合(リンク)され
たフアイルをたどつていくことにより、ユーザ定
義のリンクに従つた所定順序でフアイルが検索さ
れていき、無関係なフアイルを検索することがな
く、所望のフアイルを高速で見つけ出すことがで
きる。
また、本発明によれば、バージヨン履歴記録を
読み出すことによつて過去の任意の時点における
システム全体の図表を容易に完全に再生成でき
る。つまり、その任意の時点におけるフアイル内
容及びそのフアイルに割り当てられたフアイル・
アトリビユートだけでなく、従来なし得なかつた
その時点に存在したフアイル間のリンク・アトリ
ビユート及びリンク・アトリビユート値も再生成
できる。よつて、過去の任意の時点におけるフア
イルの共通性からだけでなく、リンク・アトリビ
ユートに基づいたフアイルの結合性(リンクの属
性)からもフアイルを検索することができる。
また、本発明によれば、バージヨン・タイムに
よりフアイルのバージヨンを指定できるのである
ユーザが過去にフアイルを変更した時間を指定し
て所望のフアイルを変更しようとしてもそのフア
イルと対応しているバージヨン・タイムがこのユ
ーザの指定した過去の変更時間と異なつていれ
ば、そのフアイルはその後に他のユーザが変更し
たと分かるので、フアイルの変更をしないように
このユーザに知らせることができる。つまり、2
人以上のユーザが同時にノード(フアイル)にア
クセスし、変更してしまうのを防止できる。
【図面の簡単な説明】
第1図は本発明を利用した情報管理システムの
ブロツク図、第2図は本発明に応じたコンピユー
タ・ソフトウエアのブロツク図、第3及び第4図
は第2図のソフトウエアが保守する選択したデー
タ・フアイル間の関係を示すブロツク図、第5図
は2つのデータ・フアイル間のリンクを示す図で
ある。

Claims (1)

  1. 【特許請求の範囲】 1 フアイルを連続的に変更して得る該フアイル
    の連続的なバージヨンを管理するフアイル管理方
    法において、 上記バージヨンに夫々対応し、該バージヨンの
    変更直前のバージヨンを再生成する命令を含むバ
    ジヨン履歴記録を生成して蓄積し、 該バージヨン履歴記録に対応する上記バージヨ
    ンがフアイルの内容として最初に生成された時間
    を示すバージヨン・タイムを上記バージヨン履歴
    記録に夫々割当てて蓄積し、 上記バージヨンを生成するときに任意の1対の
    上記フアイルの間の関係を一方のフアイルが他方
    のフアイルを指し示す関係として定義することが
    できるリンク・アトリビユート及び該リンク・ア
    トリビユートの値を表すリンク・アトリビユート
    値を対応する上記バージヨン・タイムとともにリ
    ンク記録に蓄積し、 上記バージヨン履歴記録に対応させて、フアイ
    ルの属性を表すフアイル・アトリビユート及び該
    フアイル・アトリビユートの値であり、フアイル
    の内容を表すフアイル・アトリビユート値をフア
    イル記録に蓄積し、 特定フアイルを識別する命令、特定フアイル・
    アトリビユート値、特定リンク・アトリビユート
    値、又は特定時間の指示を受けて、 上記特定時間における上記特定フアイルと関係
    する上記特定リンク・アトリビユート及び上記特
    定リンク・アトリビユート値を上記リンク記録か
    ら読出し、 上記リンク記録と対応する特定バージヨン・タ
    イムを読出し、 上記特定リンク・アトリビユート、上記特定リ
    ンク・アトリビユート値、及び上記特定バージヨ
    ン・タイムから定まる特定バージヨン履歴記録を
    検索し、 上記特定フアイルと上記特定フアイル・アトリ
    ビユート値及び上記特定リンク・アトリビユート
    値で関係づけられるフアイルを上記特定バージヨ
    ン履歴記録及び上記フアイル記録に基づいて再生
    成することを特徴とするフアイル管理方法。
JP61315906A 1985-12-31 1986-12-25 フアイル管理方法 Granted JPS62160549A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US81543085A 1985-12-31 1985-12-31
US815430 1985-12-31

Publications (2)

Publication Number Publication Date
JPS62160549A JPS62160549A (ja) 1987-07-16
JPH0550774B2 true JPH0550774B2 (ja) 1993-07-29

Family

ID=25217767

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61315906A Granted JPS62160549A (ja) 1985-12-31 1986-12-25 フアイル管理方法

Country Status (2)

Country Link
EP (1) EP0229232A2 (ja)
JP (1) JPS62160549A (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8915875D0 (en) * 1989-07-11 1989-08-31 Intelligence Quotient United K A method of operating a data processing system
EP0426593A3 (en) * 1989-11-02 1993-10-13 International Business Machines Corporation User access of multiple documents based on document relationship classification
US5144555A (en) * 1989-11-16 1992-09-01 Hitachi, Ltd. Method and apparatus for supporting of making formatted document
US5162992A (en) * 1989-12-19 1992-11-10 International Business Machines Corp. Vector relational characteristical object
JPH03278247A (ja) * 1990-03-28 1991-12-09 Fuji Xerox Co Ltd ハイパーメディアシステム
JP2865827B2 (ja) * 1990-08-13 1999-03-08 株式会社日立製作所 会議システムにおけるデータ蓄積方法
AU3858295A (en) * 1995-01-26 1996-08-14 Thorsen, Hans Method and system for accessing data
US5991765A (en) * 1997-05-06 1999-11-23 Birdstep Technology As System and method for storing and manipulating data in an information handling system
US6505212B2 (en) 1998-02-04 2003-01-07 Interwoven Inc System and method for website development
WO2001011486A2 (en) * 1999-08-05 2001-02-15 Oracle Corporation Internet file system
US7657887B2 (en) 2000-05-17 2010-02-02 Interwoven, Inc. System for transactionally deploying content across multiple machines
CA2409138A1 (en) * 2000-05-17 2001-11-22 Interwoven Inc. Method and apparatus for automatically deploying data and simultaneously executing computer program scripts in a computer network
JP2009518729A (ja) 2005-12-08 2009-05-07 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 発話に基づく文書履歴追跡のための方法およびシステム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
COMPUTER=1985 *

Also Published As

Publication number Publication date
JPS62160549A (ja) 1987-07-16
EP0229232A2 (en) 1987-07-22

Similar Documents

Publication Publication Date Title
US5047918A (en) File management system
US6182121B1 (en) Method and apparatus for a physical storage architecture having an improved information storage and retrieval system for a shared file environment
JP2632092B2 (ja) データベースを生成する装置および方法
US6035303A (en) Object management system for digital libraries
US6327593B1 (en) Automated system and method for capturing and managing user knowledge within a search system
US7797336B2 (en) System, method, and computer program product for knowledge management
US7130867B2 (en) Information component based data storage and management
US7293018B2 (en) Apparatus, method, and program for retrieving structured documents
US6094649A (en) Keyword searches of structured databases
US6389413B2 (en) Structured-text cataloging method, structured-text searching method, and portable medium used in the methods
US20060059204A1 (en) System and method for selectively indexing file system content
US20010054042A1 (en) Computing system for information management
JP3492247B2 (ja) Xmlデータ検索システム
US20040015486A1 (en) System and method for storing and retrieving data
JP2009009590A (ja) ウェブサイトのコンテンツの開発システム及び方法
US20070156791A1 (en) File system dump/restore by node numbering
Uhrowczik Data dictionary/directories
JPH0550774B2 (ja)
Brahmia et al. Schema versioning in conventional and emerging databases
Ba et al. Uncertain version control in open collaborative editing of tree-structured documents
US20050102276A1 (en) Method and apparatus for case insensitive searching of ralational databases
EP0270360A2 (en) Data management system
JPH0358249A (ja) フアイルのアクセス方法
US7949656B2 (en) Information augmentation method
Yu et al. Metadata management system: design and implementation