CN1249042A - 用于网络信息访问的方法和系统 - Google Patents

用于网络信息访问的方法和系统 Download PDF

Info

Publication number
CN1249042A
CN1249042A CN97199793A CN97199793A CN1249042A CN 1249042 A CN1249042 A CN 1249042A CN 97199793 A CN97199793 A CN 97199793A CN 97199793 A CN97199793 A CN 97199793A CN 1249042 A CN1249042 A CN 1249042A
Authority
CN
China
Prior art keywords
information
query
source
language
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN97199793A
Other languages
English (en)
Inventor
D·克里斯蒂安森
R·B·多伦波斯
O·埃茨奥尼
C·夸克
G·劳克哈特
E·泽尔贝格
D·S·韦尔德
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.)
Netbot Inc
Original Assignee
Netbot 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 Netbot Inc filed Critical Netbot Inc
Publication of CN1249042A publication Critical patent/CN1249042A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • 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/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9532Query formulation
    • 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/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9538Presentation of query results
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/563Data redirection of data network streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99935Query augmenting and refining, e.g. inexact access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

Abstract

本发明为用户访问连网的信息源提供帮助。在一个方面,本发明是这样一种方法,它智能化地把用户查询路由选择到与该查询相关的信息源,从接收到的响应中提取相关数据字段。并按照所估计的相关性的顺序把所提取的数据智能化地显示给用户。本发明的系统在一个或多个连网计算机上以集中或分散的方式实现该方法的一个或多个步骤。此外,本发明提供了一种新的语言,它有助于容易地编写和维持信息源查询和响应格式的描述。

Description

用于网络信息访问的方法和系统
技术领域
本发明涉及网络上的信息访问,尤其涉及响应于用户的查询对公共或专用网络上可获得的来自信息源的相关信息进行自动定位和估计。
背景技术
专用企业网和公共因特网的飞速发展使得大量文档、数据库和实用程序(utilities)不断增长,而成为可怕的非常复杂的事。现在几乎任何类型的信息均存在于某个地方,但大多数用户不能找到他们要找的信息,甚至老练的用户也需要浪费许多时间和精力来寻找适当的信息源。一个问题是简单的,即不断增长的大量可获得的信息源,这超出了单个用户的理解力。第二个问题是,随着可获得的信息及信息源的这种增长,用来管理、访问和显示(presentation)该信息的方法和软件实用程序也相应增加。每个实用程序具有不同且通常是独有的界面以及命令和能力的集合,并且适应于不同的用户集合和不同的信息类型与信息源的集合。于是,可获得的实用程序的迥异给用户造成的问题可与信息爆炸所产生的问题相比拟。现在,用户面临着使用哪个工具在哪个信息源进行查询的双重问题。
过去,为给用户提供有助于解决网络革命所带来的这种双重问题的自动计算机辅助服务,已进行了许多努力。例如,AI的研究人员已创造了几个帮助用户进行电子邮件和网络新闻筛选(见Pattie Maes等人的Learning interface agents,Proceedings of AAAI-93一文,1993)的原型软件工具、有助于万维网(World WideWeb)浏览的工具(见H.Lieberman的Letizia:An agent that assists web browsing一文,proc.15th Iht.Joint Conf.on A.I.pp.924-929,1995;Robert Armstrong等人的Webwatcher:A learning apprentice for the world wide web一文,Working Notesof the AAAI Spring Symposium:Information Gathering from Heterogeneous,Distributed Environments,pp.6-12,Stanford University,AAAI Press,1992)、计划会议的工具(见Lisa Dent等人的A personal learning apprentice一文,Proc.10th Nat.Conf.on A.I.,pp.96-103,1992;Pattie Meas的Agents that reduce work andinformation overload一文,Comm.of the ACM 37(7):31-40,146,1994;TomMitchell等人的Experience with a learning personal assistant一文,Comm.of theACM 37(7):81-91,1994)以及进行有关互连网的任务的工具(O.Etzioni等人的Asofibot-based interface to the internet,CACM 37(7):72-75,1994)。这些工具需要访问的不断增长的信息可在万维网上获得。不幸的是,甚至与WWW同样标准化的领域也会对自动软件工具造成严重的问题。例如,虽然通常可以用超文本标记语言(″HTML″)来编写网页,但这种语言仅定义了信息显示的格式,而未尝试暗示其含义或语义上的内容。目前,对于Web,不存在可接受的″语义标记语言″,也不存在可能被广泛采纳的语言。因特网可能会造成更大的问题。
因而,企业网、因特网以及万维网的出现已对旨在帮助用户找到相关信息的自动服务或工具造成几个基本的问题。第一,迄今为止没有一个服务能提供足够的附加值来替换使用诸如Yahoo或Lycos等可访问现有目录和索引的Web浏览器。第二,这种服务还不能被理解,也不能胜任地对从各种因特网和Web信息源返回的响应中的相关信息进行分析。第三,现有的服务和工具还不便于适应数目不断增长的信息源及其不断变化的响应格式。这是由于现有的工具所利用的每个因特网服务和Web方面的个性化的手工编码的界面所引起的(见Yigal Arens等人的Retrieving and integrating data from multiple information sources,InternationalJournal on Intelligent and Cooperative Information Systems 2(2):127-158,1993;O.Etzioni等人的A softbot-based interface to the internet,CACM 37(7):72-75,1994;B.Krulwich的Bargain finder agent prototype,Technical report,Anderson Consulting,1995;Alon Y.Levy等人的Data model and query evaluation in global informationsystems,Journal of Intelligent Information Systems,special Issue on NetworkedInformation Discovery and Retrieval 5(2),1995;Mile Perkowitz等人的Categorytranslation:Learning to understand information on the internet.Proc.15th Int.JointConf.on A.I.,1995)。一个服务或工具最好能访问一个新的或变化的因特网信息源,以便自动地学习如何检索来自该信息源的相关信息。这样,即使在这种设备限于具有依据某些强制原理而选中的响应格式的信息源组时也是有利的。
发明内容
本发明的主要目的是通过提供个人化网络机器人叫做″netbot.(网络机器人)″的方法和系统来解决这些基本问题。网络机器人通过跟踪可获得的的网络信息源,了解每个特定源的相关信息和特征,并在用户请求时确定哪个源与给定的查询相关,把此查询传送到最相关的信息源,理解从每个源返回的响应,为用户综合并灵活地提供查询结果,从而担当用户的智能化助理的角色。
本发明的网络机器人具有下列优点。第一,网络机器人只向用户返回最相关的信息。一方面,只将每个用户的查询传送到被确定为最相关的主要信息源。另一方面,如此分析和理解信息源的响应,从而只提取相关的数据项给用户显示。丢弃复制、陈旧和及不相关的信息项。第二,网络机器人是快速的。由于它可自动地以并行方式搜索主要相关源,所以它可在最快的主要源返还响应时就立即提供信息。尽管改变条件将使不同信息源的速度发生波动,但网络机器人综合器(integrator)可保持与最快的信息源一样快。没有信息要返还查询的源不会使用户减缓,这是因为网络机器人简单地忽略了这些源。第三,网络机器人容易地适应其数目不断增长的网络信息源及不断变化的响应格式。网络机器人利用新型的说明性语言来描述信息源。源的描述简短而便于理解,因此容易对其进行编写和维护。
因此,本发明的一个方面包括一种有效地访问网络上的信息源的方法,该方法最好包括以下的一个或多个步骤:接收用户对信息的查询;确定与此查询最相关的信息;检索每个信息源的描述;以适用于每个信息源的方式依据此描述对该查询进行格式化并把经格式化的查询传输到该源;检索来自该信息源的响应;对于每个源,依据检索到的描述来理解和提取相关数据字段;把来自每个信息源的相关数据按照其相关估计来排列的智能化方式显示给用户。有利的是,尽可能以最大限度平行地进行这些步骤。尤其是,至少平行地把所有查询传输到所有的相关信息源,而不必等待中间的响应。
本发明的另一个方面包括一种用于进行本发明方法的一个或多个步骤的计算机系统和设备。用户具有接在一网络上的显示装置,该网络还接有多个信息源。显示装置接收用户查询并显示网络机器人的响应。此外,显示装置进行本发明方法的一个或多个步骤。有利的是,可在接到网络机器人服务器计算机的网络上进行不在该装置上进行的一个或多个步骤,网络机器人响应于来自用户装置的功能请求。或者,用户装置的范围可从无盘手提式终端到PC、到工作站等。
本发明的再一个方面包括一种便于创造和维护信息源的描述的新语言和语言工具。重要的是,这种语言识别从信息源返还的响应中的相关数据字段,并能提取所有这些字段。在较佳实施例中,该语言具有动作(action)语句成分和规范(regular)表达式成分。规范表达式成分具有以下这些新特征,即产生规范表达式的模块化分层描述,把变量连接到在与信息源的响应的模式匹配期间所识别的正确子串,以多个变量连接进行任意动作语言表达,以及在可能的地方指定无回溯地识别子串。
附图概述
参考附图、以下的描述和所附的权利要求将更好地理解本发明的这些和其它特征、方面和优点,其中:
图1从总体上示出本发明的网络机器人;
图2A-B示出图1的网络机器人实施例的示例用户界面;
图3示出图1的网络机器人的示例功能性组成;以及
图4示出图1的网络机器人的另一个硬件实施例。
本发明的较佳实施方式
为了清楚地揭示而不是限制,以一种用于网络信息访问的方法或处理、一种用于进行该方法的系统或设备以及一种设计成有助于实行该方法和系统的新语言来详细地描述本发明的网络机器人。
以下,首先对本发明的这些方面进行概述,接着对各个组成进行详细讨论。
5.1.网络机器人构造的概述
本发明的网络机器人方法或系统包括在连有计算机的一个或多个网络中共同起动作以帮助用户访问连有服务器的网络(以下叫做″信息源″)中存在的信息的软件和硬件设备。图1从总体上示出网络机器人与用户以及与网络化信息源的关系。例如,用户1通过诸如监视器2等标准接口装置来访问用户计算机3。在工作过程中,用户需要来自信息源7的信息,信息源7通过诸如网络链路4和6等各种网络链路接到用户计算机。由于信息源有许多,所以用户可从寻找来自相关信息源的所需信息的协助中受益。由网络机器人5来提供此协助,它保持了解可获得的信息源并代表用户或作为用户的工具通过链路6对这些信息源进行查询。或者,网络机器人5可部分或整体地位于用户计算机3上,或者,网络机器人可部分或整体地分布在网络上并被用户通过链路4进行访问。
具有类似信息种类的信息源组7分成概念上的种类叫做信息域。例如,一个域可以是用于特定产品的电子存储器的域;另一个域可以包括因特网索引,这些索引包含有关各种万维网(″WWW″)页的关键字内容的信息。
在一较佳实施例中,网络机器人包括三个主要的功能性模块:用户界面、综合器和I/O管理器。简而言之,用户界面模块与用户进行交互动作,以接收用户对信息的查询并对从信息源的网络接收到的信息响应进行格式化和显示。有利的是,用户界面适用于被访问的特定信息域。综合器模块接受来自用户界面模块的用户查询,选择相关的信息源,对其进行格式化以从网络传输到每个相关的信息源,接收来自这些信息源的响应,理解这些响应,以及把这些响应的相关部分传回用户界面模块以显示给用户。I/O管理器模块为用户界面和综合器模块完成硬件、操作系统和网络特定对接,从而把网络机器人安置(port)到不同的硬件平台、操作系统或网络只需改变完全模块化的代码。
在另一个特殊实施例中,可以不需要用户界面或I/O管理器模块。例如,这些模块的功能可能已由其它操作系统成分完成。网络机器人可只设有所揭示的一个或多个设备,而不必提供其它的设备。例如,在某些实施例中,网络机器人可只用于进行查询路由选择,或者还具有相关性排列能力。在其它实施例中,网络机器人可简单地对查询进行格式化并理解响应。此外,在网络机器人中还可存在其它的模块或这些模块被网络机器人所访问。例如,可提供使网络机器人自动地获取新网络信息源的特性的学习模块。最后,如本领域内的技术人员所公知的,在数目更多或更少的模块中,还可以其它方式来分割或组合由所述模块所进行的功能。
在没有特别提出时,可在所揭示的硬件结构上以诸如C等完全过程编程语言或者诸如C++等完全面向对象的编程语言来实现本发明的处理。
用户界面模块
更具体来说,用户界面模块既具有对网络机器人用户界面通用的重要功能(无论信息域指向哪个网络机器人),也具有对特定网络机器人的特定信息域的适用性。首先转向较佳的通用功能,一个这样的功能是记住与网络机器人进行交互动作的用户优先级的能力。例如,要记住的优先级包括:网络机器人是否要取得页面来计算其本身的相关性、数N或待查询的相关信息源、显示特性等。第二个这样的通用功能是不断地显示从查询接收到的信息。由于每个查询通常都可使网络机器人查阅许多代理的信息源,它们是通常在各不相同的时间接收到结果。立即显示不在同一时间接收到的结果会引起一些不想要的后果,诸如屏幕闪烁或使已显示的数据杂乱地重新排列。另一方面,不断的显示一方面适应于用户快速观察信息的愿望,另一方面也适应于用户全面地观察所有接收到的信息并依据相关性进行排序的愿望。
不断显示的策略最好在用户屏幕上的一个或多个窗口上设置用于查询满意处理以及某些通用用户控制(诸如用于操纵这些窗口的屏幕按钮)的几个确定的视图。在一个窗口中,用户界面模块显示用符号表示为例如网络地址、图标或其它简洁的屏幕表象的每个被查阅的源的信息源清单。然后,当从特定源接收到回答时,其相关的屏幕表象通过例如改变强度、改变色彩等方式来改变外观。还显示了当前接收到的独特信息项总数的计数。或者,通过单击信息源的屏幕表象而打开另一个窗口,该窗口具有有关该信息源的信息,或者从该信息源接收到的响应的显示,或者对该网络上的信息源的访问等。
最好把一个通用控制用一个通用的显示按钮实现,该按钮按下时使得显示另一个窗口,其中依据对所有当前接收到的响应所估计的与查询的相关性的排列来显示这些响应的清单。最好把另一个通用控制后一窗口中的more按钮实现,该钮按下时,使得重新显示与自最后一个窗口显示以来新近接收到的项目合并的所有先前的数据项。把新近接收到的项目按次序或按相关性合并到显示清单中,例如由其色彩或强度把它们与先前的项目区分开来,从而用户可避免再次扫描先前的项目。或者,通过单击数据项而打开又一个信息窗口,从而给出该项目的源、包含该项目的响应的显示或者该网络上对该项目的源的访问等。
除了这些通用功能和控制以外,网络机器人的用户界面模块最好还实现适用于它所计划的信息域的特定设计、格式化和字段。例如,用于因特网上电子商店的信息域的比较购买的网络机器人可具有包含产品名称、型号和价格的标记字段的特定界面显示。另一方面,用于访问联机因特网索引的信息域的网络机器人可具有这样的界面,该界面具有标有从查询中获得的元素的字段。
在一个网络机器人的实施例中,大多数功能和模块位于连接有用户可远程访问的服务器的网络上。例如,用户可利用诸如Netscape等Web浏览器以万维网协议来访问因特网上的一个网络机器人。在此情况下,用户界面建立了由I/O管理器在网络上传输的经HTML格式化的页面。图2A从总体上示出来自该实施例的一个例子的用户显示,该显示进一步指向联机电子软件商店的信息域。图2A的网络机器人显示被分割成三部分。部分11是标题部分,通常表示来源于用于购买的网络机器人″ShopBot″的显示。网络机器人最好还具有特定输入查询屏幕。部分12表示以其WWW地址15所代表的当前正被查阅的联机商店的清单,该地址是可选择的以提供进一步的信息或指导WWW访问。在部分12中的16处,类似地表示已返还查询结果的那些源。部分13表示迄今为止依据此特定信息域格式化成为用于大部分PC操作系统的段的结果。对起始的信息源用产品名称、价格和地址对所返还的每个独立项目例如项目16进行格式化。在此实施例中,以窗口滚动和Web浏览器中所固有的控制设备来控制信息显示。把此用户界面实现为在网络机器人服务器处产生的并传输到Web浏览器的HTML格式化的页面。
图2B从总体上示出来自基于Web浏览器的用户界面实施例的另一个例子的用户显示,在此情况下,该显示指向WWW索引或搜索引擎的一个信息域。通常把此显示分割成三个部分。部分71显示了网络机器人的标题;部分72显示了当前搜索的状态;部分73显示了搜索结果。更具体来说,部分71的显示包括该网络机器人的标识,“MC”是“MetaCrawler”的缩写,选此名是因为WWW搜索引擎常称为“Web Crawler”,71的显示还控制对某些系统层显示特征的访问,诸如MetaCrawler主页和用户反馈页面。部分72的显示包括以其通用名识别的、当前查询的搜索引擎总的和每个搜索引擎的当前查询状态,以及共同的用户控制。一般,饼图图标78归纳了在被查询的搜索引擎中已有八分之七响应于该查询。在公知为″Lycos″的搜索引擎75处,检查(check)标志表示已接收到包含信息项的响应。在公知为″Inktomi″的搜索引擎76处,交叉(cross)标志表示已接收到没有任何信息项的响应。另一方面,可从视觉上把公知为″Galaxy″的搜索引擎77与其它搜索引擎区分开来,以表示它还未响应于此查询。部分72的共同控制包括请求显示新近到达的搜索结果的more-按钮79以及请求发送新的或经改变的查询的modify-search-按钮80。最后,部分73的显示包括从搜索引擎返回的信息项。每个信息项被分开地显示且包括标题81、可获得的描述性文本82以及具有该信息项网页的URL以及所估计的该信息项与查询的相关性(在这里为″1000.″)的行83。通过所估计的相关性的降序排列来分类显示项目。使用Web浏览器提供的控制来滚动所显示的项目。该用户界面由Java小应用程序实现,它从网络机器人服务器下载并由Web浏览器执行。这样,图2B的界面比图2A的界面具有更大的互操作性。例如,它可轮询网络机器人服务器的当前搜索状态且无需用户的动作而相应地更新状态显示。
虽然主要借助窗口和按钮来描述用户界面,但本领域内的技术人员应知道本发明可适用于为显示信息和输入用户命令而设的其它显示范例。例如,用户界面模块可控制整个屏幕和当前的图形显示,而无需窗口系统的介入。
最好以面向对象的编程语言来实现用户界面模块,该语言补充了提供开窗口功能的类库。较佳的实施例是使用带有java.awt软件包的Java语言。例如,见Flanagan,1996,Java In A Nutshell,O’Reilly & Associates,第5和19部分。
综合器模块
图3示出较佳的功能模块、数据库以及它们在功能上与网络机器人30的大致相互关系以及特别是与综合器模块37的功能上的相互关系。综合器最好由三个功能构成:查询路由器39、包装器(wrapper)数据库40和聚合(aggregation)引擎38。以下将详细地描述这里所引入的元件。如果给出从用户界面模块34所传来的用户查询31,则综合器首先呼叫查询路由器39按照相关性来排列网络机器人所知的网络信息源并返还N个较相关的源。接着,综合器检索来自包装器数据库40的N个最相关源的N个包装器。以本发明的包装器描述语言来编写这些包装器,它们是对信息源及其要求的描述。聚合引擎38使用所检索的包装器,首先把此查询格式化成为被每个信息源所识别的形式,接着理解被每个信息源33所返还的信息,从而消除无关的格式化成分并使接收到的信息构成通用格式。然后,依据较佳的增量显示方法36来聚合此格式化信息并传送到为用户显示32的用户界面模块。还可由所存储的用户的喜好35来控制用户显示。
查询路由器
性能良好的外来机器人最好应以足够有效和节约的方式使用宝贵的网络带宽和信息源处理资源,同时最好地答复每个用户查询。这种性能把资源的使用量减到最少,从而对各个网络机器人和在一网络上同时起动作的所有网络机器人实现最好的整体性能。
查询路由器对实现此性能来说是重要的,因为它允许网络机器人只向可能具有与查询相关的信息的信息源发送请求。查询路由器从用户查询中确定每个信息源与给定查询的相关性并返还N个最相关的源。N是可由用户通过喜好来控制的参数,它可以小到1。此相关性确定宁可多算几个而不要少算几个。宁可偶尔包括无关信息源而不要丢失重要的相关信息源。此外,最好快速地计算此相关性确定,而无需开销大的处理技术。
在一较佳实施例中,查询路由器计算每个信息源的数值相关性等级值,该值用于估计源的相关性。此计算是基于″概念类(conceptual class)″这一概念。因而,预先给每个信息源添加与其相关的概念类的标记。然后,查询路由器把每个查询映射到与其相关的概念类,并找到具有与该查询共享概念类的信息源。最好以散列函数来把查询映射到其概念类。
聚合引擎
聚合引擎是综合器模块的协调函数。它接收来自用户界面模块的用户查询并请求查询路由器来提供与给出的查询最相关的N个信息源的清单。然后,它检索来自包装器数据库的N个信息源的N个包装器。由N个包装器所引导,聚合引擎把此查询翻译成可被N个信息源中每一个所接受的请求格式,并把这N个请求转移到I/O管理器以备网络传输。对于某些源,请求可以是待返还的格式。当从一信息源接收到一响应时,适当的包装器再次引导聚合引擎从该响应中提取数据,并把该数据置于与特定信息域相关的数据字段(叫做元组格式-tuple format)的清单中。或者,可使用适用于特定信息域的方法给每个元组赋予优先级。最后,当增量显示管理器请求把数据显示给用户时,聚合引擎在已确定优先级时按照优先级的顺序把这些元组传递到用户界面模块。
例如,如果信息域与因特网联机软件供应商相关,则元组可选择地包含诸如产品名称、制造商、软件版本号、所需的操作系统、价格等相关字段。可以根据用户的喜好,由价格、交付延迟或其它因素来决定元组的示例优先级。
对于进一步的例子,如果信息域与万维网(″WWW″)搜索引擎(一般可在WWW上获得其索引信息页面)相关,则元组可选择地包含诸如索引页面的标题、该页面的通用资源定位器(″URL″)、估计索引页面与该查询的关系的相关性分值、描述性文本等相关字段。示例的优先级可根据网络机器人对索引页面与查询的相关性归一化估计。如果网络机器人不检索索引页面,则它对从每个搜索引擎返还的该响应的归一化相关性估计值求和。如果搜索引擎不返还一相关估计值,则使用默认值。然后,通过对所返还的分值进行线性调节到具有例如1000的公共最大值,然后把经调节的分值与可信度因子相乘,从而对获得的相关性估计值进行归一化。此可信度因子的范围从0到1,它是特定信息源自身相关性估计值的可靠性的预定估计值。例如,可通过对信息源的相关性估计值进行实验来确定该因子。或者,用户可请求网络机器人来检索该页面,以进行其自身的相关性估计。在一示例实施例中,对于请求出现所有查询字或任何查询字的查询,通过扫描页面并计算实际出现的查询字的数目,然后对此计数进行定标,使出现所有的字导致公共的最大相关值,这样来确定此估计值。对于请求出现短语的查询,例如通过从公共最大值中减去在该页面中短语的每个字离开该短语中后续字的距离平方的归一化总数来确定此估计值。从而,如果该短语在页面中连续出现,则相关性高,而如果该短语的字在页面中散布得很开,则相关性低。
总之,对于大多数信息域,从例如在WWW搜索引擎的例子中所进行的相关性计算来确定优先级。然而,对于诸如联机软件供应商等某些领域,可简单地从响应元组的一个或多个数值字段的值中来确定优先级。
包装器数据库
描述信息源及其能力,尤其是在其查询格式和响应格式中,较佳方式是以称为包装器的压缩的模块化说明性描述。由于机器人可访问几百到上千个信息源,所以对这些源的描述最好是压缩的,使其只需要最少的存储量。此外,由于新的信息源频繁地产生且现有的源也频繁地改变其格式,所以方便地维持源的描述是重要的。模块化的说明性描述而非复杂的过程化描述有助于这种维护。在本发明的一个实施例中,可由用于具有足够规范格式的信息源的独立模块来学习包装器。
对于每个信息源,在示例实施例中,每个包装器最好包括以下信息:
1.信息源的通用资源定位器(″URL″)地址;
2.源的概念类;
3.对从例如字或短语等查询自变量映射到用于询问该源(包括对任何、所有、短语或邻近查询的部分(site)支持)的查询字段或HTML所定义的形式的描述;
4.对能从其它信息和外来格式化素材中分析相关信息的查询响应或HTML页面布局的格式的描述。
最好至少以本发明的包装器描述语言来编写第3和第4项。
网络机器人可以各种方式来检索包装器。在一个实施例中,信息源本身可在网络机器人请求时提供该信息源自己的包装器。在另一个实施例中,网络机器人可以各种方式来提供了它自己的包装器。例如,可在网络机器人内建立包装器,尤其是在网络机器人只访问少量信息源时。此外,可把包装器存储到本地数据库中或可根据来自中央数据库的命令而被下载。
本发明的包装器描述语言(以下叫做″WDL″)有利于通过使用组合了来自文法和规范表达式的特征的说明性描述格式对查询、形式和页面进行语义上的描述。这里示出这种描述语义的一个例子。在后面部分对其进行详细描述。所使用的语法遵循本领域内的技术人员所公知的用于规定文法(包括规范表达式)的约定。例如,见Schwartz,1993,Learning Perl,O’Reilly & Associates,Inc.,chapter 7;Aho等人,1986,Compilers Principles,Techniques,and Tools,Addison WesleyPublishing Co.,section 3.3。
以下是从WWW搜索引擎返还的典型页面的示例WDL描述。WDL的解释程序使用页面描述来分析页面并执行任何指定的动作语句。注意,″stuff要素)″是WDL中所保留的一个字,它使任何字符串与第一次出现的强制下列串文字匹配。
    <page>∷=stuff″<dl>″<item>*.*$

    <item>∷=stuff″<dt>″stuff″=\″″(stuff)″\″><strong>″

            (stuff)″</strong/></a>″stuff″<dd>″(stuff)

            ″<br>″{output($0,$1,$2,500)}
它描述了页面除了其它数据以外还由零个或多个项目的序列构成。更具体来说,规定页面由stuff、串<dl>、零个或多个项目、零个或多个字符(″.″)以及最后由页面的结尾(″$″)来组成。一般,一个项目包括以(stuff)所标记并依次叫做$0、$1和$2的三个相关性字段,当一个项目被识别时以″output()″语句来输出这些字段。具体来说,规定一个项目由stuff、串<dt>、多个stuff、串‘=″’、以下以$0所引用的第一重要字段、串‘″><strong>’、以下以$1所引用的第二重要字段、串″</strong></a>″、多个stuff、串″<dd>″、以下以$2所引用的第三重要字段、串″<br>″所组成。当一<item>匹配时用联编(bindings)来规定变量$0、$1和$2的输出的情况下,在识别每个项目时执行括号内的动作语句。
网络机器人系统
可把一个网络机器人的功能结构以各种方法分配给系统硬件部件。在任何情况下,较佳的选择方法取决于哪一个功能定位实现快速的响应和合理的成本。图4针对先前的总体描述从总体上示出示例网络机器人的硬件实施例和选项。它示出用户计算机单元51-56、网络57、信息源58和网络机器人服务器计算机59-61的相互关系。计算机51是一用户计算机,它包括处理器、存储器和各种相连的外围设备。这些外围设备包括显示器件52或与用户进行交互动作的其它器件、网络附属件54、可选的硬盘存储器53等。计算机51还可以是没有永久存储器的网络器件、PC、工作站或更强大的计算机。计算机51最好是运行Windows操作系统、Macintosh操作系统或UNIX之一的PC或工作站。用户计算机51的存储器中除了有其它软件以外,还有本地网络机器人软件55和本地系统部件56。本地网络机器人软件实现一个或多个网络机器人功能。本地系统部件例如可包括Web浏览器。
网络57可以是具有多个与其相连接的信息源58的任何网络,可以根据主题在概念上对这些信息源58进行任意分类而成为信息域。在一较佳实施例中,网络57是支持包括诸如FTP、HTTP等用户层协议的TCP/IP协议的公共因特网或专用企业网。这些信息源是服务器计算机,它们通过使用网络57所支持的协议而获得它们所存储的信息。这些信息可包括期刊、报纸等的数据库、与特定商业、教学或其它类型的组织有关或产生的信息,用于电子商务的工具等。
在这种网络中,网络机器人可具有各种实施例。在一完全本地的实施例中,所有的网络机器人功能放在用户计算机51上的本地网络机器人软件55中,在该实施例中,用户计算机必须具有足够的处理和存储能力。在另一个实施例中,一个或多个所揭示的网络机器人功能可分布于其它挂在网络上的计算机中。
例如,计算机59是接受用于从其包装器数据库下载包装器的请求的包装器服务器。可使用能存储和检索压缩的文本描述的任何数据管理系统来把包装器数据库存储在存储器或盘片上。计算机60是通过接受查询并从存储有与其有关的信息的几万或几十万个信息源中返还N个最相关的信息源从而来查询路由选择的查询服务器。计算机61是通过接受用户查询并返还搜索结果以进行综合器模块功能的网络机器人服务器,它多半要使用包装器服务器59和查询服务器60的设备。由这些网络服务器,本地网络机器人软件最好只支持可被完全委托给Web浏览器的用户界面。或者,它还可包括向查询服务器59进行查询路由选择请求并向包装器服务器60进行包装器请求的聚合引擎。此外,它可包括后面两个功能中的一个功能或这两个功能。
可给网络机器人系统的各种计算机提供来自计算机可读媒体或通过网络安装的用于实现本发明的方法的软件。本发明适用于诸如磁盘、磁带和CD-ROM等公知的磁性和光学媒体。
5.2.I/O管理器
I/O管理器模块为综合器模块实行硬件、操作系统和网络专用连接。网络连接包括发送请求并接收来自与网络连结的信息源的响应的任务。本发明的网络机器人的一个重要应用是在因特网上进行信息检索。在此应用中,I/O管理器负责实行WWW、Gopher、FTP、因特网工具等的相关协议。或者,为了提高响应时间,I/O管理器可暂时高速缓存页面和其它数据。
操作系统连接包括对用户界面模块进行窗口管理并访问可能存在的包装器数据库的任务。
I/O管理器最好由诸如Java.awt软件包等市售的协议堆栈、窗口库和其它工具构成。在某些实施例中,可由挂在网络上的计算机的其它系统部件来进行或多或少的I/O管理器功能。或者,把I/O管理器设计成可被定标成多个装置,且不需要多线程或可重入代码,以及设计成为跨平台的和持久的。
5.3.聚合引擎
在较佳实施例中,通过以下流程来进行先前对本发明的聚合引擎元件所述的功能。平行地进行对信息源的搜索,这是因为传输所有的请求而无需任何响应。
1.接收来自用户界面模块的用户查询;
2.进行查询路由选择,以确定与此用户查询最相关的N个信息源;
3.对于N个相关信息源中的每个信息源,实行:
    A.检索该信息源的包装器(例如,从该信息源本身或从本地或远程包装器数据库);
    B.由包装器来引导,把用户查询格式化成为该信息源所需的的形式或格式;
    C.把经翻译的命令转移到I/O模块以传送到此信息源;
4.将响应清单进行初始化成空清单;
5.直至达到用户指定时限,实行:
A.当信息源响应已被I/O模块接收到并转移到综合器时,则:
    i.由该信息源的包装器所引导,分析该响应来理解所返还的信息,丢弃专用于地点(site-specific)的格式化文本和其它无关的素材,并使相关字段集合成元组;
    ii.把每个元组加到元组清单中,或者进行优先级排列、复制、除去等;
B.等待下一个响应;
6.可按请求把所产生的元组的清单交付给用户界面模块,例如该请求可通过用户的show-me-button或more-button控制键而启动。
在查询多个信息源时,最好在步骤6给用户界面模块继而给用户显示从这些响应中所提取的元组的单个合并清单,该清单是依据每个元组对用户的重要性或相关性的估计来排序的。最好依据专用于网络机器人所指向的信息域的方法来进行这样的估计。对于某些领域,可从元组中一个或多个数据字段的值中直接进行此重要性估计。例如,在电子购物的领域中,依据用户的喜好,重要性只与价格或交付日期相关。然而,对于大多数领域,依据所返还信息的相关性来进行此重要性估计,这必须通过检查来自每个源的响应来确定。
在此相关性确定的一个较佳实施例中,用户有权选择是否让网络机器人自己检查所有的信息页面。如果用户如此选择,则由网络机器人依据领域专用Analyze函数来确定相关性。在信息查询的领域中,示例的Analyze函数在所返还的响应中找到查询字的数目和文字。对于关键字查询,存在频率较大的较多关键字的响应较相关。对于基于短语的查询,短语的字较靠近的响应有更大的相关,例如这些字在一个句子中或者甚至是连续的。在其它领域中,提供适当的Analyze函数。
如果用户选择不让网络机器人来检查这些响应,则网络机器人依赖从信息源返还的相关性估计值。如果特定的源未返还相关性估计值,则使用默认值。然后把这些估计值归一化到如0和1000之间,并与可信度排列因子相乘。此可信度因子的范围从0到1,它是对特定信息源本身的相关性估计值的可靠性的预定估计。例如,可通过对信息源的估计值进行实验来确定该因子。当从两个或多个源返还相同的元组时,把来自所有这些源的相关值相组合。或者,调节从每个源返还的相关性估计值而使它们在归一化范围内具有均匀的分布。
在一特定的详细实施例中,依据以下流程来进行此确定。这里,查询路由选择已确定K个信息源source_k构成的清单并已返还其可信度等级crank_k,k从1到K。这些源中的每个源已被查询并返还了响应,且已从这些响应中提取了信息源元组tuples_j构成的K个清单,这里j从1到length_k。以验证标志V来记录用户对网络机器人分析的喜好。变量t.score代表元组t的合成相关性分值;变量t.sourcescore_k代表对于从中提取元组t的响应,从:信息source_k所返还的相关性估计值。
输入:从查询路由选择系统获得的K个源与其可信度等级对(source_k,crank_k)的清单;从源source_k获得的长度length_k的元组tuples_k的K个排序清单;以及从用户喜好获得的验证标志V(布尔)
输出:以相关性排序的所有元组的合并清单。
/*主程序*/
    IF(V is true)THEN

      FOREACH k=1..K

        FOREACH tuple t in tuples_k

          page=the HTML page that tuple t points to.

            download if necessary

          t.score=Analyze(页面);

    ELSE/*Vis false*/

      FOREACH k=1..K

        NormalizeSores(tuples_k)

        AdjustByHeight(tuples_k)

        AdjustByServiceRanking(tuples_k)
/*把结果元组t合并到MERGED_LIST中,并从信息源所返还的分值t.sourcescore_k中确定合成的相关性分值t.score;把从多个源返还的相同元组的合成分值递增来自每个源的源分值*/
    FOREACH k=1..K

      FOREACH tuple t in tuples_k

        IF t is not in the MERGED_LIST THEN

          Add t to the MERGED_LIST

          t.score=t.sourcescore_k
				
				<dp n="d15"/>
             ELSE

               t.score=t.score+t.sourcescore_k

             ENDIF

    ENDIF

    SORT all tuples t by t.score and discard duplicates

    OUTPUT sorted tuples
EXIT/*完成相关性排列*/
/*子程序*/
    SUBROUTINE NormalizeScores(tuples_k)
/*如果information source_k返还相关性估计值,则进行归一化而使它们落在0到1000的范围内;否则,使用默认的相关性估计值*/
  /*″s″是来自source_k的元组清单上第一个元组的第K个信息源的相关性分值*/
      s=tuples_k[1].sourcescore_k

      IF(s==0)THEN

          /*此信息源不返还分值,因此使用默认值*/

          FOREACH each tuple t in tuples_k

            t.sourcescore_k=1000

      ELSE

        scaling_factor=1000.0/s;

        FOREACH tuple t in tuples_k

          t.sourcescore_k=t.sourcescore_k*

        scaling_factor;

      ENDIF

    ENDSUB

    SUBROUTINE AdjustByHeight(tuples_k)
/*把源分值调节到具有均匀的百等分分布;对于10个元组的例子,把第一元组的源分值调节到其源分值的100%,把第二元组的源分值调节到其源分值的90%等*/
      percent_step=100/Length_k;
				
				<dp n="d16"/>
      percent_off=0;

      FOREACH tuples_k中的元组t

        t.sourcescore_k=t.sourcescore_k*(100-percent_off)/100;

        percent_off=percent_off+percent_step;

    ENDSUB

    SUBROUTINE AdjustByServiceRanking(tuples_k)
/*给每个服务分配表示对其返还的源分值给出的可信度的百等分排列;此排列用于对所返还的每个元组的源分值进行定标;例如,90%的可信度排列意味着每个源分值被定标0.9*/
      FOREACH tuple t in tuples_k

        t.sourcescore k=t.sourcescore_k*crank_k

    ENDSUB
本领域内的技术人员应知道,可把这些流程变为以相同的方式实行相同的功能的常规变化和改进。尤其是,可使用归一化范围的其它值和信息源相关性估计的默认值。本发明包括这种程序上的变化。最好以C++来实现这些流程,但它们也可以用任何过程编程语言或面向对象的编程语言来实现。
5.4.查询路由器
查询路由器接收表示为字或关键字清单的用户查询作为输入,并返还以与输入查询的相关性来排序的N个信息源的清单作为输出。以速度和广泛性来优化这些信息源的确定。宁可偶尔包括无关信息源向不要忽略相关的源。
较佳的查询路由器是基于把相关概念分配给信息源和查询字的原理。预先选择一组概念来描述一个或多个网络机器人所指向的一个或多个信息域的信息源。对于这些域中的每个信息源,判断该源是否与每个选中的概念相关。此外,检查在可能的查询中出现的每个字,以确定哪一个选中的概念与该字相关。然后,在接收到一查询的字或关键字时,确定与这些字相关的概念,然后找到与这些概念相关的信息源。通过组合该源与该查询的所有概念的各个相关性来确定每个源的排序的相关性。最好通过对此查询类型产生分开的数据来处理以短语为基础的查询的情况。
此流程的较佳实施例利用包含相关性信息的四个表。以下,选择W比可能的查询中所出现的字的数目大一些,例如10%;C为选中概念的数目;S为信息域中信息源的数目。WORD2CONCEPT[]是W个C位(bit)矢量的表,这里一个字的矢量的C位表示哪C个概念与该字相关。CONCEPT2SOURCE[][]是一C乘S的表。对于C个概念和S个源中的每一个,该表的相应表目包含此源与此概念的相关值。例如,如果表目<i,j>等于5,则第j个信息源相对于第i个概念的相关权重为5。在以字进行搜索时使用CONCEPT2SOURCE[][]。同样,对于以短语进行搜索,表CONCEPT2PHRASE[][]也使概念与源相关。最后,DEFAULT-RELEVANCE[][]具有对于S个信息源中每一个的默认相关权重。
本较佳实施例实行以下流程。
1.对于S个信息源中的每一个,设定RELEVANCE[j]=DEFAULT-RELEVANCE[j];
2.对于用户查询中的每个字,实行:
A.对该字计算散列函数,从而获得位于零和W之间的数目M。任何适当的散列函数都适用于此流程。在Sedgewick,1990,Algorithms in C,Addison-WesleyPublishingCo.,Chapter 16中找到一示例的散列函数。
B.令C位矢量V等于WORD2CONCEPT[M];
C.通过进行以下程序而把V中所有概念的相关性与这些信息源的相关性相组合:
    For i from 0 to C,do:

    If(i-th bit of V is ′1′)THEN

        FOR j=1 to S DO

        RELEVANCE[j]=RELEVANCE[j]+CONCEPT2SOURCE[i,j]
还可使用不同于″+″的单调递增函数来把各个概念相关组合成最终的相关;
D.例如通过把用户查询中所有字的相关加在一起来组合这些相关。
3.在以短语进行搜索的情况下,另外要实行:
A.串连用户查询短语中所有的字;
B.对该短语计算散列函数并获得M,设定C位矢量V等于WORD2CONCEPT[M];
C.通过进行以下程序而把V中所有概念的相关与这些信息源的相关相组合:
    For i from 0 to C,实行:
				
				<dp n="d18"/>
    If(i-th bit ot V is ′1′)IHEN

        FOR j=1 to S DO

        RELEVANCE[j]=CONCEPT2PHRASE[i,j]
4.根据这些信息源的RELEVANCE对它们进行排序,并返还N个最相关的源。
本领域内的技术人员应知道,此过程适合于以相同的方式实行相同的功能的程序的变化和改进。本发明包括这种程序上的变化。
最好以C++来实现此流程,但它也可以任何过程编程语言或面向对象的编程语言来实现。在查询路由器保存有与大量(例如几万)个信息源有关的信息的情况下,最好以服务器计算机上的服务流程来实现此查询路由器,以适应查询路由选择所需的数据结构和处理要求。
表WORD2CONCEPT的示例构造以选择表示所考虑的信息域特征的概念并确定可能在用户查询中产生的字和短语开始。对于每个概念,进行以下操作。把与该概念有关或此概念所涉及的字和短语赋给串数组KEYS[]以及PHRASES[]。然后,实行以下流程。
      FOR i equals 1 to the number of element in KEYS[],DO

          Apply the previously used hash function to KEYS[i]to obtain a number
between 0 and W

          SET the bit matching the current concept in WORD2CONCEPT[M].

      FOR j equals 1 to the number of elements in PHRASES[],DO

          Apply the previously used hash function to KEYS[i]to obtain a number
between 0 and W

          SET the bit matching the current concept in WORD2CONCEPT[M].
对每个选中的概念重复这些操作。或者,为了给概念匹配保持正确的串,可使用开放式或封闭式散列来存储概念信息以及串信息。
5.5.包装器定义语言
这一部分首先提出使用包装器中的WDL时的引导性资料。接着,详细地描述WDL的两个主要成分-动作语言和规范表达式语言。最后,提出WDL的示例实施例。
包装器是对信息源的描述,它描述了网络机器人应如何与信息源进行交互动作,尤其是如何对该信息源的请求进行格式化以及如何理解来自信息源的响应。网络机器人需要与网络上的成百上千个信息地点进行有效的交互动作。此交互动作提出了两个要求:第一,压缩地存储使用以WDL编码的表示对信息源所进行的描述;第二,使用此描述来理解该信息源。例如,目前网络机器人需要把对一源的请求进行格式化并从该源所返还的页面中分析有用的信息,同时忽略无关的格式化信息。随着信息源变得更加功能化,网络机器人将需要处理比简单的请求-响应对更为复杂的交互动作。因此,包装器和WDL最好具有以下特征:
1)WDL描述比例如C++中的描述更容易编写。这是重要的,因为新的信息源频繁地产生且现有的服务频繁地改变其格式。或者,也可使用信息域(其中的响应具有规范的预定格式)中的机器学习技术而自动地产生包装器描述。
2)包装器描述很少。这是重要的,因此,例如可把它们存储在本地的数据库中,或者即使经由一慢的网络连接也可把它们从一服务器快速地传送到在一客户端运行的网络机器人处。或者,信息源可被请求时提供它们自己的包装器。
3)可自动地把WDL描述编译成快速的有限状态自动机,该自动机可快速地分析由信息源所返还的信息。
4)使用具有WDL的包装器使得网络机器人可适应于未来的新型信息格式和新型的信息服务器交互动作。
包装器描述最好规定至少两个流程:第一,向信息源请求信息,例如,如何从一源中取得适当的经HTML格式化的页面;第二,如何分析返还的页面来提取相关数据。为了进行第一个流程,WDL包括动作语言成分,它是可扩展的表达式和语句的语言。为了进行第二个流程,WDL包括规范表达式语言成分,它是规定规范表达式模式匹配工具的广泛的新手段。
在另一个实施例中,网络机器人可利用为本领域内的技术人员所公知的其它模式匹配工具。例如,可以用上下文无关语言规约(″CFL″)来替换规范表达式成分。在此情况下,WDL的实现可遵循构成编译器的结构的公知技术,例如YACC。然而,在可能的情况下,规范表达式模式匹配是较佳的,这是因为其规约的明确性以及快速的执行。
规范表达式成分的一个例子
规范表达式有利于描述从许多信息源返还的信息的格式。WDL的规范表达式成分以几个新的方式把以前的规范表达式匹配工具予以扩大。第一,它使得可在识别规范表达式时执行例如语句和表达式等动作语言的编程语言工具,并且具有以整个识别期间所识别的局部匹配来确定的变量联编。第二,此较佳实施例把规范表达式编译成为压缩而有效的有限状态自动机。第三,它鼓励以嵌套的方式来有效而直观地表达复杂的规范表达式。第四,它具有有效的无回溯(backtrack-free)填充方法。
示例的包装器适用于因特网信息搜索引擎并以WDL来编写。以备注来说明每个部分的重要性,备注用″/*″和″*/.″括起来。
/*把输入的查询字的清单从聚合引擎传递到包装器,该聚合引擎执行该信息源的包装器。动作语言的argv()函数提取该输入查询字的清单。*/
{$keywords=argv(2)};
/*通过串连(concatenating)(以动作语言的算符″.″来表示)三个分离的串来计算待发送到信息源的请求:一,信息源的因特网URL地址以及最初的查询格式串;二,要搜索的查询字;三,该信息源的查询格式串的其余部分;以及*/
$url=″http://searcher.source.com/searcher.cgi?query=″.$keywords.″&onlyrr=0″;
/*fetch动作语句将该查询送到用于网络传输的I/O模块,然后等待经HTML格式化的响应。*/
$page=fetch(0,$url,′′);
/*使用以下的规范表达式文法来分析经HTML格式化响应文本。*/}
$result=parse($page,<page>);}
/*来自此示例源的响应由包含零个或多个信息项的页构成。这是用<page>和<item>的表达式以规范表达式语言分层方式来描述的,这里<page>指若干<item>。尤其是,一页包括后接串″results returned...″然后后接零个或多个项目的大量文本。*/
<page>∷=stuff′results returned,ranked by′<item>*END
/*每个项目由无关文本、HTML格式化代码和相关数据字段构成。相关数据字段包含在括号中并依次以$0、$1和$2来表示。当在确认一<item>时执行动作语言的″output″语句时,把这些字段以及数目500作为元组输出。<item>的定义的特定意义将在下一部分中变得十分明显。*/
    <item>∷=stuff′<hr>′stuff′<center><b><a href=″′
				
				<dp n="d21"/>
            (stuff)′″′stuff′>′(stuff)′</a>′

            stuff′<font size=-1>′(stuff)′</font>′

            {output($0,$1,$2,500);}END
5.5.1.WDL成分的描述
这一部分描述WDL的动作语言和规范表达式成分的较佳特征。本发明不限于所提出的描述。这些描述可利用用于描述文法包括规范表达式的公知方法,本领域内的技术人员应知道有许多基本上等效的描述。这种等效的描述包括通过对所描述的语法元素进行更名或者通过把公知的文法变换应用于所提出的语法而获得的那些,但不限于此。本发明也包括这些基本上等效的描述。
动作语言成分
动作语言包括某些较佳的基础级特征:赋值语句;诸如″if″和″while″构成的顺序语句;元组输出语句;串和数值表达式;串、数值和布尔算符;以及某些内部的函数。对本领域内的技术人员很明显的是,可以用与这些特征稍稍不同的选择来构成具有等效的语义表达能力的基础级动作语言。例如,可以goto语句来替换while语句。本发明的动作语言成分包括这些与所揭示的语义等效的组成。此外,在可选的实施例中,可以用这些附加的特征来扩大较佳的基础级特征,诸如:″for″或″repeat″循环等附加的顺序语句;用户所定义的函数;诸如在C或C++中出现的附加的串、数值和布尔表达式和算符;附加的内部函数;以及数组变量。可把这些附加的特征以公知的方式加到较佳的基本语言中。例如,见Aho等人在1986,Compilers Principles,Techniques,and Tools,Addison Wesley Publishing Co.中的描述。
通过以下由标准表示法来表示的文法来给出较佳的基本动作语言的语法。
Statement∷=

    $VariableName″=″Expression″;″

    |″if″Expression Statement[″else″Statement]

    |″while″Expression Statement

    |″{″Statement*″}″

    |″output″″(″[Expression(″,″Expression}*]″)″″;″
Expression∷=

    string-constant
				
				<dp n="d22"/>
    |float-constant

    |$variableName

    |Expression op Expression

    |″(″Expression″)″

    |functionName″(″[Expression{″,″Expression]*]″)″
于是,根据语句和表达式来定义动作语言成分。一个语句可以是:一赋值语句,它给标量变量赋新的值;一if语句;一while循环;一复合语句,它是由″{″和″}″所包围的一系列其它语句;或者一输出语句。除了输出语句以外,语句函数的方式都与例如C、C++或Pascal等其它过程编程语言中的方式相同。对于if和while语句,如果条件自变量是一非零数字或非空串(即不是空串″″),则认为该自变量为真。OUTPUT语句使得包装器把在来自信息源的响应中匹配的信息返还到执行该包装器的网络机器人模块。例如,执行语句″output(arg_1...,arg_n)″使得将把元组<arg_1...,arg_n>从包装器返还网络机器人。
一个表达式可以是:一个串常数,它是由引号所包围的符号串;一浮点数;一变量名,它是前面有美元符号的一个名称或一个整数;一加到周围的两个子表达式的插入算符;一子表达式,它被包围在″(″和″)″中;或者对内部函数的一个调用。
此外,该语言还提供了过程编程语言中的算符标准,包括以下:算术运算符(″+″、″-″、″*″、″/″);数值比较运算符(″<″、″=″、″>″、″<=″、″>=″、″!=″);串比较运算符(″lt″、″eq″、″gt″、″le″、″ge″、″ne″);串并置运算符(″.″);以及布尔算符(″&&″、″||″、″!″)。这些运算符具有以下语义:
1)+、-、*、/:对两边的表达式进行所指定的算术运算;
2).:并置周围的串;
3)==、<=、>=、<、>、!=:对两边的数字进行指定的数值比较并相应地返还浮点值0.0或1.0;
4)eq、le、ge、lt、gt、ne:对两边串的ASCII码进行字符对字符的比较,并返回浮点值0.0或1.0;
5)!:如果自变量为数字0或串″″则返还1,否则返还0;
6)&&:估计第一自变量,如果第一自变量为零或″″,则停止并返还该值,否则估计第二自变量并返还后者的值;
7)||:估计第一自变量,如果第一自变量不是零也不是″″,则立即停止并返还该值;否则估计第二自变量并返还后者的值。
这些运算符从高到低依次具有以下优先级:
1.括号内的任何表达式(最高优先级)
2.* 、/
3.+、-
4.==、<=、>=、<、>、!=、ne、eq、le、lt、gt、ge
5.!(布尔非)
6.&&(布尔和)
7.||(布尔或)(最低优先级)
所有的算符都是左相连的。
不需要变量说明。第一,通过在前面加上″$″来区分动作语言中的所有变量。代表以规范表达式来匹配的子串的那些特定变量由″$″后接一个整数来构成,例如,$0或$1。第二,在运行时,以动态方式在串和浮点类型之间进行自动的类型转换。如果算符希望数字而得到了串,则通过通用C库函数atof()把串转换成数字,该函数把数字的ASCII表示转换成其内部浮点表示。如果算符希望串而得到了数字,则它使用C库函数sprintf(...,″%f″)把它转换成串。第三,给还未赋值的参考变量设定适当的默认值0或″″。
动作语言成分具有几个内部的函数。以下是较佳的基本内部函数。
1)argc()、argv():当网络机器人执行包装器时,它可给包装器传递一个或多个自变量。这些自变量通常代表由用户所提供的查询参数、查询字或查询关键字。通过返还传递到包装器的自变量数目的函数argc()以及返还第n个自变量的函数argv(n)来访问包装器中的这些自变量。
2)fetch():此函数最好与I/O模块相连,以依据适当的协议经由网络把包含信息源的网络地址和可能的查询参数的串转移到被寻址的信息源,并返还包含该信息源的响应的串。包装器使用该函数来查询信息源并检索页。
3)parse(<string>,<nonterminal>):该函数采用一个串并尝试把它与相应于给出的<nonterminal>(如WDL的规范表达式语言成分所定义)的规范表达式相匹配。如果匹配成功,则该函数返还″1″,如果该串与规范表达式不匹配则返还″0″。包装器使用该函数来分析信息源的响应。
示例的包装器包括以下的一系列动作语言语句。首先是使用argc()和argv()的一系列语句,以获得用户查询参数并以对例如$url等串变量进行初始化,使该串变量包含信息源中适当页的URL以及经适当格式化的查询。接着,赋值语句″$html_text=fetch($url)″把查询-响应页引入例如$html_text等另一个串变量中。最后,函数parse($html_text,<page>)尝试把返还的html文本与描述被搜索页的规范表达式<page>相匹配。
规范表达式语言
WDL的规范表达式(″reg-exp″)成分把串与规范表达式相匹配。已发现,规范表达式便于描述从大量信息源返还的响应的格式。然而,本发明的reg-exp语言能如此匹配该信息,从而可以比诸如AWK或Perl等以前的语言和系统更快而且更方便的方式来提取相关字段。规范表达式成分包括解决以前匹配系统的问题的新工具从而使它可被网络机器人所使用。
第一个新工具使得以类似于上下文无关文法(它通过用于文法中非终结点的一组规则来规定)的方式来分解规范表达式的规约。例如,见Aho等人在1986,Compilers Principles,Techniques,and Tools,Addison Wesley Publishing Co.,section4.2中的描述。在以前的系统中,需要编写单个规范表达式而表示来自信息源的页的格式,这样常导致该表达式非常巨大而复杂,这样的表达式难于编写、理解和维护。为了解决现有系统的这个问题,reg-exp成分通过用于规范表达式成分的一组规则来规定一规范表达式。以非终结点来标注这些成分。然而,与上下文无关文法相反,不允许reg-exp成分中的这组规则是递归的或者相互递归的。换句话说,用于一特定非终结点的规则不能直接或间接地涉及与该特定非终结点有关的其它规则。
以下示例使用一组规则和非终结点。定义信息响应的一个顶层非终结点可以是:
<page>∷=<head><item>*<tail>END.
它规定了该响应是由标题(head),接着是零或多个项目,然后尾部所构成的。关键字″END″代表规则的结尾。该规则的右边项(“RHS”)的第二层非终结点<head>、<item>和<tail>由它们自己的规则来定义:
    <head>∷=″Results of your search:\n″END;

    <item>∷=″Data:..\n″END;
				
				<dp n="d25"/>
    <tail>∷=″No more results\n″END.
为了执行这些规则,reg-exp成分编译器把用于<head>、<item>和<tail>的规则的RHS代入<page>的RHS。这个结果就好象包装器包含巨大而复杂的合成顶层规则:
<page>∷=″Results of your search:\n″(″Data:...\n″)*″No more results\n″END
如果第二层规则的RHS部分包含更多的非终结点,则编译器将继续进行适当的代换,直到顶层规则的组合规则的RHS上不再有非终结点。由于没有递归或相互递归,所以该代换终结。
第二个新的功能是允许跳过串中的字符组而不进行回溯。在以前的规范表达式匹配系统中,这种普遍要求的实现方式需要在一堆栈上存储许多回溯点,因而可能导致广泛的回溯。例如,已有技术中与任何字符的任何次出现匹配的Perl表达方式(idiom)″.*″或者与所有的非数字字符直至第一次出现的数字匹配的Perl表达方式″[^\d]*\d可在匹配期间引起广泛的回溯。由于应对信息响应进行快速地分析,所以它并不是高效的而且也不是较佳的。例如,见Schwartz在1993,LearningPerl,O’Reilly & Associates,Inc.,chapter 7中的描述。为了解决这个问题,reg-exp成分对此通用表达方式引入了简单而直接的语法:
stuff″literal-string″
这里″stuff″是一保留的字。把stuff定义为与当前字符中的所有字符匹配,直至(但不包括)第一次出现的串″literal-string″,它是一串文字。该结构使得可以紧凑、高效而与回溯无关地来实现此通用且重要的表达方式。
第三个功能是允许从任意复杂的规范表达式中提取相关数据字段。可把动作语义语句嵌入非终结点的RHS,以便在与该非终结点匹配且每当出现该非终结点的匹配时现行的变量联编时执行。在先前的例子中,可如下扩展<item>的定义:
<item>∷=″Data:″(stuff)″\n″{output($0);}END.
每当<item>被匹配时,把$0设定为与括号中的stuff匹配的串,然后执行输出语句。在此情况下,$0被联编到后接″Data:″的任何字符并下一行字符之前。
例如AWK和Perl等以前的系统没有这种功能。虽然它们也设定诸如$0、$1等变量,但它们只在与定义<page>的单个合成的规范表达式匹配后才这么做。换句话说,整个页是在变量设定前匹配的。因此,在AWK和Perl中,如果在<page>上没有一个以上的<item>,则除了最后的一个<item>以外将丢失所有的相关数据字段。WDL的reg-exp成分通过使执行多次(每次对应于每个非终结点匹配)的动作的规约,每次带有不同的变量联编,来解决这个问题。
现在转到描述reg-exp语言,它包括某些较佳的基础级特征:对非终结点规范表达式的定义;在规范表达式规则中嵌入动作语言语句;用于表达交替和重复的算符;以及文字串匹配。对本领域内的技术人员很明显的是,可以用稍稍不同的特征选择来构成具有等效的语法表达能力的较佳的基础级reg-exp语言,且WDL的reg-exp语言成分包括这些公知的等价物。尤其是,reg-exp语言包括应用于以下规则的变量更名和公知的文法变换。
在可选的实施例中,可以用诸如附加的特征来扩大较佳的基本特征,诸如:特定逻辑加(disjunction)(″||″);重复任意整数;匹配到字符类;本地串存储;以及固定(anchor)字符。这些附加的特征都是标准的,就除了特定逻辑加以外,它使得所列出的选择对象(alternative)的匹配与串分析同步,返还第一选择对象。相反,规范逻辑加以列出的顺序匹配每个选择对象,进行回溯,直到成功。可把附加的特征以公知的方式应用于基础级语言。例如,见Schwartz在1993,LearningPerl,O’Reilly & Associates,Inc.;Aho等人在1986,Compilers Principles,Techniques,and Tools,Addison Wesley Publishing Co.;Hopcroft等人在Introduction to Automata Theory,Languages,and Computation,Addison WesleyPublishing Co.中的描述。
在另一个实施例中,为了提高规范表达式匹配的性能,可加上说明来控制回溯。如果已知规则的某些部分不需要回溯,则可把该部分与说明一起用括号括起来,从而告诉编译器和解释器来产生有限状态机,而不提供任何回溯。这使得能对规则的这一部分进行更有效地匹配。
通过以下由标准表示法所表达的文法来给出较佳的基础级动作语言的语法。
    Rule          ∷=<nonterminal>″∷=″Regexp″END″

     Regexp        ∷=Sequence(″|″Sequence)*

    Sequence      ∷=Repetition+

    Repetition    ∷=Term″?″

                     |Term″*″

                     |Term″+″
				
				<dp n="d27"/>
                  |Term

    Term          ∷=String_In_Double_Quotes

                  |″stuff″

                     |″(″Regexp″)″

                     |<nonterminal>

                     | Action

    Action        ∷=″{″Statement*″}″
概括地说,规则规定了识别特定规范表达式的特定<nonterminal>。一个规范表达式可包括:逻辑加(″|″;顺序;零个或多个重复(″+″);一个或多个重复(″+″);以及零个或一个重复(″?″)。检索词(term)可以是:由双引号所包围的文字串;特定符号要素;加括号的规范表达;必须以另一个规则来定义的非终结点;或者以动作语言编写的语句。
包装器描述语言
一完整的包装器描述可以是:
Wrapperdescription ∷=Statement Rule*
于是,较佳的WDL实体包括动作语言的语句,它通常是一系列动作语言语句,然后是reg-exp语言的可选的一组规则,它定义了用于匹配从信息源返还的响应的规范表达式。
为了执行完整的包装器描述,如后面的描述来执行该语句。一般,该语句还包含对内部函数fetch()和parse()的调用。parse()内部函数尝试通过引用由所附的规则(每个规则定义了一个规范表达式)所定义的非终结点来匹配由fetch()返还的响应。如果规范表达式匹配成功,则执行一般被嵌入规范表达式中的所有的动作语言语句,执行多次嵌入较低级非终结点的某些动作语句,在每出现一个匹配时有操作对象(operand)联编,parse()函数返还值″1″。如果匹配不成功,则不执行嵌入的语句,且parse()函数返还值″0″。
5.5.2.WDL成分的实施
在本部分中在以下标题下来描述WDL的较佳实施例:(1)分析规范表达式规则、(2)规范表达式的中间代码产生、(3)规范表达式的运行时间解释、(4)动作语言代码产生和运行时间解释。可以理解,WDL的这个较佳实施例是一个示例。本领域内的技术人员可知道,这里所述的实施例存在其它选择的变化。例如,可以不同的方式来实施所述的流程,例如以不同的变量和各个步骤的不同次序。此外,这些流程可实施其它的算法而对例如串匹配实现相同的效果。对于另一个例子,所述的实施例揭示了解释各种中间代码的处理过程。可使用不同的中间代码。对于规范表达式语言,不同类型的节点可包括例如具有后继状态的变量清单的节点,从而避免保持后继状态的回溯堆栈。对于动作语言,替换所揭示的基于地址的中间代码,等效地还可使用基于堆栈的逆波兰(Polish)中间代码。最后,替代解释,还可使用所揭示的语法指向的方法来直接编译成机器语言。
在这一部分的其余部分,标为″1″的分析树节点包含数据″d″,且具有以″1<d;c_1,...,c_n>″所表示的子节点″c_1,...,c_n″。可以本领域内公知的方式来构成和引用这些分析树节点,例如通过指向一包含节点数据的数据区的指针。
分析规范表达式规则
编译包装器描述的较佳实施例的第一步是分析reg-exp语言的规则和动作语言的语句。该步骤的输入是定义要匹配的规范表达式的reg-exp语言的规则。从该步骤输出的是具有一组分析树形式的中间代码,有一个代码用于顶层规则,其余的分析树用于每个较低层的规则。
在一较佳实施例中,通过依据递归递降分析程序进行分析并依据语法指向的翻译程序发出分析树来进行该步骤的流程。用于先前所述reg-exp语言的语法的递归递降编译器的构造对本领域内的技术人员来说是公知的。例如,在诸如Aho等人的1986,Compilers Principles,Techniques,and Tools,Addison WesleyPublishing Co.的2.4和4.4节等书中清楚地揭示了几个例子。5.2节中的例子包含了分析树的语法指向的构造。本发明不限于本较佳实施例。其它的分析技术在本领域内是公知的,本发明包括使用诸如LL或LR分析等这些技术的实施例。见Aho等人的文章的第4章。本发明还包括本领域内所公知的产生中间代码的其它技术。一般,见Aho等人的文章的第5章。
语法指向的分析规约包括在用分析程序识别每个语法规则时所产生的分析树节点的规则。对于每一个先前的reg-exp语法规则,产生以下由该规则的非终结点来标注的下列节点:
1.Rule:产生节点″Rule<nonterminal-name;node-for-regexp>.″。这个节点用于以其非终结点名称来标注的整个规则。
2.Regexp:产生节点″Alternatives<node_for_sequence_1,...,node_for_sequence_n>.″。这是用于其它规范表达式的逻辑和(″|″)的节点,这些表达式按照所列顺序测试匹配,返还第一个成功的匹配。
3.Sequence:产生节点″Sequence<node_for_repetition_l...,node_for_repetition_n>.″。这是用于一系列规范表达式模式的节点,每个模式必须依次匹配。
4.Repetition:产生节点″Repetition<type;node_for_term>.″。这是用于重复的节点,其类型是″?″(0或1次重复)、″+″(1或多次重复)或者″*″(0或多次重复)中的一个。
5.String_In_Double_Quotes:产生节点″String<literal_string>.″。这是匹配文字串的节点。
6.Stuff:产生用于保留字″stuff″的节点″Stuff<>″。
7.(Regexp):产生节点″Sequence<OpenParenthesis<i>,node_for_Regexp,CloseParenthesis<i>>.″。这是使得在″Regexp.″进行匹配时给依次编号的变量赋值的节点。节点″OpenParenthesis<n>″是代表在依次分析当前规则的RHS时碰到的第n个开括号的节点。规则″CloseParenthesis<n>″是代表所碰到的相应第n个闭括号的节点。
8.<nonterminal>:产生用于非终结点的一个实例的节点″Nonterminal<nonterminal_name>,″。
9.Action:产生节点″Action<node_for_action_language_statement>.″。这是用于动作语言语句的一个实例的节点,其中node_for_action_language_statement代表该动作语言语句的中间代码。
在分析程序确认相应的reg-exp语言语法规则时所执行的这些规则使得产生一分析树,它由以真实结构链接的所列节点类型而形成的。把此分析树输入到该流程的随后步骤中。
产生用于规范表达式的中间代码
较佳实施例中的代码产生包括以下三个步骤:
1.对要素节点进行特定的预处理;
2.消除在顶层非终结点的RHS中出现的非终结点;以及
3.把顶层规则所获得的RHS转换成有限状态自动机(″FSA″)。
首先将从总体上描述这三个步骤,然后对其进行详细描述。
首先,必须对要素节点进行预处理,以便在今后使用产生FSA的较佳后续遍历方法。由于不能单独对一个要素元建立FSA,所以必须对要素节点和必须接在每个要素元后的文字串节点的组合建立FSA,只能把开闭括号插入一要素节点及其后面的文字串之间。为此,对分析树进行遍历,且通过以新的Stuff_And_String节点替换两个节点每个要素节点与随后的文字串被合并。新的节点还考虑到任何插入的括号。
产生代码的第二步骤用相应的诸RHS来替换顶层非终结点的RHS中所有的非终结点,以对整个规范表达式产生单个组合的规则。在此替换期间,必须对动作语言语句中出现的变量重新编号。
例如,考虑包装器
<page>∷=(″dave″)(″bill″)<a>(″dan″){output($2);}END
<a>∷=″oren″(stuff″cody″){output($0);}END
这里,<page>的输出语句中的$2指(″dan″),而<a>的输出语句中的$0指(stuff″cody″)。在替换后,如果不对输出语句中的变量重新编号,则<page>的RHS将扩展为:
<page>∷=(″dave″)(″bill″)″oren″(stuff″cody″)
     output($0);}(″dan″){output($2);}
然而,这里$0指(″dave″)而不是(stuff″cody″),而$2指(stuff″cody″)而不是(″dan″)。为了保持正确的变量赋值,必须如下所示对变量号码重新编号:
<page>∷=(″dave″)(″bill″)″oren″(stuff″cody″)
     output($2);}(″dan″){output($3);}
代码产生流程的较佳实施例的第三个步骤通过对代表顶层规则的RHS的分析树进行后续遍历(在此期间,依次把每个节点转换成FSA),把经处理和扩展的RHS转换成FSA。FSA具有几种类型的状态,最重要的是:
1.Char_branch:依据当前字符转移至(branch)256个可能的后继状态中的一个,并进到当前读取位置;
2.Action:执行一批动作语言语句;
3.Marker:在标记堆栈上记录加上或减去一定偏移的当前输入串位置;
4.Sussess:在到达时,分析已成功;
5.Fail:在到达时,当前的分析尝试已失败,必须把FSA回溯到先前的回溯点,或者,如果不能获得回溯点则失败;
6.Push:把包括FSA状态和当前输入串位置的配置压入用于今后回溯的回溯堆栈。
代码产生步骤1:预处理
通过扩展或弄平任何嵌套的序,(即嵌套在其它Sequence<>元素中的Sequence<>元素),开始对要素节点进行较佳的预处理。这是依据以下流程进行的:
    FOR nonterminal PERFORM a POSTORDER traversal of its parse tree

      At each parse tree node v

          IF(v=Sequence<c_1,...,c_n>)THEN

             WHILE(there is an i,1<=i<=n,such that

             c_i=Sequence<d_1,...,d_m>)DO

                Replace node v with a new node

                Sequence<c_1,…,c_i-1,d_1,...,d_m,c_i+1,...,c_n>
接着,以同样考虑到以下文字串和任何插入括号的Stuff_And_String节点来替换出现的每个要素节点。在包装器中每出现一个″stuff″,后面必须接一个文字串,其语义结果是″stuff″与从当前位置直到(但不包括)第一次出现随后文字串的所有字符匹配。只有开闭括号可插入诸如要素和文字串之间。在较佳实施例中,最好依据以下流程来进行此替换:
    FOR nonterminal PERFORM a POSTORDER traversal of its parse tree.

      At each node v of the parse tree

          IF(v=Sequence<c_1,...,_n>)THEN

          WHILE(there is an i,1<=i<=n,such that

          c_i=Stuff<>)DO

              Let j be the smallest j>i such that

          c_j=String<s> for some string s.

          IF there is no such j THEN signal an error.

          ELSE IF(any element ck(where i<k<j)is

                NOT either an OpenParenthesis or

                CloseParenthesis)THEN signal an error.
				
				<dp n="d32"/>
                  /*cj是该串的节点*/

                  ELSE replace node v with a new node=

                  Sequence<c_1,...,c_i-1,

                  Stuff_And_String<c_j;c_i+1,...,

                  c_j-1>,c_j+1,...,c_n>
此流程把要素节点、文字串节点、c_j以及任何插入的括号节点、...c_j-1合并成单个节点Stuff_And_String<the-string;c_i+1,...,c_j-1>。
代码产生步骤2:替换和变量更名
在完成预处理后,最好对顶层规则的RHS上的非终结点进行替换,并对任何动作语句的变量进行重新编号。替换和变量重新编号最好使用具有两个函数EXPAND_REGEXP和EXPAND_ACTION和一全局变量PAREN_COUNT的流程。从调用顶层非终结点开始,递归地调用EXPAND_REGEXP来替换RHS非终结点。把PAREN_COUNT初始化到0,在替换进行时,每碰到一个″(″时该变量就递增。这样,PAREN_COUNT具有迄今为止碰到的″(″总数的计数。然后,在替换期间,把碰到的括号重新编号,从其先前号码变到PAREN_COUNT的当前值,并以相应的方式把动作语言中的变量重新编号。例如,如果PAREN_COUNT目前为8,则以OpenParenthesis<8>节点来替换OpenParenthesis<2>,并以输出($8)语句来替换输出($2)语句。EXPAND_ACTION实行动作语句变量重新编号。最好依据如下所示来进行这些流程:
    GLOBAL VARIABLE integer PAREN_COUNT;

    FUNCTION EXPAND_REGEXP(<nt>:nonterminal):RETURNS a parse tree
with renumbered variables
/*整数数组具有新的变量号码*/
      LOCAL VARIABLE new_names[]

      LET T=parse tree for the RHS of rule for<nt>

      PERFORM a PREORDER traversal of T.

        At each node v of tree T

           IF(v=OpenParenthesis<i>)THEN

              new_names[i]=PAREN_COUNT;

              REPLACE node v with OpenParenthesis<PAREN_COUNT>
				
				<dp n="d33"/>
              PAREN_COUNT=PAREN_COUNT+1

           ELSE IF(v=CloseParenthesis<i>)THEN

              REPLACE node v with CloseParenthesis<new_names[i]>

           ELSE IF(v=Nonterminal<x>)THEN

              REPLACE node v with EXPAND_REGEXP(x)

           ELSE IF(v=Action<x>)THEN

              REPLACE node v with EXPAND_ACTION(x,new_names[])

    FUNTION EXPAND_ACTION(T:parse tree T for action language statement;
new_names[]):RETURNSa parse tree with renumbered variables

       PERFORM a PREORDER traversal of the parse tree T.

       At each node v,

          IF(v denotes variable name $i(i an integer)

          THEN    

            REPLACE node v with a new node with $i

            replaced by$(new_names[i]).
代码产生步骤3:产生有限状态自动机
产生代码的较佳实施例中的最后一个步骤产生代表经替换和处理的规范表达式的FSA。虽然产生这种FSA的算法是公知的,但在过去它们未提供例如把动作语言语句嵌入这些FSA的功能。相应地,以下描述集中在本流程较佳实施例中旨在支持动作语言语句的那些新特征以及reg-exp语言的其它新特征。
来自本流程的FSA输出在初始状态下开始其执行,输入指针设定为输入串的起始,然后依据其当前状态来执行六个基本过程中的一个。这些过程设定了新的当前状态,且一般实行由FSA所访问的一个或多个数据结构。这六种类型的状态及其过程如下:
(1)Char_branch<next_state_0,...,next_state_255>:当前状态为char_branch状态时,依据当前输入字符的ASCII值i来选择下一状态,如next_state_i,并且输入指针进到输入串中的下一字符。
(2)Marker<num,open/close_flag,offset,next_state>:当前状态为标志器状态时,把一记录压入公知为标志堆栈的运行时间堆栈,该堆栈包含输入串中碰到的括号的字符位置加上指定的偏移量,以及该括号是开还是闭的指示,把下一状态设定为next_state。示例的标志可压入表示在当前输入位置处出现的第五个开括号的记录。
(3)Action<compiled_action_statements,next_state>:当前状态为动作状态时,执行由compiled_action_statements所代表的那些动作语言语句,把下一状态设定为next_state。
(4)Success<>:当前状态为成功状态时,则已成功地匹配了一个串,且此FSA终结。
(5)Push<state,next_state>:当前状态为压入状态时,则把FSA的当前配置压入公知为回溯堆栈的运行时间堆栈,把下一状态设定为next_state。FSA配置是包含至少当前状态的标识符以及输入串中当前位置的记录。使用压入来支持规范表达式语句中的非确定性结构。示例的非确定性结构是被FSA匹配的逻辑和″reg-exprl | reg-expr2″,从而首先把一回溯状态压入回溯堆栈;然后第二步尝试运行相应于reg-expr1的FSA;如果失败,则回溯,并且(c)尝试运行相应于reg-expr2的有限状态机。
(6)Failure<>:当前状态为失败状态时,把回溯记录弹出回溯堆栈,并把下一状态和当前输入指针设定到回溯记录的内容中。如果回溯堆栈为空,则FSA不能成功地匹配输入串且终结。
使用对先前产生的分析树的后续遍历而对输入规范表达式产生FSA。在对分析树进行遍历时,把一有限状态机附加到每个节点v,该状态机与以v为根的子树所代表的子表达式匹配。此附加的有限状态机是变量v.machine的值。最终的FSA输出是在产生流程结束时附加到分析树的根部的FSA。
在遍历期间,依据本领域内的技术人员已公知的方法来产生某些有限状态机。这些状态机识别标准规范表达式的结构并可通过公知的方法来构成。产生这种标准有限状态机的一般考虑参考包括如下:Aho等人,1974,The Design AndAnalysis Of Computer Algorithms,Addison Wesley Publishing Co.,chapter 9:Aho等人,1986,Compilers Principles,Techniques,and Tools,Addison WesleyPublishing Co.,chapter 3;Hopcroft等人,1979,Introduction to Automata Theory,Languages,and Computation,Addison-Wesley Publishing Co.,Section 2.5;Sedgewick,1990,Algorithms in C,Addison-Wesley Publishing Co.,chapter 16。
此外,所揭示的流程还采用某些构成方法,它们可以在其它实施例改变。例如,可依据Boyer-Moore或其它串匹配算法来构成代表文字串的状态机。例如,见Sedgewick的文章的第19章。
较佳的流程为:
    PERFORM a POSTORDER traversal of the tree.

      At each node v.DO:

      IF(v=OpenParenthesis<n>)THEN

         SET v.machine=Marker<n,″open″,0,Success<>>

      ELSE IF(v=CloseParenthesis<n>)THEN

         SET v.machine=Marker<n,″close″,0,Success<>>

      ELSE IF(v=Action<node_for_the_action_language_statements>)THEN

         SET v.machine=Action<compiled_action_statements,Success<>>

      ELSE IF(v=String<literal_string>)THEN

         SET len=length(the-string)

         FOR i=1 to len DO

           branch_state[i]=Char_branch<s_0,s_1,...,s_255>,where all the s_j

              are Failure<>EXCEPT s_j where j is ASCII code for the i’th

              character of the-string which is Success<>

           SET v.machine=MAKE_SEQUENCE    

              (branch_state[1],...,branch_state[len]).    

      ELSE IF(v=Stuff_And_String<the-string,par_1,...,par_k>)THEN

        /*m_1可以是依据先前所述参考文献中所揭示的公知方法构成的*/

        SETm_1=a fnite state machine that scans the input string for the first

        occurrence of the end of this first occurrence.

        FOR i=1 to k DO

          SET par_i.machine=marker state appropriate to parenthesis par_iand

             having an offset of-length(the-string).

        SET v.machine=MAKE_SEQUENCE(m_1,par_1.machine,...,

           par_k.machine)。

      ELSE IF(v=Sequence<element_1,...,element_k>)THEN

        FOR i=1 to k DO
				
				<dp n="d36"/>
                SET element_i.machine=machine constructed according to this
process                 for element_i

           SET v.machine=MAKE_SEQUENCE

              (element_1.machine,...,element_k.machine)

        /*逻辑和,″|″*/

        ELSE IF(v=Alternatives<element_1,...,element_k>)THEN

          FOR i=1 to k DO

            SET element_i.machine=machine constructed according to this precess

               for element_i

          SET v.machine=element_k.machine

          FOR i=k-1 to 1 DO

            v.machine=Push<v.machine,element_i.machine>

        /*类型为″?″、″+″或″*″*/    

       ELSE IF(v=Repetition<type,element>))THEN

         SET element.machine=machine constructed according to this process for

            element

         SET v.machine=a finite state machine constructed according to methods

            disclosed in the previously cited references for this type of repetition

            element.machine
此流程使用从一系列子机中建立复合机的MAKE_SEQUENCE函数。复合机依次执行每个子机,直到一个子机失败(在此情况下复合机也失败),或者所有的子机都成功(在从情况下复合机成功)。换句话说,复合机运行第一子机;如果成功,则它运行第二子机;如果成功,则它运行第三子机等等。如果任何子机失败,即达到Failure<>状态,则复合机也失败。
    FUNCTION MAKE_SEQUENCE(machine m_1,m_2,...,m_k)

      :RETURNS machine.

      new_m=m_1;

      FOR i=2 to k DO

        Traverse the states of new m and replace any Success<>states with m_i

      RETURN new_m
这样总结了表示来自本发明的reg-exp语言的规范表达式的FSA的较佳结构。接着,描述FSA的执行。
规范表达式的运行时间解释
在较佳实施例中,通过解释在先前的代码产生步骤中所产生的结构来执行代表规范表达式的FSA。解释程序最好访问包括FSA的当前状态、对输入串的当前字符位置的指针、回溯堆栈和标志器堆栈的几个数据结构。回溯堆栈包含以解释FSA的状态为特征的记录,当尝试对输入串所进行的局部匹配失败时,则可以用本领域内公知的实行回溯的方式来使用该堆栈。配置记录包括当前状态和当前输入位置。在另一个实施例,通过实行具有潜在的下一个状态的清单的状态,可避免压入状态。
本发明的reg-exp语言的新变量联编和动作语句特征的较佳实施例利用附加堆栈即标志堆栈。这些特征的语义需要直到整个规范表达式匹配流程已成功才执行标志动作。在成功时,使用在分析期间所发生的变量联编。执行所有的动作这意味着,例如$1等单个变量在匹配成功时执行多次的同一动作语句中具有不同的联编。
按照以下方式在较佳实施例中使用标志堆栈来实现该语义。在当前解释的状态为Action<>状态时,不立即执行动作语言语句。而是把动作语句代码压到标志堆栈上。同样,当前状态为标志状态时,(它表示规范表达式定义中的一个括号),则把出现在标志状态的信息压到标志堆栈上。该信息使能找出输入串中当前变量联编的开始或结束位置。为了防止在失败的局部匹配尝试期间执行所碰到的动作语言语句,在FSA回溯时把标志堆栈弹到适当的层次。这样,回溯堆栈上的机器配置和配置记录还包括标志堆栈中的当前位置。
在最后的匹配成功时,通过从头到尾地扫描标志堆栈来执行动作语言语句。在该扫描中,按照标志状态记录的指示来设定变量联编,并按照动作状态记录的指示来执行动作。在匹配失败的情况下,不执行动作语言语句。
更具体地说,较佳实施函数的一个实施例如下:
    GLOBAL VARIABLE current_state=initialized to the initial machine state

    GLOBAL VARIABLE input_pos=initialized to the address of the beginning of

        the input string

    GLOBAL VARIABLE BT_STACK=initialized to an empty stack
				
				<dp n="d38"/>
    GLOBAL VARIABLE MARK_STACK=initialized to an empty stack

    REPEAT UNTIL one of the following clauses exits

    CASE(current_state)IS

      Char_branch<state_0,...,state_255>:

         current_state=state_(ASCII value of the current input character)

         input_pos=input_pos+1

      Marker<num,open/close_flag,offset,nextsfate>:

         push(″mark″,num,open/close_flag,input_pos+offset)

            onto MARK_STACK

         current_state=nextstate

      Action<compiled_action_code,nextstate>:

         push(″action″,compiled_action_code)onto MARK_STACK

         current_state=nextstate

      Push<state,nextstate>:

         push(state,input_pos,height(MARK_STACK))onto MARK_STACK

         current_state=nextstate

      /*在最后成功时退出REPEAT语句*/

      Success<>:GOTO done

      Failure<>:

          /*如果尝试回溯且回溯堆栈为空则匹配最终失败,*/

          IF BT_STACK is empty THEN

              RETURN″fail″

          ELSE

            pop BT_STACK record into variables st,ip,msh

            current_state=st

            input_pos=ip

            pop MARK_STACK down to height msh

    END CASE
/*在进行分析时,扫描MARK_STACK并执行具有由标志所指示的变量联编的动作*/
    done:

    LOCAL VARIABLE open_marks[],close_marks[]

    FOR element=bottom of MARK_STACK up to top of MARK_STACK DO:

      IF(element=(″mark″,num,″open″,pos))THEN

         SET open_marks[num]=pos

      IF(element=(″mark″,num,″close″,pos))THEN

         SET close_marks[num]=pos

      IF(element=(″action″,compiled_action_code))THEN

         SET values of $0,$1,...,$n to the positions in the imput string indicated
by          open_marks[n]and close_marks[n]

         RUN compiled_action_statement using these bindings of $0,$1,...,$n

    ENDFOR

    /*匹配成功并执行所有的动作*/    

    RETURN″succeed″
例如,在前面的FOR循环中,把$2的联编设定为以open_marks[2]开始并以close_marks[2]结束的输入串的子串。
动作语言代码产生以及运行时间解释
在较佳实施例中,动作语言语句被编译成可变长度字符编码类型的中间语言,在运行时间由字符编码解释程序解释执行。通过任何适当的公知分析技术来分析先前所述的动作语言,例如通过LL或LR分析。在例如Aho等人,1986,Compilers Principles,Techniques,and Tools,Addison Wesley Publishing Co.,第4章中的例子提出了足够的分析技术。在分析期间,给包装器中出现的所有变量赋值独有的数。这种较佳的赋值按照碰到的顺序把连续正整数分配给例如$x、$abc等指定的变量,并把连续负整数分配给例如$0、$1、$2等代表匹配子串的数值变量,给数值变量$i分配号码-(i+1)。
通过公知的面向语法的翻译技术来产生中间代码。在Aho等人第8章的例子中提出足够的面向语法的翻译技术。以下提出较佳的中间代码。在此介绍中,中间语言指令具有指令代码的格式,它具有随意修改的信息,接着是零个或单个自变量。以<var>来代表变量,这里var是变量的2字节整数编码。相对转移的偏移量编码为4字节整数。所有的转移对应于当前指令地址即转移指令本身的地址,从而可对字节代码进行重新定位。
1.Function Calls:
  Encoding:-funcode numargs<var_0><var_1>...<var_numargs>
  Meaning:给var0赋予由号码″numargs″的自变量var_1,...,var_numargs上的″funcode″所识别的函数的结果。该语言的每个内部函数(例如,agrc、argv等)以及每个算符(例如,″+″、″-″、″*″等)具有其自身独有的整数″funcode″。
2.Branch Instructions:
  Encoding:1<offset><var0>
  Meaning:如果var0为真,则转移相对转移指令的偏移量
  Encoding:2<offset><var0>
  Meaning:如果var0为假,则转移相对转移指令的偏移量
  Encoding:3<offset>
  Meaning:总是转移相对转移指令的偏移量
3.Load Constant Instructions:
  Encoding:4<var0><null-terminated_string>
  Meaning:给var0赋值null-terminated-string常数
  Encding:5<var0><floating-point-constant>
  Meaning:给var0赋值floating-point-constant
4.Move Instructions:
  Encoding:6<var0><var1>
  Meaning:var0从var1拷贝
5.Output Instructions:
  Encoding:7<var0>
  Meaning:把一个项var0输出到当前元组
  Encoding:8
  Meaning:终结当前元组,使它返还到网络机器人
6.Parsing Instructions:
  Encoding:9<var0><var1><address of the finite state machine for<nt>>
  Meaning:给var0赋予依据以<nt>所标记的规范表达式对var1所进行的分析结果
7.Exit Instructions:
  Encoding:10
  Meaning:退出当前动作语言块
在另一个实施例中,可使用不同的中间代码,或者甚至可不使用中间代码。例如,替代先前所揭示的基于地址的中间代码,还可等效地使用基于堆栈的逆波兰中间代码。或者,不使用中间代码,可把动作语言语句直接编译成机器语言。使用所揭示的面向语法的方法可实现这两个选择。例如,见Aho等人。
在一较佳实施例中以几个步骤来进行包装器动作的执行。首先,分配存储器来存储所有的变量和变量值。在分析了动作语句后知道变量的数目。把所有的变量初始化到未赋的值。接着,把指针CURRENT_INSTRUCTION初始化到指向待执行的字节代码的第一指令。然后,解释程序输入一循环,它检索CURRENT_INSTRUCTION指向的字节代码,依据先前所述的字节代码语言来完成经编码的简单动作,并把CURRENT_INSTRUCTION更新到指向下一指令或对于转移指令,通过偏移值来修改它的值。解释程序在碰到退出指令时结束执行。
通过调用FSA解释程序来解释规定了有限状态机的编译的规范表达式代码,在运行时间执行分析内部函数。翻译输出(a_1,...,a_n)语句,然后通过对输出清单中的每个变量执行字节代码指令代码7来执行该输出语句,接着是终结当前元组即标志输出语句结束的字节代码指令8。
6.特定实施例,参考文献的引用
本发明不限于这里所述的特定实施例的范围。实际上,除了这里所述的实施例以外,从上述描述和附图中,本发明的各种修改对本领域内的技术人员来说将变得明显起来。这些修改将落在后面的权利要求书的范围内。
这里引用了各种出版物,在这里通过引用而引入其整个内容。

Claims (13)

1.一种有助于用户查询可从连到网络的信息源中获得的信息的方法,其特征在于所述方法包括:
a.选择与用户查询最相关的一个或多个信息源;
b.依据以包装器描述语言编写的每个所述相关信息源的描述,对每个所述相关信息源的所述用户查询进行格式化;
c.把所述初始化的查询传送到所述相关信息源中的每一个;
d.从所述相关信息源所返还的响应中提取与所述用户查询相关的数据字段,所述的提取是依据返还每个所述响应的所述相关信息源的所述描述进行的;以及
e.把所述相关数据字段显示给所述用户。
2.如权利要求1所述的方法,其特征在于还包括,在所述提取步骤后,估计所述响应与所述用户查询的相关性的步骤。
3.如权利要求1所述的方法,其特征在于所述选择步骤还包括以下步骤:
a.确定与所述用户查询相关的一个或多个概念;以及
b.如果一信息源与所述概念相关,则选择所述信息源是相关的。
4.如权利要求1所述的方法,其特征在于所述包装器描述语言包括用于就成分规范表达式来规定整个规范表达式的功能,从而在识别所述整个规范表达式中的一个成分规范表达式时,执行动作是使用在识别所述成分规范表达式时候联系的变量,实际上只在也识别所述整个规范表达式时执行所述动作。
5.一种有助于用户查询可从连到网络的信息源中获得的信息的系统,其特征在于所述系统包括:
a.第一处理器装置,用于选择与用户查询最相关的一个或多个信息源;
b.第二处理器装置,用于依据以包装器描述语言编写的每个所述相关信息源的描述,格式化所述用户对每个所述相关信息源的查询,并把所述格式化的查询传送到所述相关信息源中的每一个;
c.第三处理器装置,用于从所述相关信息源所返还的响应中提取与所述用户查询相关的数据字段,所述的提取是依据返还每个所述响应的所述相关信息源的所述描述进行的;以及
d.第四处理器装置,用于把所述相关数据字段显示给所述用户。
6.如权利要求5所述的系统,其特征在于所述第一、所述第二、所述第三和所述第四处理器装置位于连网的计算机中,所述计算机包括一CPU和存储器。
7.如权利要求5所述的系统,其特征在于所述第一、所述第二、所述第三和所述第四处理器装置位于分开的连网的计算机中,每个所述计算机包括一CPU和存储器。
8.如权利要求5所述的系统,其特征在于所述第四处理器装置通过执行万维Web浏览器来显示所述相关数据字段。
9.如权利要求4所述的系统,其特征在于还包括第一个连网的存储器装置,所述存储器装置用于存储所述信息源的描述并在所述第二或第三处理器装置请求时提供所述描述。
10.一种包装器描述语言方法,其特征在于包括通过依据以规范表达式语言所编写的规范表达式扫描一个串来识别所述串,所述规范表达式语言能就成分规范表达式来规定整个规范表达式,从而在识别所述整个规范表达式的一个成分规范表达式时,执行动作是使用在识别所述成分规范表达式时联系的变量,实际上只在也识别所述整个规范表达式时执行所述动作。
11.如权利要求10所述的包装器描述语言方法,其特征在于还包括执行以动作语言编写的一个或多个语句的步骤,所述动作语言能规定变量上算符的动作、变量上函数以及语句顺序的动作,所述动作语言语句还能嵌入所述规范表达式语言,用以规定在识别所述成分规范表达式时所发生的所述动作。
12.一种计算机可读媒体,其特征在于包含使一个或多个计算机实现权利要求1的方法的指令。
13.一种计算机可读媒体,其特征在于包含使一个或多个计算机进行权利要求10的方法的指令。
CN97199793A 1996-09-20 1997-09-22 用于网络信息访问的方法和系统 Pending CN1249042A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US2530496P 1996-09-20 1996-09-20
US60/025,304 1996-09-20

Publications (1)

Publication Number Publication Date
CN1249042A true CN1249042A (zh) 2000-03-29

Family

ID=21825240

Family Applications (1)

Application Number Title Priority Date Filing Date
CN97199793A Pending CN1249042A (zh) 1996-09-20 1997-09-22 用于网络信息访问的方法和系统

Country Status (12)

Country Link
US (2) US6085186A (zh)
EP (1) EP1015964B1 (zh)
JP (1) JP2001501003A (zh)
KR (1) KR20000048514A (zh)
CN (1) CN1249042A (zh)
AT (1) ATE255246T1 (zh)
AU (1) AU731420B2 (zh)
CA (1) CA2269227C (zh)
IL (1) IL129066A (zh)
NZ (1) NZ335247A (zh)
SG (1) SG64654A1 (zh)
WO (1) WO1998012881A2 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100568232C (zh) * 2003-12-31 2009-12-09 Google公司 通用搜索引擎接口
CN1648902B (zh) * 2004-01-26 2010-12-08 微软公司 统一和混合搜索的系统和方法
CN102226900A (zh) * 2004-07-26 2011-10-26 咕果公司 信息检索系统中基于短语的搜索
CN101739467B (zh) * 2003-12-03 2012-09-05 咕果公司 用于个人化网络搜索的方法和系统
US9569505B2 (en) 2004-07-26 2017-02-14 Google Inc. Phrase-based searching in an information retrieval system
US9817825B2 (en) 2004-07-26 2017-11-14 Google Llc Multiple index based information retrieval system
CN109188994A (zh) * 2017-06-30 2019-01-11 沈阳新松机器人自动化股份有限公司 一种梯形图编译方法及相应的plc系统

Families Citing this family (291)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030212996A1 (en) * 1996-02-08 2003-11-13 Wolzien Thomas R. System for interconnection of audio program data transmitted by radio to remote vehicle or individual with GPS location
US5913214A (en) * 1996-05-30 1999-06-15 Massachusetts Inst Technology Data extraction from world wide web pages
US5826031A (en) * 1996-06-10 1998-10-20 Sun Microsystems, Inc. Method and system for prioritized downloading of embedded web objects
US7020670B1 (en) * 1997-04-23 2006-03-28 Xerox Corporation Document constraint descriptors obtained from user signals indicating attribute-value relations
JPH1115666A (ja) * 1997-06-10 1999-01-22 Internatl Business Mach Corp <Ibm> コンピュータ・システム、メッセージ・モニター方法、及び関連メッセージ送信方法
US6453334B1 (en) 1997-06-16 2002-09-17 Streamtheory, Inc. Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching
JP4000223B2 (ja) * 1997-09-24 2007-10-31 富士通株式会社 情報検索方法,情報検索システムおよび同システム用検索管理装置
US6678744B2 (en) * 1997-10-09 2004-01-13 Ericsson Inc. Application wrapper methods and systems
US6539378B2 (en) 1997-11-21 2003-03-25 Amazon.Com, Inc. Method for creating an information closure model
US7124093B1 (en) * 1997-12-22 2006-10-17 Ricoh Company, Ltd. Method, system and computer code for content based web advertising
US7257589B1 (en) * 1997-12-22 2007-08-14 Ricoh Company, Ltd. Techniques for targeting information to users
KR100313462B1 (ko) * 1998-01-23 2001-12-31 윤종용 웹검색엔진에서검색된정보를지역적으로근접한순서대로표시하는방법
US7865546B1 (en) * 1998-01-26 2011-01-04 New York University Method and appartus for monitor and notification in a network
KR19990069299A (ko) * 1998-02-06 1999-09-06 윤종용 특정 위치에 속한 정보를 찾는 웹 검색 방법
US6216131B1 (en) * 1998-02-06 2001-04-10 Starfish Software, Inc. Methods for mapping data fields from one data set to another in a data processing environment
US6643624B2 (en) * 1998-03-09 2003-11-04 Yan Philippe Method and system for integrating transaction mechanisms over multiple internet sites
US6424980B1 (en) 1998-06-10 2002-07-23 Nippon Telegraph And Telephone Corporation Integrated retrieval scheme for retrieving semi-structured documents
EP0967545A1 (en) * 1998-06-23 1999-12-29 BRITISH TELECOMMUNICATIONS public limited company A system and method for the co-ordination and control of information supply using a distributed multi-agent platform
US6401118B1 (en) * 1998-06-30 2002-06-04 Online Monitoring Services Method and computer program product for an online monitoring search engine
US6530044B1 (en) * 1998-08-31 2003-03-04 Scott A. Beeker System and disassembling test data and method
US6490579B1 (en) * 1998-07-16 2002-12-03 Perot Systems Corporation Search engine system and method utilizing context of heterogeneous information resources
US6128380A (en) * 1998-08-24 2000-10-03 Siemens Information And Communication, Networks, Inc. Automatic call distribution and training system
EP0990998A3 (en) 1998-09-30 2005-04-20 Canon Kabushiki Kaisha Information search apparatus and method
US6493705B1 (en) * 1998-09-30 2002-12-10 Canon Kabushiki Kaisha Information search apparatus and method, and computer readable memory
US6493692B1 (en) * 1998-09-30 2002-12-10 Canon Kabushiki Kaisha Information search apparatus and method, and computer readable memory
US6457009B1 (en) * 1998-11-09 2002-09-24 Denison W. Bollay Method of searching multiples internet resident databases using search fields in a generic form
US7672879B1 (en) 1998-12-08 2010-03-02 Yodlee.Com, Inc. Interactive activity interface for managing personal data and performing transactions over a data packet network
US7085997B1 (en) 1998-12-08 2006-08-01 Yodlee.Com Network-based bookmark management and web-summary system
US8069407B1 (en) 1998-12-08 2011-11-29 Yodlee.Com, Inc. Method and apparatus for detecting changes in websites and reporting results to web developers for navigation template repair purposes
US6532459B1 (en) * 1998-12-15 2003-03-11 Berson Research Corp. System for finding, identifying, tracking, and correcting personal information in diverse databases
US6721759B1 (en) * 1998-12-24 2004-04-13 Sony Corporation Techniques for spatial representation of data and browsing based on similarity
US6370527B1 (en) * 1998-12-29 2002-04-09 At&T Corp. Method and apparatus for searching distributed networks using a plurality of search devices
US6370537B1 (en) * 1999-01-14 2002-04-09 Altoweb, Inc. System and method for the manipulation and display of structured data
US6453411B1 (en) * 1999-02-18 2002-09-17 Hewlett-Packard Company System and method using a hardware embedded run-time optimizer
US6847960B1 (en) * 1999-03-29 2005-01-25 Nec Corporation Document retrieval by information unit
US6924828B1 (en) 1999-04-27 2005-08-02 Surfnotes Method and apparatus for improved information representation
US6836768B1 (en) * 1999-04-27 2004-12-28 Surfnotes Method and apparatus for improved information representation
US6609104B1 (en) 1999-05-26 2003-08-19 Incentech, Inc. Method and system for accumulating marginal discounts and applying an associated incentive
AU5171900A (en) * 1999-05-27 2000-12-18 Mobile Engines, Inc. Intelligent agent parallel search and comparison engine
US7225182B2 (en) 1999-05-28 2007-05-29 Overture Services, Inc. Recommending search terms using collaborative filtering and web spidering
US7752535B2 (en) 1999-06-01 2010-07-06 Yodlec.com, Inc. Categorization of summarized information
US6606625B1 (en) * 1999-06-03 2003-08-12 University Of Southern California Wrapper induction by hierarchical data analysis
US7653614B2 (en) * 1999-07-15 2010-01-26 Spotware Technologies, Inc. Method of searching across media and source types
US6993498B1 (en) * 1999-07-15 2006-01-31 Midnight Blue Remote Access, Llc Point-of-sale server and method
US6873982B1 (en) * 1999-07-16 2005-03-29 International Business Machines Corporation Ordering of database search results based on user feedback
US6356906B1 (en) * 1999-07-26 2002-03-12 Microsoft Corporation Standard database queries within standard request-response protocols
US6792576B1 (en) * 1999-07-26 2004-09-14 Xerox Corporation System and method of automatic wrapper grammar generation
US20040230566A1 (en) * 1999-08-20 2004-11-18 Srinivas Balijepalli Web-based customized information retrieval and delivery method and system
US6470336B1 (en) * 1999-08-25 2002-10-22 Matsushita Electric Industrial Co., Ltd. Document image search device and recording medium having document search program stored thereon
US7949722B1 (en) * 1999-09-29 2011-05-24 Actv Inc. Enhanced video programming system and method utilizing user-profile information
US6851089B1 (en) * 1999-10-25 2005-02-01 Amazon.Com, Inc. Software application and associated methods for generating a software layer for structuring semistructured information
US6532476B1 (en) * 1999-11-13 2003-03-11 Precision Solutions, Inc. Software based methodology for the storage and retrieval of diverse information
AU7339700A (en) 1999-11-16 2001-05-30 Searchcraft Corporation Method for searching from a plurality of data sources
US6490575B1 (en) * 1999-12-06 2002-12-03 International Business Machines Corporation Distributed network search engine
US7890491B1 (en) * 1999-12-22 2011-02-15 International Business Machines Corporation Query optimization technique for obtaining improved cardinality estimates using statistics on automatic summary tables
US6892196B1 (en) 1999-12-22 2005-05-10 Accenture Llp System, method and article of manufacture for a user programmable diary interface link
US20010032189A1 (en) * 1999-12-27 2001-10-18 Powell Michael D. Method and apparatus for a cryptographically assisted commercial network system designed to facilitate idea submission, purchase and licensing and innovation transfer
EP1118949A1 (en) * 2000-01-21 2001-07-25 Hewlett-Packard Company, A Delaware Corporation Process and apparatus for allowing transaction between a user and a remote server
AU2001230402A1 (en) * 2000-02-03 2001-08-14 Navigateone Limited System and method for database searching
US7707245B2 (en) * 2000-02-22 2010-04-27 Harvey Lunenfeld Metasearching a client's request for displaying different order books on the client
US7421468B2 (en) * 2000-02-22 2008-09-02 Harvey Lunenfeld Metasearching a client's request by sending a plurality of queries to a plurality of servers for displaying different lists on the client
US6789073B1 (en) * 2000-02-22 2004-09-07 Harvey Lunenfeld Client-server multitasking
US7490091B2 (en) * 2000-02-22 2009-02-10 Harvey Lunenfeld Metasearching a client's request for displaying at least one list comprising at least one advertisement on the client
US7421428B2 (en) * 2000-02-22 2008-09-02 Harvey Lunenfeld Metasearching a client's request by sending at least one search query to a plurality of servers for displaying at least one list on the client of at least one item that may be ordered
US10002167B2 (en) 2000-02-25 2018-06-19 Vilox Technologies, Llc Search-on-the-fly/sort-on-the-fly by a search engine directed to a plurality of disparate data sources
US6438539B1 (en) * 2000-02-25 2002-08-20 Agents-4All.Com, Inc. Method for retrieving data from an information network through linking search criteria to search strategy
WO2001076242A2 (en) 2000-03-31 2001-10-11 Intellocity Usa, Inc. System and method for local meta data insertion
US7418440B2 (en) * 2000-04-13 2008-08-26 Ql2 Software, Inc. Method and system for extraction and organizing selected data from sources on a network
US6732089B1 (en) * 2000-05-09 2004-05-04 International Business Machines Corporation SQL access to system specific data
US6654749B1 (en) * 2000-05-12 2003-11-25 Choice Media, Inc. Method and system for searching indexed information databases with automatic user registration via a communication network
FR2808911A1 (fr) * 2000-05-15 2001-11-16 Infomediation Procede et systeme de recherche et de comparaison d'informations sur au moins un produit determine propose sur le reseau internet
US20050177785A1 (en) * 2000-05-25 2005-08-11 Shrader Theodore J.L. Client-side pricing agent for collecting and managing product price information over the internet
US7031976B1 (en) * 2000-05-26 2006-04-18 Sprint Communications Company L.P. Computer framework and method for isolating a business component from specific implementations of a datastore
AU2001268194A1 (en) * 2000-06-05 2001-12-17 Altoweb Systems, Inc. System and method for accessing, organizing, and presenting data
KR100391391B1 (ko) * 2000-06-14 2003-07-12 (주) 제이.에스.씨.앤.아이 저작권 침해 방지를 위한 정보추출 에이전트 시스템 및그의 정보제공 방법
US6718325B1 (en) * 2000-06-14 2004-04-06 Sun Microsystems, Inc. Approximate string matcher for delimited strings
US7024418B1 (en) * 2000-06-23 2006-04-04 Computer Sciences Corporation Relevance calculation for a reference system in an insurance claims processing system
US7152058B2 (en) 2000-07-13 2006-12-19 Biap Systems, Inc. Apparatus for and method of selectively retrieving information and enabling its subsequent display
AUPQ878500A0 (en) * 2000-07-13 2000-08-03 Aroney, Peter Information obtaining system
US7313588B1 (en) * 2000-07-13 2007-12-25 Biap Systems, Inc. Locally executing software agent for retrieving remote content and method for creation and use of the agent
US7613790B2 (en) * 2000-07-13 2009-11-03 Biap Systems, Inc. Apparatus for and method of executing customized interactive computing services in a broadband network environment
US6714941B1 (en) * 2000-07-19 2004-03-30 University Of Southern California Learning data prototypes for information extraction
US7171349B1 (en) 2000-08-11 2007-01-30 Attensity Corporation Relational text index creation and searching
US6732098B1 (en) * 2000-08-11 2004-05-04 Attensity Corporation Relational text index creation and searching
US6728707B1 (en) * 2000-08-11 2004-04-27 Attensity Corporation Relational text index creation and searching
US6738765B1 (en) * 2000-08-11 2004-05-18 Attensity Corporation Relational text index creation and searching
US6741988B1 (en) * 2000-08-11 2004-05-25 Attensity Corporation Relational text index creation and searching
US6732097B1 (en) * 2000-08-11 2004-05-04 Attensity Corporation Relational text index creation and searching
WO2002019170A1 (en) * 2000-08-30 2002-03-07 Digimarc Corporation Exploiting familiar media attributes and vocabulary to acces network resources
US7155403B2 (en) * 2001-03-22 2006-12-26 International Business Machines Corporation System and method for leveraging procurement across companies and company groups
US6584468B1 (en) 2000-09-29 2003-06-24 Ninesigma, Inc. Method and apparatus to retrieve information from a network
WO2002031703A1 (en) * 2000-10-10 2002-04-18 Deutsche Bank Ag Method and software for providing context sensitive database query parameters
US20020087883A1 (en) * 2000-11-06 2002-07-04 Curt Wohlgemuth Anti-piracy system for remotely served computer applications
US7233940B2 (en) * 2000-11-06 2007-06-19 Answers Corporation System for processing at least partially structured data
US8831995B2 (en) 2000-11-06 2014-09-09 Numecent Holdings, Inc. Optimized server for streamed applications
US20020083183A1 (en) * 2000-11-06 2002-06-27 Sanjay Pujare Conventionally coded application conversion system for streamed delivery and execution
US7062567B2 (en) 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US6721736B1 (en) * 2000-11-15 2004-04-13 Hewlett-Packard Development Company, L.P. Methods, computer system, and computer program product for configuring a meta search engine
US20100223295A1 (en) * 2000-12-06 2010-09-02 Io Informatics, Inc. Applied Semantic Knowledgebases and Applications Thereof
US20020156792A1 (en) * 2000-12-06 2002-10-24 Biosentients, Inc. Intelligent object handling device and method for intelligent object data in heterogeneous data environments with high data density and dynamic application needs
US7698277B2 (en) * 2000-12-14 2010-04-13 Kapow Aps Query processor, query processor elements and a method of establishing such a query processor and query processor elements and a domain processor
US7451196B1 (en) 2000-12-15 2008-11-11 Stream Theory, Inc. Method and system for executing a software application in a virtual environment
US6763356B2 (en) * 2001-01-24 2004-07-13 International Business Machines Corporation System and method for searching disparate file systems
US20030081003A1 (en) * 2001-02-23 2003-05-01 Ali Kutay System and method to facilitate analysis and removal of errors from an application
US7546527B2 (en) * 2001-03-06 2009-06-09 International Business Machines Corporation Method and apparatus for repurposing formatted content
US20020156809A1 (en) * 2001-03-07 2002-10-24 O'brien Thomas A. Apparatus and method for locating and presenting electronic content
DE60136332D1 (de) * 2001-04-25 2008-12-11 Caplin Systems Ltd Verbindungsdienste
US6950821B2 (en) 2001-05-04 2005-09-27 Sun Microsystems, Inc. System and method for resolving distributed network search queries to information providers
US7013303B2 (en) * 2001-05-04 2006-03-14 Sun Microsystems, Inc. System and method for multiple data sources to plug into a standardized interface for distributed deep search
US7171415B2 (en) 2001-05-04 2007-01-30 Sun Microsystems, Inc. Distributed information discovery through searching selected registered information providers
US7099871B2 (en) * 2001-05-04 2006-08-29 Sun Microsystems, Inc. System and method for distributed real-time search
US6961723B2 (en) 2001-05-04 2005-11-01 Sun Microsystems, Inc. System and method for determining relevancy of query responses in a distributed network search mechanism
US6934702B2 (en) * 2001-05-04 2005-08-23 Sun Microsystems, Inc. Method and system of routing messages in a distributed search network
US6920448B2 (en) 2001-05-09 2005-07-19 Agilent Technologies, Inc. Domain specific knowledge-based metasearch system and methods of using
US7519605B2 (en) 2001-05-09 2009-04-14 Agilent Technologies, Inc. Systems, methods and computer readable media for performing a domain-specific metasearch, and visualizing search results therefrom
US7581170B2 (en) * 2001-05-31 2009-08-25 Lixto Software Gmbh Visual and interactive wrapper generation, automated information extraction from Web pages, and translation into XML
US20030005046A1 (en) * 2001-06-06 2003-01-02 Lagniappe Marketing System and method for managing marketing applications for a website
US6728704B2 (en) 2001-08-27 2004-04-27 Verity, Inc. Method and apparatus for merging result lists from multiple search engines
US20030069943A1 (en) * 2001-10-04 2003-04-10 International Business Machines Corporation Method and apparatus for user personalized and adaptive business processing modeling and integration
WO2003065252A1 (en) * 2002-02-01 2003-08-07 John Fairweather System and method for managing memory
US6952691B2 (en) * 2002-02-01 2005-10-04 International Business Machines Corporation Method and system for searching a multi-lingual database
US7165055B2 (en) * 2002-02-14 2007-01-16 Xerox Corporation Systems and methods for solving nogood databases
US7461370B2 (en) * 2002-02-25 2008-12-02 Safenet, Inc. Fast hardware processing of regular expressions containing sub-expressions
US6938239B2 (en) * 2002-04-18 2005-08-30 Wind River Systems, Inc. Automatic gopher program generator
US7467387B2 (en) * 2002-05-31 2008-12-16 International Business Machines Corporation Method for off-loading user queries to a task manager
US7398209B2 (en) 2002-06-03 2008-07-08 Voicebox Technologies, Inc. Systems and methods for responding to natural language speech utterance
US7209915B1 (en) * 2002-06-28 2007-04-24 Microsoft Corporation Method, system and apparatus for routing a query to one or more providers
US7693720B2 (en) 2002-07-15 2010-04-06 Voicebox Technologies, Inc. Mobile systems and methods for responding to natural language speech utterance
US7035841B2 (en) * 2002-07-18 2006-04-25 Xerox Corporation Method for automatic wrapper repair
US6886009B2 (en) 2002-07-31 2005-04-26 International Business Machines Corporation Query routing based on feature learning of data sources
US7181442B2 (en) * 2002-09-24 2007-02-20 International Business Machines Corporation Method and apparatus for discovery of dynamic network services
US20040064528A1 (en) * 2002-09-30 2004-04-01 Microsoft Corporation Safe interoperability among web services
US6829599B2 (en) * 2002-10-02 2004-12-07 Xerox Corporation System and method for improving answer relevance in meta-search engines
US7702617B2 (en) * 2002-10-31 2010-04-20 International Business Machines Corporation System and method for distributed querying and presentation of information from heterogeneous data sources
US6944612B2 (en) 2002-11-13 2005-09-13 Xerox Corporation Structured contextual clustering method and system in a federated search engine
US8160892B2 (en) * 2002-11-25 2012-04-17 Accenture Global Services Limited Border management solution
KR100617720B1 (ko) * 2002-11-30 2006-08-28 삼성전자주식회사 분산구조라우터에서 포워딩 정보를 동적으로 관리하는 방법
US20050108256A1 (en) * 2002-12-06 2005-05-19 Attensity Corporation Visualization of integrated structured and unstructured data
US7565443B2 (en) * 2002-12-13 2009-07-21 Sap Ag Common persistence layer
US7111286B2 (en) * 2002-12-18 2006-09-19 Ge Medical Systems Information Technologies, Inc. Method, system and computer product for parsing binary data
US7930716B2 (en) 2002-12-31 2011-04-19 Actv Inc. Techniques for reinsertion of local market advertising in digital video from a bypass source
US20040153440A1 (en) * 2003-01-30 2004-08-05 Assaf Halevy Unified management of queries in a multi-platform distributed environment
US7007017B2 (en) * 2003-02-10 2006-02-28 Xerox Corporation Method for automatic discovery of query language features of web sites
DE10313420A1 (de) * 2003-03-25 2004-10-28 Frank Meltke Recherchensystem und Verfahren zur Ermittlung von Informationen aus einer Datenbank, insbesondere aus dem World-Wide-Web
US7499914B2 (en) * 2003-04-04 2009-03-03 Yahoo! Inc. Search system using search subdomain and hints to subdomains in search query statements and sponsored results on a subdomain-by-subdomain basis
US7558841B2 (en) * 2003-05-14 2009-07-07 Microsoft Corporation Method, system, and computer-readable medium for communicating results to a data query in a computer network
US7854009B2 (en) * 2003-06-12 2010-12-14 International Business Machines Corporation Method of securing access to IP LANs
FR2858437B1 (fr) * 2003-07-28 2005-10-14 Emmanuel Berthod Procede permettant a un operateur d'effectuer une recherche sur internet avec identification automatique.
US20050027631A1 (en) * 2003-08-01 2005-02-03 Bandersnatch Research Llc System and method for providing information over a communications network
US20050060290A1 (en) * 2003-09-15 2005-03-17 International Business Machines Corporation Automatic query routing and rank configuration for search queries in an information retrieval system
US8014997B2 (en) * 2003-09-20 2011-09-06 International Business Machines Corporation Method of search content enhancement
US20050065774A1 (en) * 2003-09-20 2005-03-24 International Business Machines Corporation Method of self enhancement of search results through analysis of system logs
US7774292B2 (en) * 2003-11-10 2010-08-10 Conversive, Inc. System for conditional answering of requests
US7813916B2 (en) 2003-11-18 2010-10-12 University Of Utah Acquisition and application of contextual role knowledge for coreference resolution
GB0327589D0 (en) * 2003-11-27 2003-12-31 Ibm Searching in a computer network
US20050143863A1 (en) * 2003-12-19 2005-06-30 Margaret Ruane Building control system field panel having integrated web server
US20050165789A1 (en) * 2003-12-22 2005-07-28 Minton Steven N. Client-centric information extraction system for an information network
US7437353B2 (en) * 2003-12-31 2008-10-14 Google Inc. Systems and methods for unification of search results
US7483891B2 (en) * 2004-01-09 2009-01-27 Yahoo, Inc. Content presentation and management system associating base content and relevant additional content
US7107946B2 (en) * 2004-03-19 2006-09-19 Ford Global Technologies, Llc Electromechanically actuated valve control for an internal combustion engine
US20050241727A1 (en) * 2004-04-29 2005-11-03 Kosmyna Michael J Vented Funnel
US20050262056A1 (en) * 2004-05-20 2005-11-24 International Business Machines Corporation Method and system for searching source code of computer programs using parse trees
US7761439B1 (en) 2004-06-30 2010-07-20 Google Inc. Systems and methods for performing a directory search
US7584175B2 (en) 2004-07-26 2009-09-01 Google Inc. Phrase-based generation of document descriptions
US7580929B2 (en) * 2004-07-26 2009-08-25 Google Inc. Phrase-based personalization of searches in an information retrieval system
US7702618B1 (en) 2004-07-26 2010-04-20 Google Inc. Information retrieval system for archiving multiple document versions
US7580921B2 (en) * 2004-07-26 2009-08-25 Google Inc. Phrase identification in an information retrieval system
US7536408B2 (en) 2004-07-26 2009-05-19 Google Inc. Phrase-based indexing in an information retrieval system
US20060048136A1 (en) * 2004-08-25 2006-03-02 Vries Jeff D Interception-based resource detection system
US7315872B2 (en) * 2004-08-31 2008-01-01 International Business Machines Corporation Dynamic and selective data source binding through a metawrapper
KR100679314B1 (ko) 2004-09-17 2007-02-06 전자부품연구원 SOAP 오퍼레이션을 이용한 TV-Anytime 메타데이터 배포 방법
EP1638336A1 (en) * 2004-09-17 2006-03-22 Korea Electronics Technology Institute Method for providing requested fields by get-data operation in TV-Anytime metadata service
KR100590029B1 (ko) 2004-09-17 2006-06-14 전자부품연구원 TV-Anytime 메타데이터 서비스에서 get_Data 오퍼레이션을 이용한 테이블 필드 엘리먼트 제공 방법
US7240162B2 (en) 2004-10-22 2007-07-03 Stream Theory, Inc. System and method for predictive streaming
JP2008527468A (ja) * 2004-11-13 2008-07-24 ストリーム セオリー,インコーポレイテッド ハイブリッド・ローカル/リモート・ストリーミング
US9836729B2 (en) * 2005-03-11 2017-12-05 Microsoft Technology Licensing, Llc Media software navigation with conditional links
US9424563B2 (en) * 2005-03-11 2016-08-23 Microsoft Technology Licensing, Llc Accessing medial context information using contextual links
US8024523B2 (en) 2007-11-07 2011-09-20 Endeavors Technologies, Inc. Opportunistic block transmission with time constraints
US9716609B2 (en) 2005-03-23 2017-07-25 Numecent Holdings, Inc. System and method for tracking changes to files in streaming applications
US20060218165A1 (en) * 2005-03-23 2006-09-28 Vries Jeffrey De Explicit overlay integration rules
CN100399773C (zh) * 2005-04-29 2008-07-02 华为技术有限公司 实现ip域跨域互通的方法
US20070005692A1 (en) * 2005-06-18 2007-01-04 Rodney Gist System for instant collaboration
US8661459B2 (en) * 2005-06-21 2014-02-25 Microsoft Corporation Content syndication platform
US9104773B2 (en) 2005-06-21 2015-08-11 Microsoft Technology Licensing, Llc Finding and consuming web subscriptions in a web browser
US8074272B2 (en) 2005-07-07 2011-12-06 Microsoft Corporation Browser security notification
US7865830B2 (en) 2005-07-12 2011-01-04 Microsoft Corporation Feed and email content
US7831547B2 (en) * 2005-07-12 2010-11-09 Microsoft Corporation Searching and browsing URLs and URL history
US7640160B2 (en) 2005-08-05 2009-12-29 Voicebox Technologies, Inc. Systems and methods for responding to natural language speech utterance
US7620549B2 (en) 2005-08-10 2009-11-17 Voicebox Technologies, Inc. System and method of supporting adaptive misrecognition in conversational speech
US7949529B2 (en) 2005-08-29 2011-05-24 Voicebox Technologies, Inc. Mobile systems and methods of supporting natural language human-machine interactions
US7634409B2 (en) 2005-08-31 2009-12-15 Voicebox Technologies, Inc. Dynamic speech sharpening
US7788590B2 (en) 2005-09-26 2010-08-31 Microsoft Corporation Lightweight reference user interface
US7992085B2 (en) * 2005-09-26 2011-08-02 Microsoft Corporation Lightweight reference user interface
US20070088681A1 (en) * 2005-10-17 2007-04-19 Veveo, Inc. Method and system for offsetting network latencies during incremental searching using local caching and predictive fetching of results from a remote server
US7831685B2 (en) * 2005-12-14 2010-11-09 Microsoft Corporation Automatic detection of online commercial intention
US20070192367A1 (en) * 2006-02-16 2007-08-16 Microsoft Corporation Generic expression framework for computer implementable expressions
US7958164B2 (en) * 2006-02-16 2011-06-07 Microsoft Corporation Visual design of annotated regular expression
US8280843B2 (en) 2006-03-03 2012-10-02 Microsoft Corporation RSS data-processing object
US7979803B2 (en) 2006-03-06 2011-07-12 Microsoft Corporation RSS hostable control
US7860881B2 (en) * 2006-03-09 2010-12-28 Microsoft Corporation Data parsing with annotated patterns
WO2007125108A1 (en) * 2006-04-27 2007-11-08 Abb Research Ltd A method and system for controlling an industrial process including automatically displaying information generated in response to a query in an industrial installation
US9323867B2 (en) * 2006-08-03 2016-04-26 Microsoft Technology Licensing, Llc Search tool using multiple different search engine types across different data sets
US9349201B1 (en) 2006-08-03 2016-05-24 Sony Interactive Entertainment America Llc Command sentinel
US8888592B1 (en) 2009-06-01 2014-11-18 Sony Computer Entertainment America Llc Voice overlay
US7606752B2 (en) 2006-09-07 2009-10-20 Yodlee Inc. Host exchange in bill paying services
US20080080505A1 (en) * 2006-09-29 2008-04-03 Munoz Robert J Methods and Apparatus for Performing Packet Processing Operations in a Network
US20080082480A1 (en) * 2006-09-29 2008-04-03 Microsoft Corporation Data normalization
US8554638B2 (en) 2006-09-29 2013-10-08 Microsoft Corporation Comparative shopping tool
US7797453B2 (en) 2006-09-29 2010-09-14 Microsoft Corporation Resource standardization in an off-premise environment
US8073681B2 (en) 2006-10-16 2011-12-06 Voicebox Technologies, Inc. System and method for a cooperative conversational voice user interface
US8261345B2 (en) 2006-10-23 2012-09-04 Endeavors Technologies, Inc. Rule-based application access management
US7941436B2 (en) * 2006-11-30 2011-05-10 Yahoo, Inc. Keyword bidding strategy for novel concepts
US8108390B2 (en) 2006-12-21 2012-01-31 Yahoo! Inc. System for targeting data to sites referenced on a page
US7882268B1 (en) * 2007-02-01 2011-02-01 Google Inc. UDP transport for web services
US7818176B2 (en) 2007-02-06 2010-10-19 Voicebox Technologies, Inc. System and method for selecting and presenting advertisements based on natural language processing of voice-based input
US20080229828A1 (en) * 2007-03-20 2008-09-25 Microsoft Corporation Establishing reputation factors for publishing entities
US7805450B2 (en) * 2007-03-28 2010-09-28 Yahoo, Inc. System for determining the geographic range of local intent in a search query
US7788252B2 (en) * 2007-03-28 2010-08-31 Yahoo, Inc. System for determining local intent in a search query
US7774348B2 (en) * 2007-03-28 2010-08-10 Yahoo, Inc. System for providing geographically relevant content to a search query with local intent
US8086594B1 (en) 2007-03-30 2011-12-27 Google Inc. Bifurcated document relevance scoring
US7702614B1 (en) 2007-03-30 2010-04-20 Google Inc. Index updating using segment swapping
US7693813B1 (en) 2007-03-30 2010-04-06 Google Inc. Index server architecture using tiered and sharded phrase posting lists
US8166021B1 (en) 2007-03-30 2012-04-24 Google Inc. Query phrasification
US7925655B1 (en) 2007-03-30 2011-04-12 Google Inc. Query scheduling using hierarchical tiers of index servers
US8166045B1 (en) 2007-03-30 2012-04-24 Google Inc. Phrase extraction using subphrase scoring
US7856433B2 (en) * 2007-04-06 2010-12-21 Yahoo! Inc. Dynamic bid pricing for sponsored search
US7672937B2 (en) * 2007-04-11 2010-03-02 Yahoo, Inc. Temporal targeting of advertisements
US20080270228A1 (en) * 2007-04-24 2008-10-30 Yahoo! Inc. System for displaying advertisements associated with search results
US9396261B2 (en) 2007-04-25 2016-07-19 Yahoo! Inc. System for serving data that matches content related to a search results page
US20090006311A1 (en) * 2007-06-28 2009-01-01 Yahoo! Inc. Automated system to improve search engine optimization on web pages
US8019760B2 (en) * 2007-07-09 2011-09-13 Vivisimo, Inc. Clustering system and method
US8117223B2 (en) 2007-09-07 2012-02-14 Google Inc. Integrating external related phrase information into a phrase-based indexing information retrieval system
US7752285B2 (en) 2007-09-17 2010-07-06 Yahoo! Inc. Shortcut sets for controlled environments
US8583617B2 (en) * 2007-09-28 2013-11-12 Yelster Digital Gmbh Server directed client originated search aggregator
US8892738B2 (en) 2007-11-07 2014-11-18 Numecent Holdings, Inc. Deriving component statistics for a stream enabled application
US8140335B2 (en) 2007-12-11 2012-03-20 Voicebox Technologies, Inc. System and method for providing a natural language voice user interface in an integrated voice navigation services environment
US8968087B1 (en) 2009-06-01 2015-03-03 Sony Computer Entertainment America Llc Video game overlay
US8613673B2 (en) * 2008-12-15 2013-12-24 Sony Computer Entertainment America Llc Intelligent game loading
US9498714B2 (en) 2007-12-15 2016-11-22 Sony Interactive Entertainment America Llc Program mode switching
US8805774B2 (en) * 2008-02-19 2014-08-12 International Business Machines Corporation Method and system for role based situation aware software
US8515946B2 (en) * 2008-02-28 2013-08-20 Microsoft Corporation Location description for federation and discoverability
US20090235167A1 (en) * 2008-03-12 2009-09-17 International Business Machines Corporation Method and system for context aware collaborative tagging
US8261334B2 (en) 2008-04-25 2012-09-04 Yodlee Inc. System for performing web authentication of a user by proxy
US8589161B2 (en) 2008-05-27 2013-11-19 Voicebox Technologies, Inc. System and method for an integrated, multi-modal, multi-device natural language voice services environment
US9305548B2 (en) 2008-05-27 2016-04-05 Voicebox Technologies Corporation System and method for an integrated, multi-modal, multi-device natural language voice services environment
US8307066B2 (en) * 2008-06-06 2012-11-06 International Business Machines Corporation Automated digital media content filtration based on relationship monitoring
KR101574603B1 (ko) 2008-10-31 2015-12-04 삼성전자주식회사 컨디셔널 프로세싱 방법 및 장치
US8805861B2 (en) * 2008-12-09 2014-08-12 Google Inc. Methods and systems to train models to extract and integrate information from data sources
JP5576605B2 (ja) * 2008-12-25 2014-08-20 パナソニック株式会社 プログラム変換装置およびプログラム変換方法
US8135739B2 (en) * 2008-12-29 2012-03-13 Microsoft Corporation Online relevance engine
US20100185672A1 (en) * 2009-01-21 2010-07-22 Rising Iii Hawley K Techniques for spatial representation of data and browsing based on similarity
US8458105B2 (en) * 2009-02-12 2013-06-04 Decisive Analytics Corporation Method and apparatus for analyzing and interrelating data
US20100235314A1 (en) * 2009-02-12 2010-09-16 Decisive Analytics Corporation Method and apparatus for analyzing and interrelating video data
US8326637B2 (en) 2009-02-20 2012-12-04 Voicebox Technologies, Inc. System and method for processing multi-modal device interactions in a natural language voice services environment
US8555359B2 (en) 2009-02-26 2013-10-08 Yodlee, Inc. System and methods for automatically accessing a web site on behalf of a client
KR20120040160A (ko) * 2009-05-27 2012-04-26 구글 인코포레이티드 검색 결과들 내의 컴퓨터 어플리케이션 데이터
US9426502B2 (en) 2011-11-11 2016-08-23 Sony Interactive Entertainment America Llc Real-time cloud-based video watermarking systems and methods
US8506402B2 (en) 2009-06-01 2013-08-13 Sony Computer Entertainment America Llc Game execution environments
CA2812422A1 (en) * 2009-09-25 2011-03-31 Shady Shehata System, method and computer program for searching within a sub-domain by linking to other sub-domains
US8386483B2 (en) * 2009-10-22 2013-02-26 International Business Machines Corporation Providing increased quality of content to a user over time
WO2011059997A1 (en) 2009-11-10 2011-05-19 Voicebox Technologies, Inc. System and method for providing a natural language content dedication service
US9171541B2 (en) 2009-11-10 2015-10-27 Voicebox Technologies Corporation System and method for hybrid processing in a natural language voice services environment
US8387030B2 (en) * 2009-12-28 2013-02-26 Sap Ag Service adaptation definition language
US8560331B1 (en) 2010-08-02 2013-10-15 Sony Computer Entertainment America Llc Audio acceleration
KR102126910B1 (ko) 2010-09-13 2020-06-25 소니 인터랙티브 엔터테인먼트 아메리카 엘엘씨 부가기능의 관리
KR102003007B1 (ko) * 2010-09-13 2019-07-23 소니 인터랙티브 엔터테인먼트 아메리카 엘엘씨 비디오 서버 및 게임 서버를 포함하는 컴퓨터 게임 시스템에서 컴퓨터 게임을 제공하는 방법 및 시스템
US8874601B2 (en) 2010-12-17 2014-10-28 Sap Ag SADL query view—a model-driven approach to speed-up read-only use cases
FR2993075B1 (fr) * 2012-07-05 2014-08-15 Bouygues Telecom Sa Procede de traitement d'une requete de ressources numeriques
US9223871B2 (en) * 2012-11-14 2015-12-29 Homer Tlc, Inc. System and method for automatic wrapper induction using target strings
US10664534B2 (en) 2012-11-14 2020-05-26 Home Depot Product Authority, Llc System and method for automatic product matching
US10504127B2 (en) 2012-11-15 2019-12-10 Home Depot Product Authority, Llc System and method for classifying relevant competitors
US9928515B2 (en) 2012-11-15 2018-03-27 Home Depot Product Authority, Llc System and method for competitive product assortment
US10290012B2 (en) 2012-11-28 2019-05-14 Home Depot Product Authority, Llc System and method for price testing and optimization
GB2511072A (en) * 2013-02-22 2014-08-27 Ibm Non-deterministic finite state machine module for use in a regular expression matching system
US9172747B2 (en) * 2013-02-25 2015-10-27 Artificial Solutions Iberia SL System and methods for virtual assistant networks
US9501506B1 (en) 2013-03-15 2016-11-22 Google Inc. Indexing system
US20140310208A1 (en) * 2013-04-10 2014-10-16 Machine Perception Technologies Inc. Facilitating Operation of a Machine Learning Environment
US9483568B1 (en) 2013-06-05 2016-11-01 Google Inc. Indexing system
WO2015084360A1 (en) 2013-12-05 2015-06-11 Hewlett-Packard Development Company, L.P. Regular expression matching
JP6452323B2 (ja) * 2014-05-30 2019-01-16 キヤノン株式会社 通信機器、その制御方法、プログラム
EP3195145A4 (en) 2014-09-16 2018-01-24 VoiceBox Technologies Corporation Voice commerce
US9898459B2 (en) 2014-09-16 2018-02-20 Voicebox Technologies Corporation Integration of domain information into state transitions of a finite state transducer for natural language processing
CN107003999B (zh) 2014-10-15 2020-08-21 声钰科技 对用户的在先自然语言输入的后续响应的系统和方法
US9703876B2 (en) 2014-11-20 2017-07-11 International Business Machines Corporation Normalization of confidence thresholds in federated environments
US10431214B2 (en) 2014-11-26 2019-10-01 Voicebox Technologies Corporation System and method of determining a domain and/or an action related to a natural language input
US10614799B2 (en) 2014-11-26 2020-04-07 Voicebox Technologies Corporation System and method of providing intent predictions for an utterance prior to a system detection of an end of the utterance
JP6566810B2 (ja) * 2015-09-18 2019-08-28 株式会社ユニバーサルエンターテインメント 商業用情報提供システムおよび商業用情報提供方法
US10534783B1 (en) 2016-02-08 2020-01-14 Microstrategy Incorporated Enterprise search
US10331784B2 (en) 2016-07-29 2019-06-25 Voicebox Technologies Corporation System and method of disambiguating natural language processing requests
WO2022043675A2 (en) 2020-08-24 2022-03-03 Unlikely Artificial Intelligence Limited A computer implemented method for the automated analysis or use of data
US11875127B2 (en) * 2021-08-27 2024-01-16 International Business Machines Corporation Query response relevance determination

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3088171B2 (ja) * 1991-02-12 2000-09-18 三菱電機株式会社 自己組織型パタ−ン分類システム及び分類方法
JPH077422B2 (ja) * 1991-08-23 1995-01-30 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ処理データベース・システムにおけるジョインの実行方法及びシステム
US5600789A (en) * 1992-11-19 1997-02-04 Segue Software, Inc. Automated GUI interface testing
JP3207947B2 (ja) * 1992-11-26 2001-09-10 日本電信電話株式会社 内容抽出装置
JP2994926B2 (ja) * 1993-10-29 1999-12-27 松下電器産業株式会社 有限状態機械作成方法とパターン照合機械作成方法とこれらを変形する方法および駆動方法
US5481712A (en) * 1993-04-06 1996-01-02 Cognex Corporation Method and apparatus for interactively generating a computer program for machine vision analysis of an object
US5660789A (en) * 1993-06-17 1997-08-26 Montell North America Inc. Spinning process for the preparation of high thermobondability polyolefin fibers
JP3317767B2 (ja) * 1993-11-30 2002-08-26 日本電信電話株式会社 データベース自動作成装置
US5600831A (en) * 1994-02-28 1997-02-04 Lucent Technologies Inc. Apparatus and methods for retrieving information by modifying query plan based on description of information sources
JP3081102B2 (ja) * 1994-04-01 2000-08-28 松下電器産業株式会社 情報検索装置
US5724567A (en) * 1994-04-25 1998-03-03 Apple Computer, Inc. System for directing relevance-ranked data objects to computer users
US5680619A (en) * 1995-04-03 1997-10-21 Mfactory, Inc. Hierarchical encapsulation of instantiated objects in a multimedia authoring system
US5594462A (en) * 1995-05-05 1997-01-14 Microsoft Corporation Calibrating data transmission line spacing on a frame-scanning display device for optically transmitting data to a portable programmable device
US5721908A (en) * 1995-06-07 1998-02-24 International Business Machines Corporation Computer network for WWW server data access over internet
US5801689A (en) * 1996-01-22 1998-09-01 Extended Systems, Inc. Hypertext based remote graphic user interface control system
JPH09218880A (ja) * 1996-02-09 1997-08-19 Dainippon Screen Mfg Co Ltd ドキュメントデータ検索システム
US5889992A (en) * 1996-03-28 1999-03-30 Unisys Corp. Method for mapping types stored in a model in an object-oriented repository to language constructs for A C binding for the repository
JP3534977B2 (ja) * 1996-05-29 2004-06-07 富士通株式会社 情報源に関する知識を協調的に活用する情報アクセス装置および方法
US5913214A (en) * 1996-05-30 1999-06-15 Massachusetts Inst Technology Data extraction from world wide web pages
US5761436A (en) * 1996-07-01 1998-06-02 Sun Microsystems, Inc. Method and apparatus for combining truncated hyperlinks to form a hyperlink aggregate
JPH1063681A (ja) * 1996-08-23 1998-03-06 Toshiba Corp 情報検索システム
JPH1063680A (ja) * 1996-08-23 1998-03-06 Toshiba Corp 情報検索システム
US5826258A (en) * 1996-10-02 1998-10-20 Junglee Corporation Method and apparatus for structuring the querying and interpretation of semistructured information
US6006224A (en) * 1997-02-14 1999-12-21 Organicnet, Inc. Crucible query system

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739467B (zh) * 2003-12-03 2012-09-05 咕果公司 用于个人化网络搜索的方法和系统
CN100568232C (zh) * 2003-12-31 2009-12-09 Google公司 通用搜索引擎接口
CN1648902B (zh) * 2004-01-26 2010-12-08 微软公司 统一和混合搜索的系统和方法
CN106202248A (zh) * 2004-07-26 2016-12-07 谷歌公司 信息检索系统中基于短语的搜索
CN102289462A (zh) * 2004-07-26 2011-12-21 咕果公司 信息检索系统中基于短语的搜索
CN102289462B (zh) * 2004-07-26 2014-07-23 咕果公司 信息检索系统中基于短语的搜索
CN102226900A (zh) * 2004-07-26 2011-10-26 咕果公司 信息检索系统中基于短语的搜索
US9569505B2 (en) 2004-07-26 2017-02-14 Google Inc. Phrase-based searching in an information retrieval system
US9817825B2 (en) 2004-07-26 2017-11-14 Google Llc Multiple index based information retrieval system
US9990421B2 (en) 2004-07-26 2018-06-05 Google Llc Phrase-based searching in an information retrieval system
CN106202248B (zh) * 2004-07-26 2019-10-25 谷歌有限责任公司 信息检索系统中基于短语的搜索
US10671676B2 (en) 2004-07-26 2020-06-02 Google Llc Multiple index based information retrieval system
CN109188994A (zh) * 2017-06-30 2019-01-11 沈阳新松机器人自动化股份有限公司 一种梯形图编译方法及相应的plc系统

Also Published As

Publication number Publication date
KR20000048514A (ko) 2000-07-25
IL129066A (en) 2004-01-04
EP1015964A2 (en) 2000-07-05
US6085186A (en) 2000-07-04
WO1998012881A3 (en) 1998-04-30
SG64654A1 (en) 2001-05-22
AU731420B2 (en) 2001-03-29
CA2269227A1 (en) 1998-03-26
US6102969A (en) 2000-08-15
EP1015964B1 (en) 2003-11-26
CA2269227C (en) 2002-07-09
IL129066A0 (en) 2000-02-17
JP2001501003A (ja) 2001-01-23
EP1015964A4 (en) 2001-12-05
WO1998012881A2 (en) 1998-03-26
NZ335247A (en) 2000-04-28
AU4499497A (en) 1998-04-14
ATE255246T1 (de) 2003-12-15

Similar Documents

Publication Publication Date Title
CN1249042A (zh) 用于网络信息访问的方法和系统
CN1145901C (zh) 一种基于信息挖掘的智能决策支持构造方法
CN1171200C (zh) 通过会话虚拟机进行会话式计算的系统和方法
CN1176432C (zh) 提供本国语言查询服务的方法和系统
US6105043A (en) Creating macro language files for executing structured query language (SQL) queries in a relational database via a network
CN1248139C (zh) 用于表达频道化数据的系统和方法
US7664830B2 (en) Method and system for utilizing embedded MPEG-7 content descriptions
CN1114878C (zh) 代理主计算机和用于在一个浏览器和一个代理计算机之间访问和检索信息的方法
CN1328668A (zh) 用于指定网络上的位置的系统和处理
CN1568458A (zh) 无需修改现有代码即可增加新软件特征的方法
CN1573759A (zh) 公共查询运行期系统以及应用编程接口
CN1044175A (zh) 单元管理系统
CN1650279A (zh) 企业业务过程管理的方法和系统
CN1932756A (zh) 动态生成用于合成数据的语音可导航菜单的方法和系统
CN1846204A (zh) 用于提供数据驱动命令行输出的机制
CN1327195A (zh) 用于访问在一个网络上的信息的方法和系统
CN1740970A (zh) 无缝地比较对象的系统和方法
CN1276575A (zh) 数据库存取系统
JPH0926973A (ja) ウェブ・ブラウザのリクエストを実行するためのサービス・エージェント
CN1659548A (zh) 为移动应用缓存数据的系统和方法
JPH0944527A (ja) ウェブ・ブラウザ・システム
CN1609793A (zh) 用于计算机平台的编程接口
CN1841376A (zh) 对网络表单的数据驱动动作
CN1752963A (zh) 文档信息处理设备、文档信息处理方法及处理程序
CN101055566A (zh) 一种电子数据表的函数收集方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication