CN101568928B - 用于管理数字文档的计算机工具 - Google Patents

用于管理数字文档的计算机工具 Download PDF

Info

Publication number
CN101568928B
CN101568928B CN2007800457782A CN200780045778A CN101568928B CN 101568928 B CN101568928 B CN 101568928B CN 2007800457782 A CN2007800457782 A CN 2007800457782A CN 200780045778 A CN200780045778 A CN 200780045778A CN 101568928 B CN101568928 B CN 101568928B
Authority
CN
China
Prior art keywords
document
marking
signature
identifier
function
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.)
Active
Application number
CN2007800457782A
Other languages
English (en)
Other versions
CN101568928A (zh
Inventor
G·卢素
M·比埃斯
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.)
Institut National de Recherche en Informatique et en Automatique INRIA
Original Assignee
Institut National de Recherche en Informatique et en Automatique INRIA
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=38255266&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN101568928(B) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Institut National de Recherche en Informatique et en Automatique INRIA filed Critical Institut National de Recherche en Informatique et en Automatique INRIA
Publication of CN101568928A publication Critical patent/CN101568928A/zh
Application granted granted Critical
Publication of CN101568928B publication Critical patent/CN101568928B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2151Time stamp
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明涉及用于管理文档特别是合作开发的软件项目的计算机设备。存储器存储具有时间基准的文档内容。提取器将文档内容分解为文档元素。签名产生器返回元素内容的签名。印记产生器为每个文档关联其时间基准和其元素的签名。定时时钟模块计算时间选择函数的结果。管理器对文档内容操作印记产生器。对于每个签名值,管理器对于包含该签名值的印记时间基准的列表调用定时时钟模块。为每个签名值获得统一时间基准。存储每个签名值和其统一时间基准。

Description

用于管理数字文档的计算机工具
技术领域
本发明涉及计算机文档处理。
背景技术
计算机文档基本上是人们可以直接或间接访问其内容的任何类型的文件。如果文件是文本类型的,可访问性可以相当直接。如果该文件是音乐或视频文件,可访问性则不太直接。后面将考虑其他例子。
长久以来已经组织了文件系统以便允许精确并且理论上确切地注明每个文件的日期。类似地,已知以不同方式将不同属性与计算机文件相关联。基本上,这些属性与文件自身的计算机性质相联系,例如属性“只读”、“归档”、“系统”或“隐含”。除了与文件系统相联系的属性之外,其他属性也可以例如在文件头部中与文件相关联。计算机系统还使得可以比较文档。可以仅使用文件系统的属性执行“最小”比较。这适用于每一种类型的文件,但是还远不完美:例如,它将把具有不同日期系统的相同文件视为是不同的。更高级的比较涉及文件的内容。因此,比较的细节根据例如它是“文本”类型文件还是二进制文件而不同,二进制文件是具有更高级性质的文件,诸如图像文件,更难以进行比较。
发明内容
申请人注意到当前没有允许在比较的元素被正确注明日期的同时有条理地并且自动地执行比较的技术。可以在不同部门感觉到对此类技术的需求,诸如出于版权的目的而确定作品尤其是软件类作品的法律状态的部门。
提出本发明以改善这种状况。
本发明涉及一种用于管理文档的基于计算机的设备,包括存储器,用于存储具有时间基准的文档内容,该设备包括:提取器,能够根据给定规则将文档内容分解为元素;签名产生器,能够处理文档元素以便返回其内容的签名;印记产生器,能够为文档内容建立印记,该印记包括该文档内容的时间基准以及通过调用提取器以便将该文档内容转换为元素然后为这样获得的元素调用签名产生器而获得的签名中的至少一些签名;定时时钟模块,能够根据时间基准标识符的列表计算预定的时间选择函数的结果;和管理器,被配置成对至少两个文档内容操作印记产生器,从而产生一同具有多个签名的两个印记,为每个签名值每次对于包含相同签名值的印记的至少一些时间基准标识符的列表反复地调用定时时钟模块,从而为每个签名值提供统一时间基准,存储每个签名值和其统一时间基准之间的对应关系。
附图说明
从对下面的详细描述和附图的研究中将明了本发明的其他特征和优点,其中:
图1示出了一个功能图,其例示了根据本发明的工具的实施例;
图2示出了一个流程图,其例示了根据本发明的工具的文档签名产生函数;
图3示出了一个表,其例示了图1中的工作数据库中的存储;
图4示出了一个流程图,其例示了根据本发明的工具的状态签名产生函数;
图5是示出了根据本发明的工具的用于文件集合的印记产生函数的流程图;
图6示出了一个表,其例示了图1中的工作数据库的存储的另一部分;
图7示出了一个流程图,其例示了特定实施例中的根据本发明的工具的文档签名产生函数;
图8示出了一个流程图,其例示了特定实施例中的印记日期注明函数;
图9示出了一个流程图,其例示了特定实施例中的印记产生函数;
图10示出了一个图,其例示了特定实施例中的图1的生产数据库的结构;
图11示出了一个表,其例示了特定实施例中的图1的生产数据库中的存储;
图12示出了一个流程图,其例示了第一实施例中的图1中的比较模块的印记比较函数;
图13示出了一个流程图,其例示了图1中的比较模块的聚集函数的第一个例子;
图14示出了一个流程图,其例示了图1中的比较模块的聚集函数的第二个例子;和
图15示出了一个流程图,其例示了第二个实施例中的图1的比较模块的印记比较函数。
附图不仅用于使得定义完整,而且在某些情况下还可以有助于其定义。
具体实施方式
如已经所见,在此处相当广义地使用表述“计算机文档”。计算机文档基本上可以是任意类型的文件,尽管在本发明的某些实施例中具体设想了纯文本类型、以文本为主的类型或具有文本内涵的文件。
具体地,文档通常采取单个物理计算机文件的形式。然而表述“计算机文档”还覆盖在相同的物理文件中包含若干文档的情况,或相反地由若干物理计算机文件构成给定文档的情况。通常使用术语“逻辑文件”以摆脱文档和物理文件或包含该文档或其部分的文件之间的关系。
可以“播放”文档的内容:例如,可以显示文本或万维网页,可以聆听音乐,可以观看视频,或可以运行程序。在这种情况下,原则上不修改文档。
人们还可以访问文档的内容以便进行编辑,即,创建/修改。然而,存在相同文档的不同版本将指示无组织的任何编辑。
基本上,此处使用术语“文档集合”来指相同文档的若干版本。然而更宽泛地看,文档集合可以包括一个更大项目范围内的若干文档的各版本的若干集合。
符号的定义和约定
项Pi代表一个数字文档集合。例如,集合Pi可以是一个软件项目,其包括一组被称为“源”的类型的计算机文件(即,包含不能直接执行并且要被编译为一系列可执行指令的计算机代码)和相关的数字文档诸如包含描述、文档资料和/或该软件的所有准备文档的文本文件。还可以由使用数据库组织的文件、XML(代表“可扩展标记语言”)类型或SVG(代表“可缩放向量图形”)类型的文件构成集合Pi。
集合Pi的状态j定义为集合Pi内的所有数字文档在给定时刻例如在日期Tij所处的状态。将会理解,集合Pi的状态j2可能与这个集合的状态j1不同之处例如在于存在附加数字文档、不存在某些数字文档和/或存在具有不同内容的数字文档。
集合Pi的状态j标记为Sij。
在某些情况下,特别是集合Pi包含一个软件项目时,状态Sij可被看成是文档集合Pi的一个版本。这可以是旨在用于分发的版本或内部工作版本:例如,软件项目的状态Sij可能不被投入生产,特别是如果它不构成该软件的功能状态的话。
集合Pi可以处于状态Sij,其中j在1和整数Ji之间。形式上表示为:
Pi={Sij\j属于{1,...,Ji}}
每个状态Sij由在日期Tij以其特定状态构成集合Pi的所有数字文档构成。在日期Tij的文档的状态可能不同于其在不同日期的状态。
文档集合Pi中状态j的特定文档l标记为Oijl。
换言之,在集合Pi的一般状态Sij的文档Oijl的特定状态可能不同于在集合Pi的不同的一般状态Sij’的它的状态Oij’l’。
状态Sij由所有文档Oijl构成,其中l在1和整数Lij之间。形式上表示为:
Sij={Oijl\l属于{1,...,Lij}}
每个状态Sij可以具有至少一个识别出的贡献者Aij。贡献者意味着创建状态Sij或参与创建这个状态的人。
在本说明书中为了清楚起见,某些时候以逗号(“,”)彼此分开地示出与大写字母相关联的各附标。然而,仅在可能存在含糊不清的场合使用这种表示并且使其更易读。例如,将以Sij标记一组文档i的状态j,而优选地以S1,12标记文档集合1的状态12。
根据本发明的管理工具
参考图1,用于管理数字文档的工具100包括印记产生模块SignM 110,其被配置成能够将数字印记Ei与文档集合Pi相关联,数字印记Ei包括表征所述文档的内容的一组数字签名。
模块SignM 110被配置成能够与工作数据库WDB 120交互。数据库WDB 120能够至少临时存储用于模块SignM 110的工作数据。应当理解数据库WDB 120包括有组织的数据存储空间,其可以采取永久存储器载体(例如硬盘类型)或可寻址临时存储器(例如RAM类型)上的数据库的形式。
工具100还包括文档集合数据库PDB 130,其能够保持关于不同文件集合Pi的数据。特别地,数据库PDB 130能够保持文档集合Pi的印记Ei。数据库PDB 130可以采取被组织在例如硬盘类型的永久存储器载体上的数据库的形式。
模块SignM 110被配置成能够与数据库PDB 130交互,特别地,以便储存由模块SignM 110产生的印记Ei。
工具100还包括用于比较文档集合的模块ComM 140,其被配置成能够识别不同文档集合Pi所共有的签名。如果需要,模块ComM140能够确定这些文档集合之间的相关性。
模块ComM 140能够与数据库PDB 130交互,以便从数据库PDB中提取根据将被比较的文档集合Pi产生的印记Ei,以及如果适用,与这些印记相关联的数据。
最后,工具100包括权利管理模块RightsM 150,其被配置成能够与数据库PDB 130和模块ComM 140交互,以便建立可用于确定针对文档的权利的数据。
印记产生模块
模块SignM 110包括文档印记产生函数signO(),其能够建立表征文档Oijl的内容的数字文档印记Eijl。数字文档印记Eijl包括根据文档Oijl的内容产生的一组数字签名。
参考图2和3一般地描述函数signO()。
函数signO()被配置成能够根据选择的规则将文档Oijl分解为文档元素Cijlk(步骤200)。而且函数signO()被配置成为每个元素Cijlk建立表征这个元素的内容的数字签名值Nijlk(步骤202)。这可以通过调用签名函数sign()来实现。函数signO()还被配置成将表征元素Cijlk的签名Nijlk与对这个元素的引用相关联,以便形成元素印记Eijlk(步骤204)。对元素Cijlk的引用可以包括附标i,j,l和k的值。每个元素印记Eijlk可被存储在保持对元素Cijlk的引用和签名Nijlk的值之间的相关性的元素印记表SignETab[]中。
可选择地,元素属性AEijlk可以与每个元素Cijlk相关联。元素属性AEijlk可被存储在表SignETab[]中。例如,如果元素是函数而对象是源文件,则元素属性AEijlk可以包括代码行数的值。元素属性AEijlk还可以包括元素Cijlk的内容的相关性指数的值。表SignETab[]中还可以存储一个或多个附加的元素属性。
图3中的表300示出了元素C1,1,2,2的表SignETab[]的实施例。
表征文档Oijl的内容的印记Eijl包括元素印记Eijlk的集合,其中k是在1和自然数Kijl之间变化的自然数(步骤206)。如果适当,印记Eijl还包括与元素印记Eijlk的元素Cijlk相关联的一组元素属性AEijlk。
数据库WDB 120至少临时地与文档Oijl的时间基准Tpijl相关地存储印记Eijl。例如,时间基准Tpijl可以包括与状态Sij相关联的日期Tij。时间基准Tpijl可以同等地包括与文档Oijl相关联的日期Tijl,例如,最后修改该文档的日期。
数据库WDB 120可以例如在文档印记表SignOTab[]中保持以下内容的相关性:
-文档标识符Oijl,例如由附标i,j和l的值构成的标识符;
-对文档Oijl的每个元素印记Eijlk的引用,例如由附标i,j,l和k构成的引用;和
-文档Oijl的时间基准TPijl的值,例如日期Tij。
可选择地,文档属性AOijl可以与每个文档Oijl相关联。文档属性AOijl可被存储在表SignOTab[]中。文档属性AOijl可以包括计算机文件大小的值、贡献者Aij的身份、或限定时间基准TPijl中的信任级别的注释。表SignOTab[]中可以存储一个或多个附加的文档属性,例如,以便能够将文档Oijl与贡献者身份Aij和时间基准TPijl中的信任指数两者相关联。
此处描述的表的结构主要旨在使得能够理解本发明。因此实际上可以构想表SignOTab[]的其他结构。例如,表SignOTab[]可以包含印记标识符Eijl,并且这个标识符可以与文档Oijl相联系。表SignOTab[]还可以包括所讨论的文档的每个元素印记Eijlk的签名值Nijlk,或是取代或是除了这些印记的引用之外包括所有元素印记Eijlk。例如,对于特定文档Oijl,本发明的一个实施例包括制订这样的表,该表中每一行包含文档元素Cijlk的标识符(例如附标i,j,l和k的值)、该元素的签名值Nijlk、该文档的数据参考的值Tpijl、以及如果适用文档Oijl的文档属性的值AOijl以及该元素的元素属性的值AEijlk,填充这个表以便覆盖文档Oijl的所有元素Cijlk。
在图3中,由列COL301到COL308和行ROW310到ROW313构成的表304示出了用于对象O1,1,L11的这种实施例。在这个表304中,作为文档属性AO1,1,L11(COL308)存储贡献者标识符A11,并且作为时间基准TP1,1,L11(COL307)存储日期T11。
模块SignM 110还包括状态印记产生函数SignS(),其被配置成能够建立表征集合Pi的状态Sij的状态印记Eij。
借助图4描述函数signS()。
状态Sij包括在时刻Tij的文档集合Oijl,其中l是在1到自然数Lij之间变化的自然数(步骤400)。函数signS()被配置成给状态Sij的每个文档Oijl连续调用函数signS(),以便为每个文档Oijl获得包含一组元素印记Eijlk的文档印记Eijl(步骤402)。
状态印记Eij包括所有元素印记Eijlk,其中k在1和Kijl之间变化,并且l在1和Lij之间变化(步骤404)。
数据库WDB 120至少临时地存储印记Eij。
数据库WDB 120可以例如在状态印记表SignSTab[]中相关地保持:
-状态印记标识符Eij,例如由附标i和j构成的标识符,和
-对状态Sij的每个文档印记Eijl的引用,例如由附标i,j和l构成。
如前面解释的,实际中表SignSTab[]的结构可以不同。例如在前面描述的实际实施例中,例如本发明的一个实施例可以包括制订收集状态Sij的文档的所有文档印记Eijl的表。在图3中,由列COL301到COL308和行ROW314到行ROW326构成的表示出了状态S1,2的这种实施例。
可选择地,状态属性ASij可被与每个状态Sij相关联。这个属性ASij可被存储在表SignSTab[]中。例如,状态属性ASij可以包括限定日期Tij的可靠性的附标或标记,和/或描述贡献者Aij的身份的可靠性的附标(例如,最小的附标值用于使用连接名称或“登录”的标识,并且最大附标值用于借助由第三方证实的验证程序的标识)。
模块SignM 110还包括用于文档集合的印记产生函数signP(),signP()被配置成能够建立表征集合Pi的文档集合印记Ei。
借助图5描述函数signP()。
文档集合Pi包括若干状态Sij,其中j是从1到自然数Ji变化的自然数(步骤500)。函数signP()被配置成为集合Pi的每个状态Sij连续调用函数signS(),以便为每个状态Sij获得包括若干元素印记Eijlk的状态印记Eij,其中k在1和Kijl之间变化,并且l在1和Lij之间变化(步骤502)。
文档集合印记Ei包括所有元素印记Eijlk,其中k从1到Kijl改变,l从1到Lij改变,并且j从1到Ji改变(步骤504)。
数据库WDB 120至少临时地存储印记Ei。
数据库WDB 120可以例如在文档集合印记表SignPTab[]中相关地保持:
-文档集合印记Ei的标识符,例如由附标i的值构成的标识符,知
-对每个状态印记Eij的引用,例如由附标i和j构成。
如前面的例子,实际中表SignPTab[]的结构可以不同。例如在前面描述的实际实施例中,本发明的一个实施例可以包括制订组合文档集合Pi的所有状态印记Eij的表。在图3中,由列COL301到COL308和行ROW301到行ROW339构成的表308示出了文档集合Pi的这种实施例。在这个表308中,每个行包括:
-对由存储附标值i的列COL301,存储附标值j的列COL302,存储附标值l的列COL303,存储附标值k的列COL304组成的文档元素的引用,和
-列COL305中的这个文档元素的签名值,
-列COL306中的这个元素的属性值,
-列COL307中的作为该元素的起源的文档的时间基准的值,和
-列COL308中的作为该元素的起源的文档的属性的值。
模块SignM 110包括签名日期注明函数signTp(),其被配置成能够将签名数据Viq按照在数据库WDB 120中与所述签名相关联的文档Oijl的时间基准TPijl的函数与其印记被存储在数据库WDB 120中的集合Pi的每个不同的签名值Niq相关联。
参考图6描述函数signTp()。
函数signTp()被配置成给数据库WDB 120的特定签名值Niq建立所有元素印记Eijlk,其包含这个签名值,以及在每个场合,在数据库WDB 120中与元素印记Eijlk相关的文档印记Eijl的时间基准TPijl。
函数signTp()还被配置成例如在签名表SignTb[]中为这个签名值Niq相关地保持:
-包含所述特定签名的元素印记Eijlk的标识符,例如包括值i,j,l和k,和
-数据库WDB 120中与元素印记Eijlk相关的文档印记Eijl的时间基准TPijl,例如日期Tij;
函数signTp()被配置成填充表SignTb[],从而它包含可以从中找到这个签名值的存储在数据库WDB 120中的每个元素印记Eijlk的标识符。
在图6中,表600示出了签名值Nia的表SignTb[]的实施例。这个表600包含以行ROW601到ROW604表示的n行,其中n是包含签名值Nia的元素印记Eijlk的数目。四元组{i,ja1,la1,ka1},{i,ja2,la2,ka2}到{i,jan,lan,kan}中的每一个表示包含签名值Nia的元素印记的标识符。这些四元组存储在表600的列COL602到COL605中。表600的列COL606在行ROW601到ROW604中存储日期Ti,ja1到Ti,jan作为时间基准。
可以至少临时地例如在数据库WDB 120中存储表SignTb[]。
重复函数signTp(),以便为存在于存储在数据库WDB 120中的文档印记Eijl中的每个不同签名值Niq创建表SignTb[]。
如果希望,签名表SignTb[]可以为其签名等于Niq的每个元素印记Ni,jqp,lqp,kqp包括这个元素的属性值AEi,jqp,lqp,kqp和包含这个元素的文档的属性值AOi,jqp,lqp。
函数signTp[]还被配置成给存储在数据库WDB 120中的并且与特定签名值Niq相关的每个表SignTb[]分配至少一个签名数据Viq。
可以通过应用使用表SignTb[]的时间基准的预定日期函数dat()获得签名数据Viq。换言之,与表SignTb[]相关联的签名数据Viq可以是时间基准TPijl的函数,例如与这个表的印记标识符Eijl相关联的日期Tij。例如,签名数据Viq可以是表SignTb[]中包含的最早日期Tij。
当签名表SignTB[]存储文档属性值AOi,jqp,lqp时,函数dat()可以被配置成以这些属性值的函数确定签名数据Viq。例如,当属性值AOi,jqp,lqp包括时间基准TPi,jqp,lqp的可靠性指数时,函数dat()可以被配置成确定表SignTb[]的最早日期Ti,jqp,同时为这个确定排除表SignTb[]中的与在阈值之下的文档属性值AOi,jqp,lqp相关联的日期Ti,jqp。
函数signTp()还被配置成给存储在数据库WDB 120中的并且与特定签名值Niq相关的每个表SignTb[]分配文档数据Wiq。可以通过应用使用表SignTb[]的文档属性AOi,jqp,lqp的预定验证函数aut()获得文档数据Wiq。另外,函数aut()可以使用签名数据Viq和/或时间基准TPi,jqp,lqp。例如,函数aut()可以被配置成确定具有最早相关时间基准TPi,jqp,lqp的文档属性AOi,jqp,lqp的值作为Wiq数据。如果时间基准TPi,jqp,lqp包括日期Ti,jqp,并且文档数据包括贡献者标识符Ai,jqp,这种类型的函数aut()可以被配置成建立与特定签名值Niq相关联的最早的贡献者的标识符作为文档数据Wiq。
实际上,一个实施例可以包括为特定签名值Niq构造表,诸如图6中的表602,其中每一行包括:
-存储所述签名Niq的值的一列(COL601),
-存储以其内容产生签名值Niq的文档元素的附标值i,jqp,lqp和kqp的列(COL602到COL605),
-作为所述文档元素来源的文档的时间基准TPi,jqp,lqp,在这个情况下日期Ti,jqp(COL606),
-签名数据的值Viq(COL609),以及如果适用,
-所述元素的属性值AEiqp,jqp,lqp,kqp(COL607),
-作为所述文档元素AOi,jqp,lqp来源的文档的属性值(COL608),
-文档数据Wiq的值(COL610);填充这个表以便存储包含签名值Niq的所有元素印记,即,在这个情况下,r个印记Ei,jql,lq1,kq1到Ei,jqr,lqr,kqr。
可选择地,函数signTp()还被配置成给每个签名值Niq以与这个签名值Niq相关联的元素属性值AEi,jqp,lqp,kqp的函数建立元素数据Ziq(图6中未示出)。例如,元素数据Ziq可以包括元素属性值AEi,jqp,lqp,kqp的最大值。
函数signTp()还被配置成能够收集签名表SignTb[]的签名数据Viq。例如,函数signTp()被配置成构造带时间注明的文档集合印记的表TempSignPTb[],其按照相互关系存储:
-文档集合Pi的标识符,例如附标i
-每个不同的签名值Niq
-与所述签名值Niq相关联的签名数据Viq。
在图6所示的例子中,这归结为配置函数signTp(),以便为每个签名值Niq从包含签名值Niq的任意行提取签名数据Niq和附标i的值。在图6中,例如,可以由列COL601、COL602和COL609与行ROW601、ROW605和ROW609的交点形成表TempSignPTb[]。
因此,这导致文档集合印记的特别轻量级存储。如果时间基准包括日期Tij,并且函数dat()被配置成确定最早的日期Tij作为数据Viq,这个数据等于签名值在文档集合Pi中首次出现的日期。因此文档集合的印记由一组签名和它们首次出现的日期构成。如下面将解释的,可以以dat()函数的函数存储其它信息。
如果适用,dat()函数可以考虑文档数据Wiq和元素数据Ziq。
在另一个实施例中,表TempSignPTb[]还可以保持对每个元素印记Eijlk的引用,例如,包含附标i,j,k和l的值。这使得可以在数据库WDB 120中保持文档元素的引用和相应的签名数据之间的联系。
在另一个实施例中,表TempSignPTb[]还可以保持每个元素印记Eijlk的引用,例如,包含附标i,j,k和l的值,以及对文档Oijl的引用,例如包含附标i,j和l。因此,对于特定文档Oijl,可以建立相应于这个文档的文档元素Cijlk的签名数据Viq。当以最早日期Tij建立数据Viq时,可以与其首次出现的文档Oijl无关地确定集合Pi中文档元素Cijlk首次出现的日期。因此,可以识别文档集合中在该文档创建之前产生的文档元素。
表TempSignPTb[]的实际实施例可以包括制订表,诸如例如图6中的表604,其中每一行包括:
-存储签名值Niq的一列(COL601);
-对作为签名值Niq的起源的文档元素Ci,jqp,lqp,kqp的引用,在该情况下,以附标值i,j,l和k的值的形式(COL602到COL605),
-作为这个文档元素Ci,jqp,lqp,kqp的起源的文档Oi,jqp,lqp的时间基准TPi,jqp,lqp(COL606),在这个情况下,日期Tiqp,jqp,
-签名数据的值Viq(COL609),并且如果适用,
-元素Ci,jqp,lqp,kqp的属性值AEi,jqp,lqp,kqp(COL607),
-作为文档元素Ci,jqp,lqp,kqp的起源的文档Oi,jqp,lqp的属性值AOi,jqp,lqp(COL608),
-文档数据Wiq的值(COL610);填充所述表以便将文档集合Pi的所有签名值Niq收集在一起。换言之,此处描述的实施例包括在相同的表中组合与为文档集合Pi的每个签名值Niq制订的表602相同类型的表。
模块SignM 110并且特别是函数signTp()能够与数据库PDB 130交互,以便存储对签名表中的签名数据的汇编结果。
例如,数据库PDB 130因此可以保持关于文档集合Pi中签名值的存在时期的数据。
在特定实施例中,可以减少文档印记Eijl以便限制数据库的大小或有助于后续的签名搜索。例如,可以以时间基准值、元素属性数据和/或文档属性数据的函数,删除对某些元素印记的引用(和元素印记自身)。
文档印记产生函数
参考图7在特定实施例中描述函数signO()。
将考虑文档Oijl,即,状态Sij的文档集合Pi的特定文档l(步骤700)。
函数signO()设计为调用函数type(),函数type()自身被配置成能够建立表征文档Oijl的计算机性质的数据(步骤702)。
就一种计算机结构通用于相同类型的所有文档的意义而言,此处术语“计算机性质”意味着文档Oijl的计算机结构。计算机性质或类型可以是宽泛的,或可以是标准的对象,诸如例如“文本”类型文件、“Microsoft Word”(注册商标)类型文件、特定格式的“图像”类型文件。该类型还可以特定于产生该文档的软件。
文档Oijl的类型特性描述,在它是文件的特定情况下,可以通过识别文件名扩展执行,例如,当文档是在“Microsoft Word”(注册商标)环境中创建的文件时。
还可以通过识别文件中表征文件类型的位序列来执行表征。具体地,对源文件中特征关键字的识别使得可以识别编程语言。因此,函数type()还能够确定源类型文件使用的语言。
函数signO()设计为调用内容过滤函数filterA(),函数filterA()自身设计为能够根据文档Oijl和该文档的类型产生具有整理后的内容的文档O’ijl(步骤704)。
例如,函数filterA()可以被配置成删除插入源文件中的注释,与编程语言的语义无关的字符,或取决于特定操作系统的字符。
函数filterA()配置为提高函数signO()的健壮性,并且从而提高由该函数产生的印记的相关性。此处健壮性意味着不论添加的被认为无关紧要的内容修改如何,函数signO()产生一致的文档印记的能力。可以被认为是无关紧要的修改例如为:
-仅涉及例如文本类型的文档格式的修改,这些修改可能被自动执行(例如,添加连续空格字符或空行),和
-内容的重写,诸如例如改变函数或变量名称或删除或增加版权说明。
应当注意,内容重写可能是合法的或好意的,例如当它打算使得文档内容与某些形式规则或命名约定相一致时。重写同样可以是恶意的或违法的,特别是当以假装作者身份或隐瞒内容重用为唯一目的而执行时。
应当理解,对文档Oijl的整理是该类型文档的一个函数。
函数signO()被配置成调用内容提取函数cut(),函数cut()能够在文档O’ijl中隔离文档元素Cijlk,诸如例如源码类型文档中的函数或程序。对各个元素的这种定位是该类型文档Oijl的一个函数(步骤706)。
函数cut()被配置成根据文档O’ijl建立一组元素Cijlk,其中k是1和整数Kijl之间的自然数。例如,函数cut()可以被配置成能够从作为指定编程语言的源的文档O’ijl中提取包含在这个对象中的一组函数。
函数signO()设计为调用内容过滤函数filterB(),函数filterB()设计为能够根据元素Cijlk并且根据文档Oijl的类型产生整理后的元素C’ijlk(步骤708)。
以类似于函数filterA()的方式,函数filterB()可以例如被配置成删除与识别出的编程语言的语义无关的注释和字符,和/或取消依赖操作系统的字符。就前面所述的意义而言,函数filterB()引起模块SignM100的健壮性的提高。
函数filterB()导致一组整理后的元素C’ijlk,其中k是1和整数Kijl之间的自然数。
函数signO()另外被配置成调用签名产生函数sign(),函数sign()设计为能够根据整理后的元素C’ijlk建立表征该文档元素的内容的签名Nijlk(步骤710)。
签名Nijlk可以采取指定长度的字符串的形式,ASCII或十六进制字符的串。优选地,函数sign()包括称为“散列”的签名产生算法。签名Nijlk对于给定元素C’ijlk是唯一的。在每个情况下,函数sign()优选地设计为具有不发生强概率,即,从而从元素C’ijlk不同内容获得相同签名的概率尽可能低。另外,函数sign()被选择为是不可逆的,即,被配置成实际上不可能根据其签名建立元素的内容:尤其是,这允许长期存储签名而不用关心机密性,由于文档的确切内容既不被存储也不被公开。
应当注意,由于比较恒定大小的计算机对象比比较更笨拙的不同大小的对象容易,使用指定长度的字符串作为文档内容的签名使得能够容易地进行文档比较。另外,这些字符串使得可以比较文档集合,并且由于它们并不公开其内容,可被广泛发布。
签名产生算法或“散列”算法可以例如是MD5类型(代表“消息摘要5”)或SHA-1(代表“安全散列算法”)。
为文档Oijl中的每个元素C’ijlk调用函数sign()以便获得一组签名Nijlk,其中k是1和Kijl之间的自然数。
优选地,函数sign()被配置成调用评分函数eval(),函数eval()自身被配置成能够作为元素属性AEijlk将签名相关性数据Bijlk与签名Nijlk相关联(步骤712)。
此处相关性意味着文档元素关于对该文档所作的贡献或修改的影响的评估。函数eval()可以被配置成考虑从下面选择的一个或多个准则:
-文档元素的大小,例如在源文件函数的情况下,代码行数或字符数;
-与低相关性指数相关联的签名列表中的签名的出现,该列表可能特定于一种类型的文档;
-对于这个文档的贡献者数目和/或对文档的贡献方面的活动。
显然,这列准则不是无遗漏的,并且函数eval()可以考虑其他准则。
就对其作任何进一步分解没有价值而言,每个整理后的元素C’ijlk可被视为是“原子的”,这是由于进一步分解将丢失与其真实属性相关联的方面(尤其是属性和含义)。因此,与文档的(全局)印记Eijl相反,其签名Nijlk可被视为“原子印记”。
函数signO()还被配置成将每个签名Nijlk与文档引用Oijl相关联,例如包含元素印记Eijlk中的附标i,j,l(步骤714)。
函数signO()使得可以获得表征对象Oijl的包括一组元素印记Eijlk的文档印记Eijl,其中k在1到Kijl之间变化(步骤716)。
如前面解释的文档印记Eijl可以存储在数据库WDB 120中。
应当理解,时间基准可以是状态Sij的日期Tij。可由其自己的附标j同等地给出时间基准,其中j按时间顺序。
在特定的实施例中,作为一种文档数据,文档印记Eijl还包括创建状态Sij或参与该状态的创建的贡献者标识符Aij作为文档属性AOijl。
可见函数filterA()和filterB()被配置成防止文档元素在对其内容进行无关紧要的修改之后产生不同的签名。然而,这些函数还可被以追踪修改的目的设计为以无关紧要的方式对其内容进行了修改的特定文档的印记部分地不同于其原始印记。这可以通过彼此相关地调整函数filterA(),filterB()和cut(),例如,以便剪切元素的内容,则其签名应当或不应当改变,并且调整函数filterB()以便这样做来实现。
例如最频繁地,简单地改变文档的函数中的变量的名称被视为简单的内容重写。函数filterA(),filterB()和cut()可被设计为获得包含关于该函数的内容的某些相同签名和其他不同签名的文档印记,以便指示发生了重写。例如,当重写仅涉及函数名称的改变时,函数filterA(),filterB()和cut()可以例如被配置成将文档的函数分解为相应于该函数的声明部分的第一文档元素以及相应于函数的主体或内容的第二文档元素,并且从而第一元素的签名改变而第二元素保持不变。
在某些情况下函数filterA(),filterB()和cut()可以被配置成保留相同的文档,特别是作为该类文档的函数。
应当理解,函数signO()必须健壮以便允许以后的印记比较。为了能够进行两个印记的比较(即,为了搜索共有的签名),不论模块SignM 110使用什么,相同的文档必须产生相同的印记。如果希望使用不同的印记产生工具,函数cut(),filterA()和filterB()因此具有被公开和标准化的主要目的。然而,特别是在恶意内容重写的情况下,这种公开会惠及旨在发觉这些过滤器的健壮性的策略的实现。
在函数signO()的一个特定实施例中,可以在步骤706之前调用验证函数ver()以便确保源代码符合可能取决于编程语言的某些形式规则。例如,当文档Oijl是源文件时,验证函数ver()可以包括源码的语法分析器,其能够根据语言的句法和语法规则建立源码的抽象表示。这种语法分析器自身可以不易受无关紧要的修改或内容重写的影响。例如,函数ver()可被设计为建立抽象的句法树或“AST”。通过这样做,就前面所述而言函数signO()更健壮。
签名日期注明函数
在特定实施例中,函数dat()被设计为建立所考虑的签名Niq的存在时期作为签名数据Viq。
在这个实施例中,签名数据Viq可以包括文档集合Pi中签名值Niq的出现或首次出现日期TAiq和消失日期或最后出现日期TDiq。在该情况下,函数dat()可被配置成建立表signTb[]中的最早的时间基准例如最早的日期Ti,jq作为出现日期TAiq,并且这些日期中最近的日期作为消失日期TDiq。
在可替换的实施例中,函数dat()被设计为建立一组存在时期作为签名数据Viq。函数dat()可被配置成与数据库WDB 120交互以便从这个数据库中提取状态表STB[],每个状态表将文档集合Pi的印记Ei中出现的不同日期Tij收集在一起。函数dat()可被配置成对表SignTb[]中的每个日期Ti,jqp和组合在表STB[]中的日期进行比较,以便确定与所讨论的签名相关联的日期Tij,或可能不与其相关联的日期Tij。
取代日期Tij,函数dat()可被配置成作用于版本标识符,例如,附标j的不同值。
在另一个实施例中,按顺序配置状态Sij,即,附标j’优选于附标j暗示着日期Tij’比日期Tij更近。
函数dat()可被配置成不同地建立日期TAiq和TDiq。在这个特定实施例中借助图8描述函数dat()。
函数dat()被配置成能够比较状态Sij和所有以前的状态Sij’,以由一组元素印记Eijlk构成的状态印记Eij描述状态Sij,以与以前的状态Sij’相关联的一组签名值Niq’描述状态Sij’,即,对于它来说存在四元组i,j’,l’和k’,使得签名值Nij’l’k’等同于Niq’(步骤802)。对于状态Sij的每个签名值Niq,即,对于存在四元组i,j,l和k使得Nijlk等同于Niq的每个整数q(步骤804),函数dat()检查数据库WDB 120中是否存在与状态Sij’相关联的签名值Niq’(步骤806)。
如果回答为是(步骤808),则签名值Niq存在于文档集合Pi的以前状态j’中。文档集合Pi中的签名值Niq’的出现日期TAiq’保持不变。文档集合Pi中的签名值Niq’的消失日期TDiq’接收状态Sij的日期Tij。
如果回答为否(步骤810),在文档集合Pi中签名值Niq是新的。出现日期TAiq和消失日期TDiq两者都采用状态Sij的日期Tij的值。
在这个实施例中,当添加后续状态Eij例如最后已知状态的印记时,可以快速更新文档集合的带时间注明的印记。这个特定实施例使得能够通过连续地添加连续状态印记,构造文档集合的带时间注明的印记。此处更新的含义是增加以前状态中不存在的签名值,并且计算由新状态的增加而修改的签名数据Viq。
换言之,函数dat()可被配置成比较其印记Eij被存储在数据库WDB 120中的状态Sij和一组以前的状态Sij’,以便更新文档集合Pi的带时间注明的印记,其中j’是小于j的自然数,状态Sij’的印记Eij’存储在数据库PDB 130中。
印记产生模块的特定实施例
在特定实施例中,模块SignM 110设计为与例如CVS类型或等同的版本管理工具交互。
版本管理工具能够组织文档集合和其不同状态的存储。特别地,版本管理工具能够以递增和连贯的方式管理文档集合的不同状态:使用版本管理工具使得可以获得以前描述的状态Sij的时间配置。
当若干贡献者能够同时修改相同的文档集合时,版本管理工具使得可以标识贡献者开始进行修改的状态。某些版本管理工具仅存储连续的修改,和/或如果需要,能够检查对相同文档的所有或部分内容进行的同时修改之间的冲突的出现。版本管理工具还可以确保必须相对于最后已知版本而不是当原始版本已知时相对于原始版本执行更新。实际上,不同的版本管理工具以不同的方式工作:此处由使用版本管理工具而导致的状态Sij之间的连贯性被用于改进带时间注明的印记产生处理。
版本管理工具还提供执行更新的贡献者的标识符和/或自特定状态以来被修改的文档列表。
例如,CVS类型的工具存储文档Oijl的最后状态以及连续的文档Oiml的不同的以前状态之间的差异,其中m是小于j的自然数。此处附标l与状态附标j无关地与以名称和文件路径唯一表征的文件相关联。
版本管理工具还例如在中央服务器上提供更新日期。该日期被存储为该状态的文档集合的时间基准。
一个状态可以相应于对存在于服务器上的版本的更新。因此通常一个贡献者被与一个状态相关联。
此处应当注意,根据使用的版本管理工具或根据对它的使用,可以:
-或是当文档集合中的一个文档被修改时尽可能快地分配新状态;
-或是为相同贡献期间对若干文档的修改分配新状态。
这仅略微改变工具100的操作,特别是通过增加或减少状态数目进行改变。
在这个实施例中,模块SignM 110可以包括版本比较函数compS()。
借助图9描述函数compS()。
为了简化描述,此处假设两个状态Sij’和Sij是连续的。
此处,该工具是CVS类型的。在该情况下,附标l与状态无关地描述文档。
对于状态Sij中的文档集合Pi中的每个文档Oijl,函数compS()设计为确定文档集合Pi中是否存在以前状态Sij’的文档Oij’l(步骤900)。
如果回答为否,函数compS()设计为调用以前描述的函数signO(),以便产生文档Oijl的所有元素印记Eijlk(步骤902)。
每个元素印记Eijlk,特别地,其包含的签名Nijlk如前所述存储在数据库WDB 120中。文档Oijl的时间基准TPijl,例如使用版本管理工具获得的更新(或贡献)的日期Tij,也存储在数据库WDB 120中。优选地,文档属性AOijl,例如状态Sij的贡献者Aij的标识符,也存储在数据库WDB 120中(步骤904)。如果希望,文档属性AOijl可以包括状态Sij中的每个贡献者Aij的标识符。
如果步骤900的测试是肯定的,则函数compS()设计为检查文档Oijl是否与文档Oij’l相同(步骤906)。可以提供比较状态这样做。在某些情况下,版本管理工具能够执行这种检查。
如果回答为是,函数compS()设计为将元素印记Eij’lk’的每个签名与文档Oijl相关联。换言之,除了文档Oijl的时间基准TPijl之外,函数compS()建立文档Oij’l的印记Eij’l作为文档Oijl的印记Eijl(步骤908)。
在该实施例中,函数compS()不必设计为产生文档Oijl的所有元素印记Eijlk。函数compS()可以使用文档Oij’l的元素印记Eij’lk’。使用与模块SignM 110交互的版本管理工具使得可以节省材料资源,特别是处理器单元负载。
如果步骤906的测试为肯定,文档Oijl和文档Oij’l不同。文档Oijl可被看成是具有贡献者Aij的并且在日期Tij发生的对象Oij’l的变换(步骤910)。在图9中,以函数hijl()的形式示出了该变换。
函数compS()设计为调用函数signO(),以便如前所述产生文档Oijl的所有元素印记Eijl(步骤912)。元素印记Eijl存储在数据库WDB120中,如果必要,相应于时间基准TPijl(例如日期Tij)和文档属性AOijl(例如贡献者标识符数据(Aij))。
文档集合数据库的结构
图10示出了PDB数据库130的结构的例子。
对于每个文档集合Pi,数据库PDB 130可以设计为保持文档集合的带时间注明的印记表TpSignPTb[]1000。
这个表TpSignPTb[]1000的每一行可以包括:
-签名列1002,其存储与另一行的签名值不同的文档集合Pi的特定签名值Niq,
-对文档集合的引用的列1004,例如,其存储附标j的值,和
-签名数据列1006,其存储与签名数据的值Niq相关联的签名数据Viq,例如在该情况下,签名值Niq在文档集合Pi中的出现日期TAiq。
如果希望,表TpSignPTb[]1000中的每一行还可以包括:
-用于元素属性数据的列1008,其存储元素数据Ziq,例如在该情况下,相关性指数的值Biq,
-文档数据列1010,其存储文档数据Wiq,例如在该情况下,贡献者标识符Aiq。
表TpSignPTb[] 1000中的每一行可被视为带时间注明的元素印记Eiq。
表TpSignPTb[]1000还可以包括其他数据,特别是由模块SignM110建立的和/或临时存储在数据库WDB 120中的数据。
特定实施例可以包括存储图6中的表作为用于特定文档集合的表TpSignPTb[]1000。
数据库PDB 130可以被配置成为每个文档集合Pi存储这种表,或以便将关于不同文档集合Pi的表组合为一个表。在图11中,例如,表1100组合类似于表604的用于文档集合P1的由列COL1101到COL1110和行ROW1101到ROW1113组成的表1102,类似于表604的用于文档集合P2的由列COL1101到COL1110和行ROW1114到ROW1126组成的表1104,以及类似于表604的用于任意文档集合Pi的由列COL1101到COL1110和行ROW1128到ROW1140组成的表1106。
用于比较文档集合的模块的第一个实施例
根据本发明的工具包括文档集合比较模块ComM 140,其设计为在数据库PDB 130中产生与文档集合Pi和不同的文档集合Pi’两者相关联的一组签名值。这使得可以确定在另一个文档集合Pi’中发现了文档集合Pi的文档元素Oijl。
通过确定文档集合Pi’的文档元素到文档集合Pi中的结合,以及相反文档集合Pi’的文档元素到文档集合Pi中的结合,模块ComM 140还设计为建立文档集合Pi和文档集合Pi’之间的相关性。换言之,模块ComM 140设计为建立文档集合之间的相关性,并且定向这些相关性。
应当注意出于实际的原因,函数filterA(),filterB()和cut()必须被配置成对于相同的内容,函数signO()(或等同的函数)得出这些内容所共有的签名值的至少一个子集。可能希望将相同配置的函数filterA(),filterB()和cut()应用于将被比较的不同内容,从而当内容相同时通过函数signO()获得相同签名值的集合。
模块ComM 140包括用于比较文档集合的函数comp()。函数comp()被配置成比较第一文档集合P1和第二文档集合P2,以便确定文档集合P1和P2共有的文档元素。
参考图12描述函数comp()。
函数comp()被配置成从数据库PDB 130中提取包含与文档集合P1相关并且相应于签名值V1q的签名值N1q的子集E’1(步骤1200)。此处假设存在与文档集合P1相关联的Q1个不同的签名值N1q。
可选择地,函数comp()设计为另外提取数据库PDB 130中与签名值N1q相关联的所有数据。例如,函数comp()可以被配置成提取与图11中的表1102相同类型的表。
以相同方式,函数comp()被配置成从数据库PDB 130中提取与文档集合P2相关并且由Q2个不同的签名值N2q’组成的子集E’2(步骤1202)。例如,函数comp()可被配置成提取与图11中的表1104相同类型的表。
函数comp()被配置成构造交集E’12,交集E’12由收集集合E’1和E’2的签名值N1q和N2q’相等的子集组成(步骤1204)。换言之,函数comp()被配置成制订组合E’1和E’2的相同签名值N1q和N2q’以及它们各自的签名数据V1q和V2q’的表PintTb[]。如果希望,函数comp()可以被配置成附加地存储数据库PDB 130中与这些签名值相关联的某些或全部数据。
函数comp()被配置成建立相关性集合E”12。例如,函数comp()可以被配置成构造相关性表PDepTb[],其中每一行代表定向在文档集合P1和P2之间的相关性(步骤1206)。
“相关性”意味着与文档集合P1相关联的签名值N1q在与文档集合P2相关联的签名值N2q’集合中的出现。换言之,文档集合P1和P2之间的相关性揭示一个集合的文档元素在这些集合中的另一个内的出现。
函数comp()被配置成制订表PdepTb[],从而该表中的每一行包括:
-签名值Nm,
-针对该签名值的对源文档集合POm的引用(即,对集合P1或P2之一的引用),
-针对该签名值的对目的地文档集合PDm的引用(即,对集合P1或P2中的另一个的引用);填充表PdepTb[]以便计数集合E’12的每个签名值Nm,从签名数据V1m和V2m,即,分别相应于集合E’1和E’2中的签名值Nm的签名数据V1q和V2q’的值开始,使用定向函数dir()确定对源文档集合POm和目的地文档集合PDm的引用。源文档集合意味着这样的文档集合,其中具有签名Nm的文档元素Cijlk很可能被导入该目的地文档集合中。
表PdepTb[]中的每一行代表针对签名值Nm的指示对“源”文档集合POm的引用和对“目的地”文档集合PDm的引用的定向的相关性。
可选择地,表PdepTb[]还可以为每个签名值Nm存储:
-相关性属性Fm,其可被根据签名数据V1m和V2m,例如,签名值Nm在源文档集合POm中首次出现的日期建立,
-文档相关性属性Gm,其可被根据文档属性数据W1q和W2q建立,例如,描述作为产生该签名的元素的起源的文档的类型的数据,或时间基准的可靠性指数,
-元素相关性属性Hm,其可被根据元素属性数据Z1q和Z2q建立,例如,对产生签名值Nm的元素的大小的指示。
如果文档相关性属性Gm包括描述文档类型的数据,可以排除其产生元素起源于不同类型的文档的签名值Nm。
确定源文档集合POm和目的地文档集合PDm可以考虑不同的准则。可以作为结果配置函数dir()。
特别地,函数dir()可被配置成确定产生签名值Nm的文档元素首次出现在其中的文档集合作为源文档集POm。在该情况下,集合POm是这样的文档集合,签名值Nm最早出现在该文档集合的印记中,而集合PDm可以是这样的文档集合,这个签名值Nm仅是稍后出现在其中。
在特定的实施例中,签名数据V1m和V2m中的每一个分别包含签名值Nm在文档集合P1和P2中的出现日期TA1m和TA2m。函数dir()可以被配置成确定相应于日期TA1m和TA2m中最早的一个的集合P1和P2中的一个作为源集合POm。集合P1和P2中的另一个被确定为目的地集合PDm。
可选择地,函数comp()可以被配置成存储日期TA1m和TA2m作为相关性属性Fm。属性Fm相应于一个时间间隔,在该时间间隔期间文档集合POm的内容被结合到文档集合PDm中。
在另一个实施例中,签名数据V1m(或分别地V2m)包括签名值N1m(或分别地N2m)在文档集合P1(或分别地P2)中的出现日期TA1m(或分别地TA2m)和来自这个集合的这个签名值Nm的消失日期TD1m(或分别地TD2m)。在这个情况下,函数comp()可以被配置成如以前那样建立源集合POm,并且保持目的地文档集合PDm中的消失日期TD1m或TD2m作为属性Fm。
可选择地,并且对于上述的实施例,文档数据W1m和W2m包括签名数据V1m和V2m的可靠性指数,特别是当这些数据包含出现日期TA1m和TA2m时。函数comp()可以被配置成仅以签名值Nm填充表PdepTb[],其中文件数据W1m或W2m是在指定的阈值之上。
更一般地,函数dir()可以被配置成通过考虑元素属性数据Z1m和Z2m,文档属性数据W1m和W2m,状态属性数据X1m和X2m和/或签名数据V1m和V2m确定集合POm和PDm。
例如,假如相应的相关性指数B1m和B2m分别在指定值之上,函数comp()可以被配置成建立集合P1和P2中相应于日期TA1m和TA2m中最早的一个的特定集合作为集合POm。
可选择地,函数comp()可以被配置成从相关性表PdepTb[]中删除这样的签名值Nm和与其相关联的数据,该签名值Nm的相关性指数B1m和B2m中的一个在预定值之下,或其中出现日期TA1m或TA2m和TD1m或TD2m被以大于一个固定值的时间长度间隔开。
相关性聚集函数
函数comp()可以被配置成调用能够将表PdepTb[]的相关性收集在一起的聚集函数。当表PdepTb[]中的相关性的数目很多时这特别有利。
参考图13描述聚集函数agrDep1()的第一个例子。
函数agrDep1()被配置成根据相关性的定向在两个相关性子集D12和D21之间的划分所有相关性E”12,子集D12和D21分别相应于:
-E”12的所有相关性,从而POm等于P1和
-E”12的所有相关性,从而POm等于P2。
(步骤1300)
例如,函数agrDep1()可以被配置成在两个子表Pdep12Tb[]和Pdep21Tb[]之间划分表PdepTb[],子表Pdep12Tb[]和Pdep21Tb[]分别:
-相应于表PdepTb[]的行,即,相应于签名值Nm,并且相应于与这些值相关联的数据,从而POm等于P1,和
-相应于表PdepTb[]的行,即,相应于签名值Nm,并且相应于与这些值相关联的数据,从而POm等于P2。
集合D12包括其相关联的出现日期TA1m比相关联的出现日期TA2m早(换言之小于这个日期)的签名值Nm的集合。类似地,集合D21包括其相关联的出现日期TA2m比相关联的出现日期TA1m早的所有签名值Nm。
首先将描述函数agrDep1()的子集D12聚集。
可选择地,函数agrDep1()可以被配置成组织集合D12和D21,以便根据与它们的签名值Nm相关联的日期或多个日期组合相关性。
函数agrDep1()被配置成建立集合D12的U12数目个签名值Nm。这可以通过使用计数函数count()完成(步骤1302)。
函数agrDep1()被配置成建立集合P1的任意元素被首次集成到集合P2中的日期T12。换言之,日期T12是与属于子集D12的签名值Nm相关联的最早日期TA2m。(步骤1304)
函数agrDep1()被配置成建立相关性的子集,或聚集属于集合D12的相关性的De12u,所述相关性的签名值Nm的出现日期TA1m或与签名值Nm相同的签名首次与集合P1相关联的日期比日期T12早。换言之,集合De12u包括其出现日期比日期T12早的属于集合D12的签名值Nm,并且可选择地与这些值相关联的数据。(步骤1306)
函数agrDep1()被配置成建立日期T12’,日期T12’定义为属于集合D12但是不属于相关性聚集De12u的相关性的与签名值Nm相关联的最早日期。换言之,日期T12’表示集合P1的文档元素被集成在集合P2中的最早日期,但是其中签名Nm不属于正被构造的组。(步骤1308)
可选择地,函数agrDep1()可以被配置成从聚集De12u中删除这样的相关性,其中签名值Nm在集合P2中的首次出现的日期TA2m比日期T12’更近。(步骤1310)
重新开始步骤1304到1310,排除已经形成的聚集De12u的相关性,直到获得的集合De12u的并集与集合D12一致。这可以通过排除刚被构造(步骤1312)的集合De12u中的相关性,并且重新开始步骤1304到1312直到D12为空(步骤1314)来实现。
函数agrDep1()被配置成对称地为子集D21执行步骤1302到1314,以便获得相关性聚集De21u,De21u的并集相应于相关性子集D21。
可选择地,函数agrDep1()可以被配置成特别地根据与这个聚集的签名值Nm相关联的相关属性Fm,文档相关属性Gm,元素相关属性Hm,给每个聚集De12u(或分别地De21u)建立聚集数据。如果希望,函数agrDep1()可以被配置成根据数据V1m或V2m,W1m或W2m和/或Z1m或Z2m建立所述聚集数据。
例如,函数agrDep1()可以被配置成给每个聚集De12u(或分别地De21u)建立该聚集的任意元素的第一次集成的日期,即,与所讨论的聚集的签名值Nm相关联的日期TA1m中最早的一个。函数agrDep1()可以附加地或可替换地被配置成给每个聚集建立:
-包含在所讨论的聚集内的签名值Nm(并且因此相关性)的数目,
-例如,根据文档相关性属性Gm计算的时间基准的可靠性指数的均值,和/或
-指示其签名值Nm被包括在所讨论的聚集中的文档元素的累积大小的值,该值例如被根据这些签名的元素相关性属性Hm计算。
可选择地,函数agrDep1()可以被配置成建立表征聚集概率的数据。聚集概率主要意味着这样的事实,其签名值Nm被包括在所讨论的聚集中的所有文档元素产生自内容集成的相同处理。例如,函数agrDep1()可以被配置成针对聚集De12u(或分别地De21u)检查是否存在该聚集的所有签名值共同存在于源文档集合的印记中的时间间隔。
应当注意,如果新状态在建立E”12的状态之后,向文档集合P1和P2之一添加新状态不改变已经计数的集合E”12的相关性。另外,新状态的添加不改变借助函数agrDep1()获得的聚集,而仅能够改变这些聚集的相关性数目。实际上,不论集合P1和P2中的文档元素的添加或删除如何,建立的相关性保持有效。例如,删除集合P2中来自集合P1的并且因此产生了相关性的文档元素不会使得该相关性消失。因此本发明可以进行的文档集合之间的比较可被描述为是“健壮的”。该属性主要是由于这样的事实,即,由模块SignM 110建立的文档集合的带时间注明的印记不会被后续状态的添加破坏:可以给印记添加新签名值,但是不修改已有的签名值,特别是在首次出现日期的情况下。换言之,特定日期的文档集合的印记包括以前日期制订的这个文档的印记。
参考图14描述聚集函数agrDep2()的第二个例子。
函数agrDep2()被配置成根据相关性的定向根据图13的步骤1300将所有相关性E”12划分为两个相关性子集D12和D21。(步骤1400)
对于文档集合P1中的首次出现日期TA1u的每个值,从而存在包含在相关性集合D12中的签名值Nu,函数agrDep2()被配置成建立相关性的子集,或聚集De12u,其包括其日期TA1m与日期TA1u相同的所有签名值Nm,以及与这些签名值相关联的数据(步骤1402)。换言之,agrDep2()被配置成将集合D12划分为其签名具有文档集合P1中相同的出现日期的聚集De12u。
可选择地,函数agrDep2()可以被配置成,例如,借助计数函数nbr()确定包括在集合D12中的聚集De12u的数目,并且验证这个数目是否大于预定值VAL(步骤1404)。值VAL等于被判断为合适于处理的聚集的数目。在另一方面,可以通过考虑高数目的聚集使得后续处理繁重,并且另一方面,小数目的聚集引起可能使得后续操作无意义的信息丢失确定值VAL。后续操作特别地意味着由模块RightsM150执行的处理。
如果步骤1404中的测试为否定,停止函数agrDep2()。如果不是,函数agrDep2()被配置成以下面描述的方式确定时间间隔集合DeltaT12v。(步骤1406)
对于在步骤1406确定的每个间隔DeltaT12v,函数agrDep2()被配置成构造包含聚集De12u的集合的相关性的超集或聚集De12v,从而日期TA1u被包含在所讨论的范围DeltaT12v内(步骤1408)。换言之,函数agrDep2()被配置成以文档集合P1中这个签名的首次出现日期的函数,并且更准确地根据这些日期是否属于时间间隔DeltaT12v,根据其签名值Nm组合集合D12的相关性。在某些情况下,聚集De12v的构造可以考虑日期TA2u而不是日期TA1u。
确定间隔DeltaT12v以便在用于产生文档元素的处理中记录连贯性。这些间隔DeltaT12v的确定可以考虑一个或多个准则。
例如,函数agrDep2()可以被配置成建立这样的间隔DeltaT12v,每个间隔相应于目的地文档集合PDm,在该情况下,文档集合P2的一个状态。因此以目的地文档集合的状态的函数对集合D12的相关性重新分组。在该情况下,函数agrDep2()被配置成以日期TA2u的函数定义聚集De12v。
该函数或日期TA2u还可以被配置成确定间隔DeltaT12v,从而每个间隔相应于文档集合的一系列状态,其中状态属性的值,特别是贡献者标识符Aij是相同的。然后以源文档集合的状态的函数并且按照贡献者对集合D12的相关性分组。
一般地,可从对表征文档内容的更新频率的时间段的选择产生间隔DeltaT12v的定义,例如,取自由版本管理工具获得的数据,例如,日期Tij。
应当理解,函数agrDep2()被配置成为集合D21对称地执行步骤1402到1408。
类似于函数agrDep1(),函数agrDep2()可以被配置成验证获得的聚集De12v和De21v的概率。
同样类似地,函数agrDep2()可以被配置成,特别地,根据与这个聚集的签名值相关联的相关性属性Fm,文档相关性属性Gm,元素相关性属性Hm给每个聚集De12v建立聚集数据,并且如果适当根据数据V1m或V2m,W1m或W2m和/或Z1m或Z2m建立。
例如,函数agrDep2()可以被配置成给每个聚集De12v(或分别地De21v)建立该聚集的任意元素第一次集成的日期,包含在所述聚集内的签名值Nm(以及因此相关性)的数目,时间基准的可靠性指数的均值,和/或其签名值Nm包含在所述聚集中的文档元素的累积大小。
此处描述的函数agrDep1()和agrDep2()不是限制性的,并且可以附加地或替换地定义其他聚集函数。例如,可以根据它们的数据Fm,Gm和/或Hm,和/或可选择地根据数据V1m或V2m,W1m或W2m和/或Z1m或Z2m给签名值Nm和与这些值相关联的数据分组。
在聚集函数的所有实施例中,这些函数还可以被配置成建立等于用于获得的每个聚集的权重的数据。这使得可以为聚集建立分层结构,从而例如可以更容易进行以后的处理。例如,当确定所述权重时,聚集函数可以被配置成考虑包含在聚集中的相关性的数目,其签名代表相关性的文档元素的累积大小,源和/或目的地文档集合中的权重,时间基准或与聚集的签名相关联的引用的可靠性,以及可获得的任意信息。
用于比较文档集合的模块的第二个实施例
在这个实施例中,模块ComM 140被配置成以前面所述方面比较文档集合Pi和若干文档集合Pi’。
通过确定文档集合Pi’的文档元素到文档集合Pi中的结合,以及相反文档集合Pi的文档元素到文档集合Pi’中的结合,模块ComM 140被配置成建立文档集合Pi和文档集合Pi’之间的相关性。换言之,模块ComM 140被配置成建立一个文档集合和若干文档集合之间的相关性,并且定向这些相关性。
模块ComM 140包括用于比较文档集合的函数comp1N()。函数comp1N()被配置成比较第一个文档集合P1和文档集合P2,P3...,PN,其中N是自然数,以便为n的每个值确定文档集合P1和Pn共有的文档元素。
参考图15描述函数comp1N()。
函数comp1N()被配置成从数据库PDB 130中提取包含与文档集合P1相关的签名值N1q以及相应的签名数据V1q的子集E’1(步骤1500)。此处假设存在与文档集合P1相关联的Q1个不同的签名值N1q。
可选择地,函数comp1N()被配置成另外提取数据库PDB 130中与签名值N1q相关联的所有数据。例如,函数comp1N()可以被配置成提取与图11中的表1102相同类型的表。
函数comp1N()被配置成从数据库PDB 130中提取与每个文档集合Pn相关并且由Qn个不同签名值N1’组成的子集E’n(步骤1502)。例如,函数comp1N()可被配置成为每个文档集合Pn提取与图11中的表1104相同类型的表。
函数comp1N()被配置成构造交集E’1N,通过组合集合E’1和每个集合E’n的交集子集构成交集E’1N。两个集合之间的交集意味着同时包含在两个集合中的签名值集合,以及如果希望,与两个集合中的这些签名值相关联的数据(步骤1504)。换言之,函数comp1N()被配置成建立组合E’1和集合E’n中的至少一个共有的签名值的表PintTb[]。对于每个共有的签名值,函数comp1N()被配置成在表PintTb[]中存储集合E’1和发现的每个集合E’n中的与这个签名值相关联的签名数据。如果希望,函数comp1N()可以被配置成附加地存储数据库PDB 130中与这些签名值相关联的某些或全部数据。
函数comp1N()被配置成建立相关性集合E”1N。例如,函数comp1N()可以被配置成构造相关性表PDepTb[],其中每一行代表定向在文档集合P1和文档集合Pn之间的相关性(步骤1506)。
函数comp1N()被配置成建立表PdepTb[],从而该表中的每一行包括:
-签名值Nm,
-针对该签名值的对源文档集合POm的引用(即特别地,对集合P1或集合Pn中的一个的引用),
-针对该签名值的对目的地文档集合PDm的引用(即,如果POm等于P1,特定集合Pn,或如果POm等于特定集合Pn,集合P1);填充表PdepTb[]以便计数集合E’1N的每个签名值Nm。从签名数据V1m和Vnm开始,使用定向函数dir()确定对源文档集合POm和目的地文档集合PDm的引用。
表PdepTb[]中的每一行代表针对签名值Nm的指示对“源”文档集合POm的引用和对“目的地”文档集合PDm的引用的定向的相关性。
可选择地,表PdepTb[]还可以为每个签名值Nm存储:
-相关性属性Fm,其可被根据签名数据V1m和Vnm,例如,签名值Nm在源文档集合POm中首次出现的日期建立,
-文档相关性属性Gm,其可被根据文档属性数据W1q和Wnq建立,例如,描述作为签名值产生元素的起源的文档的类型的数据,或时间基准的可靠性指数,
-元素相关性属性Hm,其可被根据元素属性数据Z1q和Z2q建立,例如,对签名值产生元素Nm的大小的指示。
确定源文档集合POm和目的地文档集合PDm可以考虑各种准则。作为结果可以配置函数dir()。
特别地,函数dir()可被配置成确定产生签名值Nm的文档元素首次出现在其中的文档集合作为源文档集POm。在该情况下,集合POm是签名值Nm首先出现在印记中的文档集合,而集合PDm可以是签名值Nm仅是稍后出现在其中的文档集合。
由于在每个场合,定向两个文档集合,即,集合P1和集合Pn之间的相关性是重要的,以前描述的函数comp()的不同变体可以被置换到函数comp1N()。
因此函数comp1N()被配置成建立文档集合P1和文档集合Pn中的任意一个之间的相关性集合E”1N。换言之,集合E”1N中的每个相关性(或签名值Nm)以源文档集合POm和目的地文档集合PDm描述集合P1的文档元素在文档集合Pn中的出现。
这个实施例可被看成文档集合P1和每个文档集合P2,...,Pn,...PN之间的对比较模块的第一个实施例的函数comp()的应用。
在这个实施例中,函数comp1N()可以调用聚集函数以便将相关性组合到聚集或集合E”1N的子集中。
在第一个例子中,函数comp1N()被配置成调用聚集函数agrDep3()。函数agrDep3()被配置成将相关性集合E”1N划分为子集E”1n,从而每个子集E”1n组合文档集合P1和所述文档集合Pn之间的相关性。函数agrDep3()还被配置成为每个相关性集合E”1n调用比较模块的第一实施例的聚集函数之一,特别地函数agrDep1()和函数agrDep2()之一。
在第二个例子中,函数comp1N()被配置成调用聚集函数agrDep4()。函数agrDep4()被配置成为特定签名值Nm从相关性集合E”1N中删除集合P1和集合Pn之一之间的相关性,对于所述相关性,签名值Nm在源集合POm中的出现日期不早于签名值Nm在文档集合P1,P2,...Pn,...,PN的集合中的出现日期。
可选择地,特别是当相关性的数目太多时,例如为了方便以后的处理,函数agrDep4()可以被配置成以源文档集合POm的函数创建聚集。函数agrDep4()还可以被配置成以源文档集合的状态的函数创建聚集。类似于前面在比较模块的第一实施例中提供的描述,函数agrDep4()还可以被配置成根据下面的准则创建聚集:
-目的地文档集合的状态,
-贡献者的标识符,和/或
-时间间隔。
如前所述,可将特征数据赋于聚集。
比较模块的第三个实施例
在这个实施例中,模块ComM 140被配置成对若干文档集合Pi彼此进行比较。模块ComM 140包括比较函数compNN(),函数compNN()被配置成为每个文档集合pi连续地调用函数comp1N(),以便建立相关性集合E”NN。
在一个特定开发中,函数compNN()被配置成从集合E”NN中为特定签名值Nm删除两个集合Pn之间的相关性,对于所述相关性,签名值Nm在源集合POm中的出现日期不是签名值Nm在文档集合P1,P2,...Pn,...,PN的集合中的所有出现日期中最早的。
可以用组合的方式或通过替换,可以根据前面描述的一个或其他函数聚集相关性。特别地,可以根据目的地文档集合PDm,聚集相关性,即,签名值Nm和与这些数据相关联的数据,其中组合相同的目的地文档集合PDm。
如前所述,因此可以获得与聚集相关联的特征数据,诸如,例如,当元素属性AEijlk包括对元素大小的指示时,通过总计元素属性AEijlk获得的文档元素的累积大小,或可能以与文档元素相关联的相关性指数Bijlk加权的均值,出现在所讨论的聚集中的签名,目的地集合中最早的首次出现日期或等等。
权利管理模块
权利管理模块RightsM 150被配置成与模块ComM 140和数据库PDB 130交互。
模块RightsM 150包括列表函数list(),被配置成给文档集合pi建立签名值Nm和与这些签名值相关联的数据的相关性集合,其中目的地文档集合PDm是文档集合Pi。如果需要,当聚集了相关性集合E”12,E”1N或E”NN时(即,当已经创建了这些相关性集合的子集时),函数list()被配置成制订这些聚集的列表,其中相关联的属性是目的地文档集合PDm,并且这个属性等于Pi。
在特定实施例中,函数list()被配置成给出现在相关性集合E”NN中的每个签名值Nim建立:
-对源文档集合POm(此后称为Pi’)的引用的集合,
-与每个源文档集合Pi’相关联的元素属性AEi’,jqp,lqp,kqp的集合,
-与每个源文档集合Pi’相关联的文档属性AOi’,jqp,lqp的集合,例如,所有贡献者标识符Ai’,jqp,
-与每个源文档集合Pi’相关联的状态属性ASi’,jqp的集合,和/或
-文档元素的时间基准的集合,例如,日期Ti’,jqp的集合。
在特定的开发中,函数list()被配置成附加地建立:
-相关性属性Fm,文档相关性属性Gm和/或元素相关性属性Hm的集合,和/或
-与每个相关性聚集相关联的属性的集合,例如,指示许可的相关性属性。
例如,相关性属性Fm可以指示源文档集合POm所属的许可类型。
在特定开发中,元素属性AEi’,jqp,lqp,kqp包括标识许可类型的信息(例如,“GPL许可”或“BSD”许可)。函数list()被配置成为源文档集合Pi’建立许可集合。这使得可以建立相关性和许可之间的联系,以便帮助确定文档集合Pi的操作准则是否与集合Pi’的兼容。
在另一个特定实施例中,函数list()被配置成同等地建立一个相关性列表(或相关性的聚集),其中源文档集合POm是Pi,并且每个目的地文档集合PDm(在该情况下Pi’)的属性指示许可类型。
在另一个实施例中,函数list()被配置成调用用于验证许可的不兼容性的函数licver(),函数licver()被配置成对作为文档集合属性存储的源文档集合POm的许可类型和也被存储为文档集合属性目的地文档集合PDm的许可类型与许可的法律不兼容性的预先建立的列表进行比较。list()函数可以被配置成为集合E”NN的每个相关性调用licver()函数。
在某些情况下,还可以由list()函数建立签名值Nim和Ni’m以及与它们相关联的数据。在使用被配置成保留对文档集合所作的不同修改的记录的版本管理工具的情况下,所述文档集合在该情况下为原始文档集合和目的地文档集合,这使得可以帮助用户确定关于不同文档集合的所有权。
在特定实施例中,list()函数被配置成给文档集合Pi建立在目的地文档集合PDm是这个文档集合Pi的相关性中找到的签名值Nm,以及每个相关性集合都缺少的签名值。根据特定情况,每个签名值与至少一个签名数据Viq或Viq’以及文档数据Wiq或Wiq’相关联。例如,签名数据Viq或Viq’可以包括首次出现的日期(与文档集合无关),以及文档数据Wiq或Wiq’,从中第一次找到产生这个签名值的内容的文档的标识符。
在另一方面,list()函数被配置成建立数据库PDB 130中或WDB120中与文档集合Pi相关联的元素属性AEijlk,文档AOijl,状态ASij的集合,或从数据库PDB 130中或WDB 120中提取它们。
在特定实施例中,例如,每个文档属性AOi,jqp,lqp包括至少一个贡献者标识符和对这个贡献者的状态的指示(例如,“雇员”,“个体私人”或“研究人员”)。函数list()被配置成制订标识符和它们的状态的列表。
开发
在每个文档被划分为元素每个元素与一个签名相关联的情况下本发明具有最大的价值。然而,这些文档中的某些可能不被划分为元素,例如,划分不是目的,或对于所讨论的对象没有价值的情况。在这些情况下,签名可以与作为整体的文档相关联。
在前面的描述中,剪切算法可以适合于文档集合的每个计算机管理系统。根据每个文件和/或所希望的对象的属性,标准化剪切算法可能是有用的。因此,可以直接从一个系统向另一个系统进行比较。
上面提供的描述使用日期T。在某些情况下,日期标识符是足够的。此处“日期标识符”意味着能够形成符合时间顺序的排序操作的对象的任何参数。因此,日期标识符可以简单地是文档集合中的版本标识符。
另外,不总是需要存储所有签名。已经可见可以最小化存储在可被称为“灰表”的列表中的某些签名的重要性。可以设想制订签名的“黑表”,可以某些情况下不存储黑表。
应用
前面提供的详细描述基本上落在软件开发项目的范围内。描述的手段提供了可以是自动的工具,并且特别是使得可以定义软件的法律状态。已知一旦个人贡献者以及他们的法律状态增加,特别是这种状态随着时间而发展,这是特别困难的任务。当软件基于组件和/或通过合作开发软件时,这个任务更困难。
鉴于该任务的复杂性,标准的实践是仅仅智力地定义近似的但不精确的解决方案,诸如例如:
-集体作品的任意限定,仅是由于不可能精确地知道每个人做出了什么贡献和相应的权利分配,
-相对于有影响的作者,不合理地忽视被认为是次要的贡献。
相反,以将每个文档划分为元素时所希望的粒度,本发明使得能够使用严格的,精确的和可靠的技术。这构成了软件并且特别是在“开放源”许可下发布的软件的使用或操作范围内的法律风险评估和管理的关键基本元素。
然而,本发明还适合于数字作品的生产链级别的其他应用,和/或这种处理使用或调用的数字化和可追踪性工具。合作作品和/或基于重用组件的作品也在这个范围内。
更一般地,由于可以将文档根据各种准则(作者身份或作品的版权)分解为表征作者的元素,从而对由两个类型状态的分解产生的元素的比较表征为了产生当前或最终版本而对最早状态进行的修改,本发明具有特别的价值。
对于软件(代码),分解利用语言的句法和语法。相反,对于视频/动画,分解取决于存储格式;诸如SVG(代表“可缩放向量图形”)的格式特别适合于定义高效并且就内容而言有意义的分解。
基于在分解中发现的元素的出现或不出现执行文档之间的类似搜索。
1.与现有技术相反,印记的时间使得可以以时间基准的可靠性的函数确定何时两个软件具有类似之处,哪一个被完整或部分地结合到另一个中,以及在后者的哪一个版本中。例如,因此可以确定:
(1)已被适时识别出的外部贡献的法律状态,不局限于许可兼容性问题,
(2)软件的集成部分起源于产品链的哪个阶段,
(3)通过识别使用开放源代码的项目,开放源代码的“散布”,即,其“远扬的名声”。
2.使得可以执行外源代码的搜索,而不用直接访问源码。
3.从对贡献记录的递增更新(最后已知状态之后的状态增加)仅扩展时间签名,同时可选择地增加可能的新签名和因此新的相关性(原子的并且聚集的),而不删除以前的签名(然而应当注意其相关性可能受到影响)方面来说,从产品工具的角度看该处理是健壮的。可以通过考虑比较基础中的新文档集合修改相关性。从可追溯性问题角度看(例如,从质量控制过程的角度看),这是个关键的属性。
4.例如,通过对从一个系统到另一个系统和/或从一个开发环境到另一个的不可见搬运不敏感,用于根据文件类型(特别是对于每种语言)分解内容的过滤器和算法的应用使得可以确保数据的持久。还可以定义以工作场合策略加以考验的剪切过滤器或函数(例如,对变量名称的改变或对不改变功能的块置换不敏感的过滤器)。
5.“内容产生工具”之间的联系,带时间注明的印记的产生和对相关性的搜索,以便定义软件项目的法律状态,使得可以考虑构成后者的所有元素(作者和他们的状态的列表),包括第三方元素诸如操作准则。
6.还使得可以当产生许可兼容问题时(例如,当早期或后续版本受到更宽松许可的限制时),当必须测量对污染性外源代码的集成影响,或识别责任(谁结合了外源代码以及何时)时,定义避免策略。
7.使得还可以在“内容”方面描述特定贡献者的活动。例如,产生的原子印记的数目使得可以定义对产品工具方面的活动的新度量或加权度量(即,更新数目或修改的文件的数目)。可选择地,还可以考虑印记的相关性(例如,为了以比产生的行数更恰当和健壮的方式提议共同所有部分)。
前面特别地涉及软件,但是还可以应用于其他类型的作品,并且更一般地,希望对其执行与时间记录有关的细致分析的其他类型的计算机文档。
更一般地,此处提出了用于文档的计算机管理的处理,其包括下面步骤的组合:
a/考虑具有第一时间基准(TPijl)的第一个(j=1)文档内容(Oijl),
b/根据选择的规则将第一个文档内容分解(200)为元素(Cijlk),
c/将在步骤b/获得的每个文档元素(Cijlk)与其内容的签名(Nijlk)相关联(202),
d/为第一文档内容,存储印记(Eijl),其包括在步骤b/中获得的签名中的至少一些,以及第一文档内容的所述第一时间基准的标识符,
e/在每个场合(j=j+1)为具有其时间基准的至少一个其他文档元素重复步骤a/到d/,
f/考虑第一签名值(Nijlk)作为作业值(Niq),
g/对包含这个作业值的印记(Eijl)的时间基准标识符(TPijl)应用定时时钟函数(dat()),并且将作业值(Niq)和作为统一时间基准的所述定时时钟函数的结果值(Viq)相关联,
h/重复步骤f/到h/,每个场合以另一个签名值(Nijlk)作为作业值(Niq),
i/存储每个签名值和其统一时间基准之间的对应关系。
原则上,可以根据从下面选择的至少两个类别标识(或分级)文档内容(Oijl):给定文档,文档状态,文档版本,和能够包括若干文档版本的文档集合。因此,在下面的详细描述中,除了上下文另外指出之外,表述“文档内容”可以涉及精确的文档(l),文档状态(j),文档版本,或文档集合(i)。
在前面提供的详细描述中,出现了所有4个类别。原则上,直到文档集合级别,保持了相同的结局:这是被察觉为相同事物的发展。相反,两个不同的文档至少部分地涉及不同的事物。
在有价值的实施例中,尤其是对于潜在的创新性贡献的研究:
-定时时钟函数(dat())被配置成建立从列表上的最早的时间基准(TPi,jqp,lqp)标识符和列表上的最近的时间基准(TPi,jqp,lqp)标识符中选择的至少一个作为签名数据(Viq)。
挑选至少一些文档元素例如以便修改它们的重要性可能是有用的。为此:
-步骤c/包括每个文档元素(Cijlk)附加地与关于这个文档元素的元素属性(AEijlk)相关联的事实,
-在步骤d/中,印记(Eijl)还包括至少一些元素属性(AEijlk)的标识符,
-在步骤g/中,特别是如果元素属性的标识符证实一种情况,定时时钟函数(dat())被配置成为时间选择考虑元素属性的标识符(AEijlk)。
在可被彼此组合的特定实施例中:
-在步骤d/中,印记(Eijl)包括元素属性(AEijlk)大于指定值的元素的签名,
-在步骤c/中,元素属性取决于关于文档元素的内容的统计数据。
同等地,挑选至少一些文档自身可能是有用的。为此:
-在步骤a/中,文档内容(Oijl)还具有文档属性(AOijl),
-在步骤d/中,印记(Eijl)还包括第一文档内容的所述文档属性的标识符,
-步骤g/还包括将验证函数(Aut())应用于包含作业值的印记(Eijl)的文档属性(AOijl),并且将作业值(Niq)和作为统一文档属性数据的所述验证函数的结果值(Wiq)相关联,
步骤i/还包括存储每个签名值和其统一文档属性数据之间的对应关系。
在前面的特定实施例中:
-在步骤g/中,还将验证函数应用于包含该作业值的印记(Eijl)的时间基准标识符。
根据可被组合并且更能一般应用的其他特定实施例:
-文档内容属性(AOijl)包括所述文档内容(Oijl)的贡献者的标识符。
-设想(例如在步骤d/中),应当识别至少一个已知的文档内容结构(Oijl),并且在存在其结构已被识别的文档时,该文档应当与表征这种结构的数据(702)相关联,建立印记(Eijl)涉及该数据。
-设想(例如在步骤a/中),应当根据第一组预定规则,基于文档内容(Oijl)建立整理后的文档内容(O’ijl),第一组预定规则取决于表征文档内容(Oijl)的结构的所述数据,而基于文档内容(O’ijl)执行一系列操作b/到d/。
-设想(例如在步骤b/中),应当根据第二组预定规则根据文档内容(Oijl)建立整理后的文档元素(C’ijlk),第二组预定规则特别取决于表征文档(Oijl)的结构的数据,而基于这样获得的文档元素(C’ijlk)执行一系列操作b/到d/。
以这种方式可以获得相应于若干文档内容的若干印记。
为了将它们收集在一起,可以如下完成处理:
-对于给定的签名值(Niq),为包含这个签名值(Niq)的印记(Ei,jqp,lqp)确定时间基准标识符(TPi,jqp,lqp)的列表,和
-在该列表上搜索最早时间基准的标识符(TPi,jqp,lqp)(或应用另一个时间准则,诸如搜索列表上最近的时间基准(TPi,jqp,lqp)),为每个签名值(Niq)建立统一时间基准(Viq)。
因此对于给定的签名,可以给其初始时间基准补充(或取代)统一时间基准(Viq)。
对于其部分,给每个文档内容提供一个时间基准标识符(TPijl)列表,可以将其与包含文档内容(Oijl)的所有时间基准(TPijl)的全局列表相比较。对于一个文档内容,从中取一个或多个时间段。这种时间段包括关于该组时间基准(TPijl)的连续的时间基准。它代表具有给定签名的文档元素连续出现在文档内容中的时间段。
可以用不同方式定义时间基准,可能通过输入定义。
优选地,使用用于管理文档内容版本和用于在存储器中存储来自这种版本管理工具的用于文档内容的时间基准(TPijl)的工具。
类似地,可以用不同方式定义贡献者标识符,可以通过输入定义。优选地,再一次使用版本管理工具,并且在存储器中存储来自这种版本管理工具的每个文档内容(Oijl)的至少一个贡献者标识符。
当然,版本管理工具还可以指示具有在其开发或寿命的不同阶段被整体视为单一文档的不同内容的不同版本。甚至可以指示次版本或“状态”。从多个文档内容(Oijl)开始,版本管理工具可以建立彼此不同的文档内容(Oijl)的子集。在这个情况下,基于文档内容(Oijl)的所述子集,仅应用一次操作a/到c/就足够了。在操作d/之前计算所有有用的签名。
可见,处理设想存储每个签名和其时间基准之间的对应关系。存储到作为签名和时间基准的起源的文档内容(Oijl)集合的链接例如标识符可能也是有用的。因此,对于给定的时间签名,存在包含这个签名的文档内容的一个集合。
将文档内容收集在一起可以揭示共有部分。原则上,它们具有可以通过检查相关性搜索的相同来源。为了这样做:
-α比较分别具有第一标识符(1)和第二标识符(2)的印记的第一集合(E’1)和印记的第二集合(E’2)。
印记的第一集合(E’1)包括相应于第一标识符(1)的签名值(Niq)和其统一时间基准(Viq)。另外,印记的第二集合(E’2)包括相应于第二标识符(2)的签名值(N2q’)和其统一时间基准(V2q’)。
-β成功比较的集合提供了相关性的子集(E”12)。对于它们共有的每个签名值(N1q;N2q’),这个子集包含所述印记的第一和第二集合的相应的统一时间基准(V1q;V2q’)。
-γ定义(或预定)每个相关性的方向或定向。最常见的方法是将起源或“源”放置在最早的时间,并且将目的地或“目标”放置在稍后的时间。一般地,这暗示着一组基于统一时间基准(V1q;V2q’)应用的预定规则。考虑其印记具有共有签名值(N1q)的第一标识符(1)和第二标识符(2),定向的这个操作使得可以将第一和第二标识符(1;2)之一限定为原始或“源”标识符(POm),并且将另一个标识符(2;1)限定为目的地或“目标”标识符(PDm)。
文档内容可被根据上下文和为分解选择的粒度分解为几个元素或大量元素。采用细粒度,即,大量(文档)元素,相关性子集(E”12)(定向的或未定向的)也包括大量元素。因此搜索相同状态的元素是有用的,这称为“聚集”。可以基于对下面的划分准则中的至少一个的迭代应用,根据相关性的定向划分子集(E’12),然后分别创建相关性聚集(De12u;De21u):
-取尚未分组的最早(1304)的共有签名(Nm),并且将其与比这个最早(1306)共有签名(Nm)早的“源”侧的时间基准所产生的其它共有签名(Nm)分组在一起,
-从给定的组中取出其“目标”时间基准在尚未分组的共有签名中的最早签名之后的共有签名(1310),
-执行迭代直到证实了给定的循环结束准则。
还可以对N个印记集合(N个文档内容)执行多文档比较。在该情况下:
-对N个文档(或对它们中的一些)执行所有可能的1对1比较。存在总共N(N-1)个可能的比较。这提供了多个相关性子集,当结合在一起时它们产生一个相关性集合。
-如前所述给相关性定向。
-对于这些相关性子集中的(或该相关性集合中的)每个签名,去除对于所讨论的签名,其“目标”时间基准在N个印记集合中所讨论的签名的最早状态之后的相关性。
可以在较高层次执行这个比较,例如如前所述在N个文档集合之间执行。
在诸如权利管理的应用中,该处理可以包括下面的步骤:
-建立根据印记和任意相关性验证了的贡献者的带日期的列表。
本发明还包括可以执行的程序,或产生的程序,所述程序能够驱动描述的计算机设备和/或能够实现相应的处理。可以在任意计算机可读“介质”(载体)中获得这种类型的可执行程序。术语“计算机可读介质”包括用于存储数据的磁的、光学的和/或电子的载体,以及用于传输的载体或媒介物,诸如模拟或数字信号。
本发明不限于上述的实施例,而包括本领域技术人员可以设想的所有变型。

Claims (25)

1.一种用于管理文档的基于计算机的设备,其特征在于该设备包括:
-提取器(200),能够根据给定规则将文档内容分解为元素,
-签名产生器(202),能够处理文档元素以便返回其内容的签名,
-印记产生器(signO()),能够为具有至少一个时间基准的文档内容建立印记,该印记包括该文档内容的时间基准、以及通过调用所述提取器(200)以便将这个文档内容转换为元素然后为这样获得的元素调用所述签名产生器(202)而获得的签名中的至少一些签名,
-定时时钟模块(dat()),能够根据时间基准标识符的列表计算预定的时间选择函数的结果,和
-管理器(110),被配置成:
对具有时间基准的至少两个文档内容操作所述印记产生器(signO()),从而产生一同具有多个签名的两个印记,
针对每个签名值,每次对于包含相同签名值的印记的时间基准标识符中的至少一些的列表,反复地调用所述定时时钟模块(dat()),从而为每个签名值提供统一时间基准,
存储每个签名值和其统一时间基准之间的对应关系,
其中,所述定时时钟模块计算的所述预定的时间选择函数被配置成确定从所述列表上的最早的时间基准标识符和所述列表上的最近的时间基准标识符中选择的至少一个作为结果值。
2.根据权利要求1的设备,其特征在于:
-该设备还包括内容限定器(eval()),其能够处理文档元素以便返回关于这个文档元素的元素属性。
3.根据权利要求2的设备,其特征在于:
-所述印记产生器(signO())通过为从所述提取器(200)获得的元素调用所述内容限定器(eval()),能够为文档内容建立还包括这个文档内容的至少一些元素属性的标识符的印记,
-所述预定的时间选择函数被配置成为了时间选择而考虑所述元素属性的标识符,
-所述管理器(110)被配置成每次对于包含相同签名值和相关联的元素属性标识符的印记的时间基准标识符的列表,反复地调用所述定时时钟模块(dat())。
4.根据权利要求2的设备,其特征在于:
-所述印记产生器被配置成为文档内容建立包括这个文档内容的时间基准和其元素属性证实了指定条件的文档元素的签名的印记。
5.根据权利要求2的设备,其特征在于所述内容限定器(eval())能够处理文档元素,以便返回关于这个文档元素的内容的统计类型的预定函数的结果值作为元素属性。
6.根据权利要求1的设备,其中,至少一些所述文档中的每一个还具有至少一个文档内容属性,其特征在于:
所述印记产生器(signO())能够为文档内容建立还包含这个文档内容的属性的标识符的印记。
7.根据权利要求6的设备,其特征在于该设备还包括:
-验证模块(aut()),能够作为时间基准标识符的列表的函数而根据文档内容的属性的标识符的列表来计算预定的文档属性选择函数的结果值。
8.根据权利要求7的设备,其特征在于:
-所述管理器(110)被配置成:
每次对于包含相同签名值的印记的文档内容的属性的标识符的列表,反复地调用所述验证模块(aut()),从而为每个签名值提供统一文档内容属性数据,和
存储每个签名值和其统一文档内容属性数据之间的对应关系。
9.根据权利要求6的设备,其特征在于所述文档内容属性包括所述文档内容的贡献者的标识符。
10.根据权利要求1的设备,其特征在于:
该设备还包括:限定器模块(type()),能够识别文档内容的至少一种已知结构,并且当存在其结构已经被识别出的文档时,能够将这个文档与表征这个结构的数据(702)相关联,
以及,所述印记产生器(signO())被配置成调用所述限定器模块(type())以建立所述印记。
11.根据权利要求10的设备,其特征在于:
该设备还包括:第一过滤模块(filterA()),被配置成根据文档内容建立已经根据第一组预定规则整理的文档内容,所述第一组预定规则取决于表征文档内容的结构的数据,
以及,所述印记产生器(signO())被配置成为文档调用第一过滤模块(filterA())以便获得整理后的文档内容,以及通过调用所述提取器(200)将这个整理后的文档内容转换为元素然后为这样获得的元素调用所述签名产生器(202),建立印记。
12.根据权利要求10的设备,其特征在于:
该设备还包括:第二过滤模块(filterB()),被配置成根据文档元素建立已经根据第二组预定规则整理的文档元素,所述第二组预定规则取决于表征文档结构的数据,
以及,所述印记产生器(signO())被配置成为文档调用第二过滤模块(filterB())以便从通过调用所述提取器(200)而获得的文档元素获得整理后的文档元素,然后为这样获得的这些整理后的文档元素调用所述签名产生器(202)。
13.根据权利要求1的设备,其特征在于所述管理器(110)被配置成每次对于包含相同签名值的印记的所有时间基准标识符的列表,反复地调用所述定时时钟模块(dat()),以便为每个签名值提供统一时间基准。
14.根据权利要求1的设备,其特征在于所述管理器(110)被配置成针对每个签名值,每次对于包含这个签名值和这个签名值的所述统一时间基准的印记的时间基准标识符,反复地调用所述定时时钟模块(dat()),以便为每个签名值提供新的统一时间基准。
15.根据权利要求1的设备,其特征在于所述定时时钟模块(dat())被配置成比较时间基准标识符的所述列表与所述文档内容的时间基准集合,并且根据该比较来推导出所述列表中的时间段的标识符作为结果值,每个时间段由关于所述时间基准集合的连续时间基准构成。
16.根据权利要求1的设备,其特征在于所述设备被配置成与用于管理文档内容的版本的工具交互,存储器从版本管理工具接收所述文档内容的时间基准。
17.根据权利要求16的设备,其特征在于用于管理文档内容的版本的工具还能够将贡献者标识符与每个文档内容相关联,所述存储器还接收这种贡献者标识符。
18.根据权利要求16的设备,其特征在于所述管理器(110)被配置成:
与所述用于管理文档内容的版本的工具交互,以便根据多个文档内容建立彼此不同的文档内容的子集,
对所述子集中的每个文档内容操作所述印记产生器(signO()),以便获得一同具有多个签名的印记,
针对为所述子集获得的每个签名值,对于一个列表而反复地调用所述定时时钟模块(dat()),该列表同时包括从所述子集获得的印记的时间标识符和与所述子集中作为所述签名值的起源的文档内容相同的每个文档内容的时间标识符。
19.根据权利要求1的设备,其特征在于所述管理器(110)还被配置成:
除了每个签名值和其时间基准之间的对应关系之外,还存储作为所述签名值和所述时间基准的起源的文档内容集合的标识符。
20.根据权利要求19的设备,其特征在于该设备还包括:
-印记比较器(comp()),能够比较分别具有第一标识符和第二标识符的第一印记集合和第二印记集合,第一印记集合包括相应于第一标识符的签名值及其统一时间基准,第二印记集合包括相应于第二标识符的签名值及其统一时间基准,成功比较的集合提供了相关性的子集,对于它们共有的每个签名值,这个子集具有所述第一和第二印记集合的相应的统一时间基准,
-定向模块(dir()),能够根据一组预定规则,基于所述统一时间基准,为共有签名值限定第一和第二标识符之一作为初始或“源”标识符,而限定另一个标识符作为目的地或“目标”标识符,
其中,所述印记比较器(comp())能够为具有相应的统一时间基准的所述相关性的子集中的每个签名值调用所述定向模块(dir()),以便提出所述源和目标之间的区别。
21.根据权利要求20的设备,其特征在于所述定向模块(dir())被配置成建立相应于最早的统一时间基准的标识符作为源文档内容的集合的标识符。
22.根据权利要求21的设备,其特征在于,该设备还包括用于在所述第一和第二印记集合之间划分所述相关性的子集的模块(agrDep1()),这个划分模块(agrDep1())被配置成基于下列划分准则中的至少一个的迭代应用,根据签名的起源的标识符划分所述子集,然后分别创建相关性的聚集:
-取尚未被分组的最早的共有签名(1304),并且将它与从“源”侧的比这个最早的共有签名(Nm)早的时间基准产生的其它共有签名分组在一起(1306),
-从给定的组中去除其“目标”时间基准比尚未被分组的共有签名中最早的签名晚的共有签名(1310),
-继续迭代,直到证实了给定的循环结束准则。
23.根据权利要求20的设备,其特征在于该设备还包括:
-多文档比较器,能够接收N个印记集合,然后逐个印记集合地对于至少一些签名执行定向比较,通过比较至少一个印记集合与其它印记集合,提供多个相关性子集,然后对于这些相关性子集中的每个签名,去除对于该签名其“目标”时间基准比所述N个印记集合中对于该签名的最早日期晚的相关性。
24.根据权利要求20的设备,其特征在于,该设备包括全局文档管理模块(150),其能够制订基于所述印记和任意相关性而证实的贡献者的注明日期的列表。
25.根据权利要求1的设备,其特征在于,所述文档内容能够根据选自下列各项的至少两个类别而被标识:给定的文档,文档状态,文档版本,以及可能包含若干文档版本的文档集合。
CN2007800457782A 2006-10-27 2007-10-25 用于管理数字文档的计算机工具 Active CN101568928B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0609464A FR2907934B1 (fr) 2006-10-27 2006-10-27 Outil informatique de gestion de documents numeriques
FR0609464 2006-10-27
PCT/FR2007/001766 WO2008059124A2 (fr) 2006-10-27 2007-10-25 Outil informatique de gestion de documents numeriques

Publications (2)

Publication Number Publication Date
CN101568928A CN101568928A (zh) 2009-10-28
CN101568928B true CN101568928B (zh) 2013-07-31

Family

ID=38255266

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800457782A Active CN101568928B (zh) 2006-10-27 2007-10-25 用于管理数字文档的计算机工具

Country Status (9)

Country Link
US (1) US8566369B2 (zh)
EP (1) EP2084644B1 (zh)
JP (1) JP5064510B2 (zh)
CN (1) CN101568928B (zh)
BR (1) BRPI0718427A2 (zh)
CA (1) CA2667111C (zh)
ES (1) ES2401727T3 (zh)
FR (1) FR2907934B1 (zh)
WO (1) WO2008059124A2 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9311390B2 (en) * 2008-01-29 2016-04-12 Educational Testing Service System and method for handling the confounding effect of document length on vector-based similarity scores
US9264434B2 (en) * 2008-06-02 2016-02-16 Polyvalor, Limited Partnership File presence detection and monitoring
US10303722B2 (en) 2009-05-05 2019-05-28 Oracle America, Inc. System and method for content selection for web page indexing
US20100287152A1 (en) 2009-05-05 2010-11-11 Paul A. Lipari System, method and computer readable medium for web crawling
US8321382B2 (en) * 2010-03-25 2012-11-27 Xerox Corporation Validating aggregate documents
JP2012175552A (ja) * 2011-02-23 2012-09-10 Seiko Instruments Inc 情報処理装置、及び情報処理プログラム
CA2741212C (en) 2011-05-27 2020-12-08 Ibm Canada Limited - Ibm Canada Limitee Automated self-service user support based on ontology analysis
US8849776B2 (en) * 2011-10-17 2014-09-30 Yahoo! Inc. Method and system for resolving data inconsistency
CA2767676C (en) * 2012-02-08 2022-03-01 Ibm Canada Limited - Ibm Canada Limitee Attribution using semantic analysis
FR3046688B1 (fr) * 2016-01-07 2018-01-12 Guillaume Rousseau Dispositif d'aide au referencement de documents numeriques
CN110968413A (zh) * 2018-09-28 2020-04-07 华为技术有限公司 一种数据管理方法、装置和服务器
US11354409B1 (en) * 2020-02-11 2022-06-07 Trend Micro Inc. Malware detection using locality sensitive hashing of API call sequences
US11537392B2 (en) * 2021-01-04 2022-12-27 Capital One Services, Llc Dynamic review of software updates after pull requests

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282698B1 (en) * 1998-02-09 2001-08-28 Lucent Technologies Inc. Detecting similarities in Java sources from bytecodes
CA2317139C (en) * 1999-09-01 2006-08-08 Nippon Telegraph And Telephone Corporation Folder type time stamping system and distributed time stamping system
US6658423B1 (en) * 2001-01-24 2003-12-02 Google, Inc. Detecting duplicate and near-duplicate files
JP2004260664A (ja) * 2003-02-27 2004-09-16 Nec Corp タイムスタンプ付与機能をもつxml署名生成システム,装置,方法およびプログラム
JP4257269B2 (ja) * 2004-07-13 2009-04-22 日本電気株式会社 メタデータ送信装置及びメタデータ受信装置
CN1989498B (zh) * 2004-07-20 2012-10-17 富士通株式会社 电子文件管理系统及电子文件管理方法
US7809695B2 (en) * 2004-08-23 2010-10-05 Thomson Reuters Global Resources Information retrieval systems with duplicate document detection and presentation functions
US7574742B2 (en) * 2004-11-15 2009-08-11 Industrial Technology Research Institute System and method of string matching for uniform data classification
US20070168671A1 (en) * 2006-01-16 2007-07-19 Fujitsu Limited Digital document management system, digital document management method, and digital document management program

Also Published As

Publication number Publication date
WO2008059124A2 (fr) 2008-05-22
CA2667111C (fr) 2016-01-05
WO2008059124A3 (fr) 2008-11-06
JP2010507852A (ja) 2010-03-11
EP2084644B1 (fr) 2012-12-05
FR2907934B1 (fr) 2009-02-06
US8566369B2 (en) 2013-10-22
EP2084644A2 (fr) 2009-08-05
FR2907934A1 (fr) 2008-05-02
CA2667111A1 (fr) 2008-05-22
JP5064510B2 (ja) 2012-10-31
ES2401727T3 (es) 2013-04-24
CN101568928A (zh) 2009-10-28
BRPI0718427A2 (pt) 2013-11-12
US20100049760A1 (en) 2010-02-25

Similar Documents

Publication Publication Date Title
CN101568928B (zh) 用于管理数字文档的计算机工具
Eriksson et al. The PLUSS approach–domain modeling with features, use cases and use case realizations
Van der Aalst et al. Workflow mining: Discovering process models from event logs
Spanoudakis et al. Software traceability: a roadmap
Paim et al. DWARF: An approach for requirements definition and management of data warehouse systems
Toval et al. Legal requirements reuse: a critical success factor for requirements quality and personal data protection
Ardimento et al. Evaluating coding behavior in software development processes: A process mining approach
Christley et al. Analysis of activity in the open source software development community
Abrams et al. Adaptive governance in a complex social-ecological context: emergent responses to a native forest insect outbreak
Birkmeier et al. On component identification approaches–classification, state of the art, and comparison
CN101452550A (zh) 系统的需求信息处理方法
Schlie et al. Incremental feature model synthesis for clone-and-own software systems in MATLAB/Simulink
Uzunov et al. Assessing and improving the quality of security methodologies for distributed systems
Acheson Methodology for object-oriented system architecture development
Steghöfer et al. Design decisions in the construction of traceability information models for safe automotive systems
Capilla et al. On the role of architectural design decisions in software product line engineering
Schmid et al. Requirements management for product lines: extending professional tools
Weinreich et al. A fresh look at codification approaches for sakm: A systematic literature review
Armas Cervantes et al. Incremental and interactive business process model repair in apromore
Regainia et al. A methodology of security pattern classification and of attack-defense tree generation
Karagiannis et al. Compliance evaluation featuring heat maps (CE-HM): a meta-modeling-based approach
Koschmider et al. A Petri net-based view on the business process life-cycle
Gupta et al. Method configuration from situational method engineering
Hebig et al. Toward a comparable characterization for software development activities in context of MDE
Wagner et al. A security requirements approach for web systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant