DE69726463T2 - METHOD AND SYSTEM FOR ACCESSING NETWORK INFORMATION - Google Patents
METHOD AND SYSTEM FOR ACCESSING NETWORK INFORMATION Download PDFInfo
- Publication number
- DE69726463T2 DE69726463T2 DE69726463T DE69726463T DE69726463T2 DE 69726463 T2 DE69726463 T2 DE 69726463T2 DE 69726463 T DE69726463 T DE 69726463T DE 69726463 T DE69726463 T DE 69726463T DE 69726463 T2 DE69726463 T2 DE 69726463T2
- Authority
- DE
- Germany
- Prior art keywords
- information
- relevant
- sources
- user
- query
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 93
- 230000014509 gene expression Effects 0.000 claims description 87
- 230000009471 action Effects 0.000 claims description 78
- 230000006870 function Effects 0.000 claims description 57
- 230000004044 response Effects 0.000 claims description 53
- 230000008569 process Effects 0.000 claims description 43
- 230000002776 aggregation Effects 0.000 claims description 13
- 238000004220 aggregation Methods 0.000 claims description 13
- 230000000694 effects Effects 0.000 claims description 5
- 238000003860 storage Methods 0.000 claims description 4
- 238000012546 transfer Methods 0.000 claims description 4
- 239000000284 extract Substances 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims 4
- 238000000605 extraction Methods 0.000 claims 1
- 238000004458 analytical method Methods 0.000 description 29
- 208000030514 Leukocyte adhesion deficiency type II Diseases 0.000 description 19
- 239000003550 marker Substances 0.000 description 16
- 239000003795 chemical substances by application Substances 0.000 description 13
- 238000012545 processing Methods 0.000 description 12
- 230000027455 binding Effects 0.000 description 9
- 238000009739 binding Methods 0.000 description 9
- 238000006467 substitution reaction Methods 0.000 description 8
- 238000007667 floating Methods 0.000 description 6
- 241001136792 Alle Species 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 239000002131 composite material Substances 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000007781 pre-processing Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 150000001875 compounds Chemical class 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 239000000047 product Substances 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000007630 basic procedure Methods 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- NQLVQOSNDJXLKG-UHFFFAOYSA-N prosulfocarb Chemical compound CCCN(CCC)C(=O)SCC1=CC=CC=C1 NQLVQOSNDJXLKG-UHFFFAOYSA-N 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Information Transfer Between Computers (AREA)
Description
1. GEBIET DER ERFINDUNG1. AREA THE INVENTION
Das Gebiet dieser Erfindung betrifft den Zugang zu Informationen über Netze und insbesondere die automatische Lokalisierung und Evaluierung relevanter Informationen, die von Informationsquellen über öffentliche oder private Netze in Antwort auf Benutzeranfragen verfügbar sind.The field of this invention relates access to information about Networks and in particular automatic localization and evaluation relevant information from sources of information about public or private networks are available in response to user requests.
2. HINTERGRUND2. BACKGROUND
Das exponentielle Wachstum privater Intranets und des öffentlichen Internets hat ein gewaltiges Labyrinth aus einer anwachsenden Zahl von Dokumenten, Datenbanken und Versorgungseinrichtungen hervorgerufen. Nahezu jede Art von Information ist nun irgendwo verfügbar, jedoch ist es den meisten Benutzern nicht möglich, das zu finden, was sie suchen und selbst fachkundige Nutzer verschwenden viel Zeit und Anstrengungen für die Suche nach geeigneten Informationsquellen. Ein Problem besteht einfach in der anwachsend großen Anzahl verfügbarer Informationsquellen, die sich jenseits des Vorstellungsvermögens eines einzelnen Benutzers befindet. Ein zweites Problem in Verbindung mit diesem Anwachsen verfügbarer Informationen und Informationsquellen ist ein entsprechendes Wachstum bei den Softwareversorgungseinrichtungen und -methoden, um diese Informationen zu verwalten, auf sie zuzugreifen und sie zu präsentieren. Jede Versorgungseinrichtung weist eine unterschiedliche und häufig einmalige Schnittstelle, Befehlssatz und Ressourcen auf und ist für eine unterschiedliche Gruppe von Benutzern und eine unterschiedliche Gruppe von Informationsarten und -quellen geeignet. Die bloße Vielfalt verfügbarer Versorgungseinrichtungen erzeugt für die Nutzer ein Problem, das mit dem durch die Informationsexplosion erzeugten vergleichbar ist. Benutzer werden nun mit dem Doppelproblem konfrontiert, welches Werkzeug sie zur Suche in welcher Informationsquelle verwenden sollen.The exponential growth of private Intranets and the public The Internet has a huge labyrinth of an increasing number of documents, databases and utilities. Almost every type of information is now available somewhere, however most users are unable to find what they are looking for search and even expert users waste a lot of time and Efforts for the search for suitable sources of information. There is a problem simply in the growing large Number of available Sources of information that go beyond the imagination of a individual user. A second problem in connection with this growing available Information and sources of information is a corresponding growth software supply facilities and methods to address them Manage, access, and present information. Each supply facility has a different and often unique Interface, instruction set and resources and is for a different Group of users and a different group of types of information suitable and sources. The bare Variety of available Utilities creates a problem for users that is comparable to that generated by the information explosion. Users are now faced with the double problem, which one Tool to use in which information source to search.
In der Vergangenheit wurden Anstrengungen unternommen, um Benutzern automatische computerunterstützte Dienste zur Verfügung zu stellen, die dabei helfen können, dieses Doppelproblem der Netzrevolution zu lösen. Beispielsweise wurden von AI-Forschern mehrere Prototypen von Softwareagenten, die Benutzern bei der Filterung von E-Mails und Netznachrichten helfen (Pattie Maes et al., 1993, Learning interface agents; Proceedings der AAAI-93), Agenten, die beim Durchsuchen des World Wide Web unterstützen (H. Liebermann, 1995, Letizia: An agent that assists web browsing, Proc. 15th Int. Joint Conf. über A. I. Seiten 924– 929, Robert Armstrong et al., 1992, Webwatcher: A learning apprentice for the world wide web, Arbeitsmitteilungen des AAAI Spring Symposium: Information Gathering from Heterogeneous, Distributed Environments, Seiten 6–12, Stanford University, AAAI Press), Agenten, die Sitzungen planen (Lisa Dent et al., 1992, A personal learning apprentice, Proc. 10th Nat. Conf. über A. I., Seiten 96–101; Pattie Maes, 1994, Agents that reduce work and Information overload, Comm. der ACM 37 (7): 31–40, 146; Tom Mitchell et al., 1994, Experience with a learning personal assistant, Comm. der ACM 37 (7): 81–91) und Agenten, mit welchen internetbezogene Aufgaben ausgeführt werden können (O. Etzioni et al., 1994, A softbot-based Interface to the Internet, CACM 37 (7): 72–75) generiert. In zunehmendem Maße sind die Informationen, auf die derartige Agenten zugreifen müssen, im World Wide Web verfügbar. Unglücklicherweise hat sich selbst für eine so standardisierte Domäne, wie das WWW, herausgestellt, daß sie bedeutende Probleme für automatische Softwareagenten aufwirft. Obwohl Webseiten universell in Hypertext Markup Language ("HTML") geschrieben werden, definiert diese Sprache lediglich das Format der Informationsanzeige, wobei jedoch keine Versuche gemacht werden, ihre Bedeutung oder ihren semantischen Inhalt anzudeuten. Momentan existiert keine akzeptierte "semantische Markupsprache" für Web-Ausgaben noch ist es wahrscheinlich, daß eine universell übernommen wird. Somit ist zu erwarten, daß das Internet sogar noch größere Probleme aufwerfen wird.Efforts have been made in the past to provide users with automated computer-aided services that can help solve this dual problem of the network revolution. For example, AI researchers have developed several prototypes of software agents that help users filter email and network messages (Pattie Maes et al., 1993, Learning interface agents; Proceedings of AAAI-93), agents that search the world Support wide web (H. Liebermann, 1995, Letizia: An agent that assists web browsing, Proc. 15 th Int. Joint Conf. Via AI pages 924-929, Robert Armstrong et al., 1992, Webwatcher: A learning apprentice for the world wide web, AAAI Spring Symposium work announcements: Information Gathering from Heterogeneous, Distributed Environments, pages 6–12, Stanford University, AAAI Press), agents planning meetings (Lisa Dent et al., 1992, A personal learning apprentice, Proc ... 10 th Conf Nat about AI, pages 96-101; pattie Maes, 1994, Agents did reduce work and information overload, Comm ACM 37 (7): 31-40, 146; Tom Mitchell et al., 1994. , Experience with a learning personal assistant, Comm. Of the ACM 37 (7): 81–91) and agents with which internet-related tasks can be carried out (O. Etzioni et al., 1994, A softbot-based interface to the Internet, CACM 37 (7): 72-75). The information that such agents must access is increasingly available on the World Wide Web. Unfortunately, even a domain as standardized as the WWW has been found to pose significant problems for automated software agents. Although websites are universally written in Hypertext Markup Language ("HTML"), this language only defines the format of the information display, however no attempts are made to indicate its meaning or its semantic content. There is currently no accepted "semantic markup language" for web editions, nor is it likely that one will be universally adopted. Thus, the Internet is expected to pose even greater problems.
Somit hat das Aufkommen von Intranetzen, des Internets und des World Wide Webs zahlreiche grundlegende Probleme für die automatischen Dienste oder Agenten aufgeworfen, die dazu bestimmt sind, Benutzer beim Finden relevanter Informationen zu unterstützen. Erstens brachte kein derartiger Dienst bisher einen ausreichenden zusätzlichen Nutzen, um die Verwendung eines Webbrowsers, der Zugang zu bestehenden Verzeichnissen und Indizes hat, wie beispielsweise Yahoo oder Lycos zu ersetzen. Zweitens waren derartige Dienste noch nicht in der Lage, relevante Informationen aus den von einer breiten Vielzahl von Internet- und Web-Informationsquellen zurückgegebenen Antworten zu verstehen und vollkommen syntaktisch zu analysieren. Drittens konnten bestehende Dienste und Agenten nicht ohne weiteres an die immerfort anwachsende Anzahl von Quellen mit ihren sich immerfort ändernden Antwortformaten angepaßt werden. Der Grund dafür besteht in der individualisierten, handcodierten Schnittstelle zu jedem Internetdienst und jeder Website, die von bestehenden Agenten verwendet wird (Yigal Arens et al., 1993; Retrieving and integrating data from multiple information sources, International Journal of Intelligent and Cooperative Information Systems 2 (2): 1270–158; O. Etzioni et al., 1994, A softbot-based interface to the internet, CACM 37 (7); 72–75; B. Krulwich, 1995, Bargain finder agent prototype, technischer Bericht, Anderson Consulting; Alon Y. Levy et al., 1995, Data model and query evaluation in global information systems, Journal of Intelligent Information Systems, Sonderausgabe über Networked Information Discovery and Retrieval 5 (2); Mike Perkowitz et al., 1995, Category translation: Learning to understand information on the internet, Proc. 15th Int. Joint Conf. über A. I.). Vorzugsweise sollte ein Dienst oder Agent in der Lage sein, auf eine neue oder veränderte Internetinformationsquelle zugreifen zu können, um automatisch zu lernen, wie relevante Informationen aus der Quelle abgerufen werden können. Dies wäre selbst dann von Vorteil, falls eine derartige Einrichtung auf Gruppen von Quellen mit Antwortformaten beschränkt wäre, die gemäß bestimmter zwingender Prinzipien ausgewählt werden.Thus, the advent of intranets, the Internet, and the World Wide Web has raised numerous fundamental problems for automated services or agents designed to help users find relevant information. First, no such service has so far brought enough additional value to replace the use of a web browser that has access to existing directories and indexes, such as Yahoo or Lycos. Second, such services have not yet been able to understand relevant pertinent information from the responses returned by a wide variety of internet and web information sources, and to analyze it completely syntactically. Third, existing services and agents could not be easily adapted to the ever-increasing number of sources with their ever-changing response formats. The reason for this is the individualized, hand-coded interface to every Internet service and website that is used by existing agents (Yigal Arens et al., 1993; Retrieving and integrating data from multiple information sources, International Journal of Intelligent and Cooperative Information Systems 2 (2): 1270-158; O. Etzioni et al., 1994, A softbot-based interface to the internet, CACM 37 (7); 72-75; B. Krulwich, 1995, Bargain finder agent prototype, technical report, Anderson Consulting; Alon Y. Levy et al., 1995, Data model and query evaluation in global information systems, Journal of Intelligent Information Systems, special edition on Networked Information Discovery and Retrieval 5 (2); Mike Perkowitz et al., 1995, Category translation: Learning to understand information on the internet, Proc. 15 th Int. Joint Conf. via AI). Preferably, a service or agent should be able to access a new or changed Internet information source to automatically learn how to retrieve relevant information from the source. This would be an advantage even if such a facility were limited to groups of sources with response formats selected according to certain mandatory principles.
Y. Papakonstantinou et al.: "A query translation
scheme for rapid implementation of wrappers". Deductive and object-oriented databases.
Vierte internationale Konferenz, Dood 1995. Singapur; 4.–7. Dez.
1995, [Online] Seiten 1–27,
XP002179364 UCSD, USA, abgerufen aus dem Internet: URL:http.//www.db.ucsd.edu/publications/q
uerytran.pdf [abgerufen am 10.4.2001] offenbart ein Verfahren zur Unterstützung eines
Benutzers bei der Suche nach Information, die aus Informationsquellen
verfügbar
ist, die an ein Netz angeschlossen sind, wobei das Verfahren umfaßt:
Auswählen der
einen oder mehreren für
eine Nutzeranfrage relevantesten Informationsquellen;
Formatieren
der Nutzeranfrage für
jede relevante Informationsquelle gemäß einer Beschreibung jeder
relevanten Informationsquelle, die in einer Wrapper-Beschreibungssprache
geschrieben ist;
Übertragen
der formatierten Anfrage zu jeder der relevanten Informationsquellen;
Extrahieren
von für
die Nutzeranfrage relevanten Datenfeldern aus Antworten, die von
relevanten Informationsquellen zurückgegeben wurden, gemäß der Beschreibung
der relevanten Informationsquelle, die die jeweilige Antwort zurückgibt;
Darstellen
der relevanten Datenfelder für
den Nutzer.Y. Papakonstantinou et al .: "A query translation scheme for rapid implementation of wrappers". Deductive and object-oriented databases. Fourth International Conference, Dood 1995. Singapore; 4-seventh Dec. 1995, [Online] Pages 1-27, XP002179364 UCSD, USA, accessed from the Internet: URL: http .// www.db.ucsd.edu/publications/q uerytran.pdf [accessed on April 10, 2001] A method of assisting a user to find information available from sources of information connected to a network, the method comprising:
Selecting the one or more sources of information most relevant to a user request;
Formatting the user request for each relevant information source according to a description of each relevant information source written in a wrapper description language;
Transmitting the formatted request to each of the relevant information sources;
Extracting data fields relevant to the user request from responses returned from relevant information sources according to the description of the relevant information source that returns the respective response;
Representation of the relevant data fields for the user.
3. ABRISS DER ERFINDUNG3. SUMMARY OF THE INVENTION
Es ist das umfassende Ziel dieser Erfindung, diese fundamentalen Probleme durch ein Verfahren und ein System zu lösen, die einen personalisierten Netzautomaten vorsehen, der "Netbot" genannt wird. Ein Netbot arbeitet als der intelligente Assistent eines Nutzers durch Verfolgen verfügbarer Netzinformationsquellen, der die relevante Information und Merkmale jeder speziellen Quelle kennt und auf eine Nutzeranfrage hin bestimmt, welche Quellen für eine gegebene Anfrage relevant sind, die Anfrage zu den relevantesten Informationsquellen weiterleitet, die von jeder Informationsquelle zurückgegebenen Antworten versteht und die Anfrageergebnisse für den Nutzer einordnet und intelligent darstellt.It is the overall goal of this Invention addresses these fundamental problems through a process and a System to solve which provide a personalized network machine called "Netbot". On Netbot works through as a user's intelligent assistant Track more available Network information sources that contain the relevant information and characteristics knows each special source and determines it based on a user request, what sources for a given query are relevant, the query is the most relevant Information sources forwards from each information source returned Understands answers and classifies the query results for the user and represents intelligently.
Die Netbots dieser Erfindung besitzen verschiedene Vorteile einschließlich der folgenden. Erstens gibt ein Netbot nur die relevanteste Information an den Nutzer zurück. Andererseits wird jede Nutzeranfrage nur zu den primären Informationsquellen weitergeleitet, die als die relevantesten ermittelt wurden. Andererseits werden Antworten von Informationsquellen so syntaktisch analysiert und verstanden, daß nur die für die Darstellung für den Benutzer relevanten Datenelemente extrahiert werden. Doppelte, uninteressante und nicht relevante Informationselemente werden fallengelassen. Zweitens ist ein Netbot schnell. Da er automatisch die relevanten primären Quellen parallel durchsucht, kann er Informationen so schnell präsentieren, wie die schnellste primäre Quelle eine Antwort zurückgibt. Trotz sich ändernder Bedingungen, die dazu führen, daß verschiedene Informationsquellen bezüglich der Geschwindigkeit fluktuieren, bleibt ein Netbot-Integrator so schnell wie die schnellste Quelle. Quellen, die keine Information aufweisen, die sie auf eine Anfrage zurückgeben, verlangsamen den Nutzer nicht, da der Netbot sie einfach ignoriert. Drittens werden Netbots einfach an die fortlaufend anwachsende Zahl von Netzinformationsquellen mit sich fortlaufend ändernden Antwortformaten angepaßt. Netbots verwenden eine neue und neuartige deklarative Sprache zur Beschreibung von Informationsquellen. Eine Quellenbeschreibung ist kurz und einfach verständlich und wird daher einfach verfaßt und gepflegt.The netbots of this invention own various advantages including of the following. First, a netbot only gives the most relevant information back to the user. On the other hand, every user request only becomes the primary source of information forwarded, which were determined to be the most relevant. on the other hand responses from information sources are analyzed syntactically and understood that only the for the representation for data elements relevant to the user are extracted. double, uninteresting and irrelevant information elements are dropped. Second, a netbot is fast. Since it automatically gets the relevant primary Searched sources in parallel, he can present information so quickly, like the fastest primary Source returns an answer. Despite changing Conditions that cause that different Sources of information regarding fluctuate in speed, a Netbot integrator stays that fast like the fastest source. Sources that have no information, which they return on request do not slow the user down as the Netbot simply ignores them. Third, netbots are simply growing in numbers of network information sources with continuously changing Response formats adapted. Netbots use a new and novel declarative language Description of sources of information. A source description is short and easy to understand and is therefore simply written and groomed.
Daher umfaßt die Erfindung in einem Gesichtspunkt ein Verfahren für einen wirkungsvollen Zugriff auf Informationsquellen in einem Netz, das vorzugsweise einen oder mehrere der folgenden Schritte umfaßt: Empfangen einer Nutzeranfrage für Informationen; Bestimmen der Informationsquellen, die für diese Anfrage am relevantesten sind; Abrufen einer Beschreibung jeder Informationsquelle; Formatieren der Anfrage gemäß dieser Beschreibung in einer Weise, die für jede Informationsquelle geeignet ist und Übertragen der formatierten Anfrage zur Quelle; Empfangen von Antworten von den Informationsquellen, für jede Quelle, Verstehen und Extrahieren der relevanten Datenfelder gemäß der abgerufenen Beschreibung; und Darstellen der relevanten Daten von jeder Informationsquelle für den Benutzer in einer intelligenten Weise, eingeordnet durch eine Abschätzung ihrer Relevanz. In vorteilhafter Weise werden diese Schritte im weitestmöglichen Umfang parallel ausgeführt. Insbesondere werden zumindest alle Anfragen zu allen relevanten Informationsquellen parallel übermittelt, ohne auf dazwischenkommende Antworten zu warten.Therefore, the invention comprises in one aspect a procedure for effective access to information sources in a network, which preferably comprises one or more of the following steps: receiving a user request for Information; Determine the sources of information for this Query are most relevant; Get a description of everyone Source of information; Format the request according to this description in a Way that for any information source is suitable and transferring the formatted request to Source; Receiving responses from information sources, for each source, Understand and extract the relevant data fields according to the retrieved Description; and displaying the relevant data from each information source for the Users in an intelligent way, classified by an estimate of their Relevance. Advantageously, these steps are as far as possible Scope executed in parallel. In particular, at least all inquiries regarding all relevant Information sources transmitted in parallel, without waiting for intervening answers.
Gemäß einem weiteren Gesichtspunkt umfaßt die Erfindung ein Computersystem und eine Vorrichtung zum Durchführen eines oder mehrerer Schritte des Verfahrens dieser Erfindung. Der Nutzer besitzt eine Darstellungsvorrichtung, die an ein Netz angeschlossen ist, an das ebenfalls eine Mehrzahl von Informationsquellen angeschlossen ist. Die Darstellungsvorrichtung empfängt Nutzeranfragen und zeigt Netbot-Antworten an. Des weiteren führt die Darstellungsvorrichtung einen oder mehrere der Schritte des Verfahrens dieser Erfindung aus. Einer oder mehrere dieser Schritte, die nicht auf dieser Vorrichtung ausgeführt werden, können vorteilhafterweise auf an ein Netz angeschlossenen Netbot-Servercomputern ausgeführt werden, die auf funktionale Anfragen von der Nutzereinrichtung antworten. Optional kann die Nutzereinrichtung im Bereich zwischen einem handgehaltenen tragbaren Terminal, einem PC, und einer Workstation usw. liegen.In another aspect, the invention includes a computer system and apparatus for performing one or more steps of the method of this invention. The user has a display device that is connected to a network to which a plurality of information is also available sources is connected. The presentation device receives user requests and displays Netbot responses. Furthermore, the display device performs one or more of the steps of the method of this invention. One or more of these steps, which are not carried out on this device, can advantageously be carried out on networked Netbot server computers which respond to functional requests from the user device. Optionally, the user device can be in the area between a hand-held portable terminal, a PC, and a workstation, etc.
Gemäß einem weiteren Gesichtspunkt umfaßt die Erfindung eine neue Sprache und Sprachimplementierung, um die Erstellung und Pflege von Beschreibungen von Informationsquellen zu vereinfachen. Wesentlich ist, daß diese Sprache relevante Datenfelder in Antworten, die von Informationsquellen zurückgegeben werden, erkennt und in der Lage ist, alle derartigen Felder zu extrahieren. Bei der bevorzugten Ausführungsform weist diese Sprache eine Aktionsanweisungskomponente und eine reguläre Ausdruckskomponente auf. Die reguläre Ausdruckskomponente weist neuartige Merkmale zur Erstellung modularer hierarchischer Beschreibungen regulärer Ausdrücke auf, um Variablen an die korrekten Unter-Strings zu binden, die während eines Musterabgleichs mit einer Antwort einer Informationsquelle erkannt werden, um beliebige Aktionssprachenanweisungen mit mehreren Variablenbindungen durchzuführen und um eine Erkennung von Unter-Strings ohne Backtracking festzulegen, wo immer dies möglich ist.According to another aspect comprises the invention a new language and language implementation to the Creation and maintenance of descriptions of information sources to simplify. It is essential that this language relevant data fields in responses returned from information sources is able to extract all such fields. In the preferred embodiment this language has an action instruction component and a regular expression component on. The regular one Expression component has novel features for creating modular hierarchical descriptions of regular expressions to match variables to tie correct sub-strings during a pattern match with a response from an information source to any Perform action language statements with multiple variable bindings and to determine detection of sub-strings without backtracking, wherever possible is.
4. KURZBESCHREIBUNG DER ZEICHNUNGEN4. SHORT DESCRIPTION THE DRAWINGS
Diese und weitere Merkmale der Gesichtspunkte und Vorteile der vorliegenden Erfindung werden mit Bezugnahme auf die begleitenden Zeichnungen durch die folgende Beschreibung und die beigefügten Ansprüche besser verständlich werden, wobei:These and other features of the viewpoints and advantages of the present invention will become apparent with reference to FIG the accompanying drawings by the description below and the attached Expectations easier to understand be, whereby:
5. DETAILLIERTE BESCHREIBUNG5. DETAILED DESCRIPTION
Die detaillierte Beschreibung eines Netbots dieser Erfindung wird zur Klarheit der Offenbarung und ohne Beschränkung als ein Verfahren oder Prozeß zum Netzinformationszugang, als ein System oder eine Vorrichtung, das bzw. die für eine Ausführung dieses Verfahrens implementiert ist und als eine neuartige Sprache, die dazu bestimmt ist, bei der Implementierung dieses Verfahrens und Systems als Unterstützung zu dienen, dargestellt.The detailed description of a Netbots of this invention is provided for clarity of disclosure and without restriction as a method or process for Network information access, as a system or device that or those for an execution this method is implemented and as a novel language, which is designed to implement this method and systems as support to serve.
Im folgenden wird erstens ein Überblick über diese Gesichtspunkte der Erfindung angegeben, worauf zweitens eine detaillierte Erörterung individueller Komponenten folgt.The following is first an overview of these Aspects of the invention indicated, secondly, a detailed discussion individual components follows.
5.1. ÜBERBLICK ÜBER DIE NETBOT ARCHITEKTUR5.1. OVERVIEW OF NETBOT ARCHITECTURE
Ein Netbot-Verfahren oder System
dieser Erfindung umfaßt
Software- und Hardwareeinrichtungen, die miteinander auf einem oder
mehreren an ein Netz angeschlossenen Computern arbeiten, um einen
Nutzer beim Zugriff auf Informationen, die auf an ein Netz angeschlossenen
Servern vorliegen, zu unterstützen
(die hierin als "Informationsquellen" bezeichnet werden).
Gruppen von Quellen
Bei einer bevorzugten Ausführung ist der Netbot aus drei hauptsächlichen funktionalen Modulen gebildet: einer Nutzerschnittstelle, einem Integrator und einem I/O-Manager. Kurz beschrieben wechselwirkt das Nutzerschnittstellenmodul mit dem Nutzer, um Nutzeranfragen nach Information zu empfangen und um Informationsantworten von den an das Netz angeschlossenen Informationsquellen zu formatieren und zu präsentieren. Vorteilhafterweise ist die Nutzerschnittstelle an die spezielle Informationsdomäne, auf die zugegriffen wird, angepaßt. Das Integratormodul akzeptiert eine Nutzeranfrage vom Nutzerschnittstellenmodul, wählt relevante Informationsquellen aus, formatiert sie für eine Netzübertragung zu jeder relevanten Informationsquelle, empfängt Antworten von diesen Quellen, versteht diese Antworten und gibt die relevanten Teile der Antworten zum Nutzerschnittstellenmodul zur Anzeige für den Benutzer zurück. Das I/O-Managermodul führt eine Hardware-, Betriebs- und Netzspezifische Kopplung für die Nutzerschnittstelle und Integratormodule aus, so daß die Portierung eines Netbots zu verschiedenen Hardwareplattformen, Betriebssystemen oder Netzen lediglich Änderungen in einem gut modularisierten Code erfordert.In a preferred embodiment, the Netbot is formed from three main functional modules: a user interface, an integrator and an I / O manager. This interacts briefly User interface module with the user to receive user requests for information and to format and present information responses from the information sources connected to the network. The user interface is advantageously adapted to the specific information domain that is being accessed. The integrator module accepts a user request from the user interface module, selects relevant information sources, formats them for network transmission to each relevant information source, receives responses from these sources, understands these responses, and returns the relevant portions of the responses to the user interface module for display to the user. The I / O manager module carries out a hardware, operation and network-specific coupling for the user interface and integrator modules, so that the porting of a net bot to different hardware platforms, operating systems or networks only requires changes in a well-modularized code.
Bei speziellen alternativen Implementierungen kann entweder auf die Nutzerschnittstelle oder die I/O-Managermodule oder auf beides verzichtet werden. Beispielsweise können die Funk tionen dieser Module bereits durch andere Betriebssystemkomponenten ausgeführt werden. Ein Netbot kann nur eine oder mehrere der dargelegten Einrichtungen bereitstellen, ohne andere bereitzustellen. Beispielsweise ist bei einigen Ausführungen ein Netbot nützlich, der das Abfrage-Routing allein oder in Kombination mit einer Relevanzrangfolge ausführt. Bei anderen Ausführungen ist ein Netbot lediglich in der Lage Abfragen zu formatieren und Antworten zu verstehen. Des weiteren können zusätzliche Module in einem Netbot vorhanden sein oder es kann auf diese durch den Netbot zugegriffen werden. Beispielsweise kann ein Lernmodul vorhanden sein, das dafür sorgt, daß ein Netbot automatisch die Charakteristika einer neuen Netzinformationsquelle erfaßt. Schließlich können, wie es Fachleuten bekannt ist, die von den beschriebenen Modulen ausgeführten Funktionen auf alternative Arten über eine größere oder kleinere Anzahl von Modulen verteilt sein oder in solche gruppiert werden.For special alternative implementations can either be on the user interface or the I / O manager modules or to do without both. For example, the Functions of these modules already through other operating system components accomplished become. A Netbot can only use one or more of the facilities outlined deploy without providing others. For example, at some versions a netbot useful that performs query routing alone or in combination with a relevance ranking. at other versions a Netbot is only able to format queries and Understand answers. Furthermore, additional modules can be in a Netbot exist or can be accessed through the Netbot become. For example, there may be a learning module that ensures that a Netbot automatically the characteristics of a new network information source detected. Finally can like it is known to those skilled in the art the functions performed by the modules described in alternative ways a larger one or smaller number of modules can be distributed or grouped into such become.
Liegen keine speziellen Präferenzen vor, können die Prozesse dieser Erfindung in einer vollkommen prozedurorientierten Programmiersprache, wie beispielsweise C, oder in einer vollkommen objektorientierten Programmiersprache, wie beispielsweise C++ auf den dargelegten Hardwarekonfigurationen implementiert sein.There are no special preferences before, can the processes of this invention in a fully procedural manner Programming language, such as C, or in a perfect object-oriented programming language, such as C ++ implemented hardware configurations.
DAS NUTZERSCHNITTSTELLENMODULTHE USER INTERFACE MODULE
In Einzelheiten weist das Nutzerschnittstellenmodul sowohl wichtige Funktionen auf, die den Netbot-Nutzerschnittstellen unabhängig von der Informationsdomäne, auf die Netbots gerichtet sind, gemeinsam sind, als auch Adaptierungen an die spezielle Informationsdomäne eines speziellen Netbots. Wendet man sich zunächst den bevorzugten gemeinsamen Funktionen zu, besteht eine solche in der Fähigkeit, sich an die Präferenzen eines Benutzers für die Wechselwirkung mit einem Netbot zu erinnern. Derartige im Gedächtnis behaltene Präferenzen umfassen beispielsweise, ob ein Netbot Seiten abrufen soll, um ihre Relevanz selbst zu ermitteln, die Anzahl N oder relevante Informationsquellen, die abgefragt werden sollen, Anzeigecharakteristika, etc. Eine zweite solche gemeinsame Funktion ist die stufenweise Anzeige von aus einer Anfrage erhaltenen Informationen. Da jede Anfrage gewöhnlich einen Netbot dazu veranlaßt, viele unabhängige Informationsquellen zu befragen, werden Ergebnisse häufig zu stark unterschiedlichen Zeiten empfangen. Die unmittelbare Anzeige von nicht gleichzeitig empfangenen Ergebnissen würde ungewünschte Effekte, wie beispielsweise ein Flimmern des Bildschirms oder eine verwirrende Neuanordnung bereits angezeigter Daten, hervorrufen. Eine stufenweise Anzeige trägt einerseits den Wünschen eines Benutzers, Infor mationen rasch zu sehen, und andererseits den Wünschen des Benutzers nach einer umfassenden Übersicht über alle empfangenen Informationen, die gemäß ihrer Relevanz sortiert sind, Rechnung.The user interface module provides details both important functions that the Netbot user interfaces independently from the information domain, to which Netbots are directed, are common, as well as adaptations to the special information domain of a special netbot. First, turn to the preferred common Features too, such is the ability to adhere to preferences of a user for to remember the interaction with a Netbot. Such kept in mind preferences include, for example, whether a Netbot should fetch pages to their Determine relevance yourself, the number N or relevant information sources, to be queried, display characteristics, etc. A second such a common function is the gradual display of from one Information received. Since every request is usually one Caused Netbot to many independent Questioning information sources often results too received very different times. The immediate ad results not received at the same time would have undesirable effects, such as a flickering of the screen or a confusing rearrangement data already displayed. A gradual display bears on the one hand the wishes of a user to see information quickly, and on the other hand the wishes the user after a comprehensive overview of all information received, the according to their Relevance sorted, invoice.
Die stufenweise Anzeigestrategie sieht vorzugsweise eines oder mehrere Fenster auf dem Bildschirm eines Benutzers mit mehreren definierten Ansichten des Erfüllungsprozesses der Anfrage zusammen mit bestimmten allgemeinen Nutzersteuerungsmitteln, wie beispielsweise Bildschirmknöpfen, um diese Fenster zu manipulieren, vor. In einem Fenster zeigt das Nutzerschnittstellenmodul Listen der befragten Informationsquellen an, wobei jede Quelle symbolisch als beispielsweise eine Netzadresse, ein Piktogramm oder eine andere kompakte Bildschirmdarstellung, dargestellt ist. Dann wird das Erscheinungsbild seiner zugehörigen Bildschirmdarstellung z. B. durch Verändern der Intensität, Ändern der Farbe etc., verändert, wenn eine Antwort von einer bestimmten Quelle empfangen wird. Ebenso wird ein Zählwert der Gesamtzahl der einzelnen Informationspiktogramme, die momentan empfangen wurden, dargestellt. Optional öffnet ein Klicken auf die Bildschirmdarstellung einer Informationsquelle ein weiteres Fenster mit entweder Information über diese Informationsquelle oder einer Anzeige der von dieser empfangenen Antworten, oder eines Zugangs zur Informationsquelle über das Netz, etc.The gradual display strategy preferably sees one or more windows on the screen of one User with multiple defined views of the fulfillment process the request together with certain general user control means, such as screen buttons, to manipulate these windows, before. That shows in a window User interface module Lists of information sources surveyed where each source is symbolic as, for example, a network address, a pictogram or other compact screen display, is shown. Then the appearance of its associated screen display z. B. by changing the intensity, changing the Color etc., changed, when a response is received from a particular source. As well becomes a count the total number of individual information pictograms that are currently were received. Optionally, a click on the screen display opens an information source another window with either information about this Source of information or an indication of the information received by it Responses, or access to the information source through the Network, etc.
Eines der allgemeinen Steuerungsmittel ist vorzugsweise als ein gewöhnlicher Zeige-an-Knopf implementiert, der, wenn er aktiviert wird, bewirkt, daß ein weiteres Fenster angezeigt wird, in dem eine Liste aller momentan empfangenen Antworten, abgestuft entsprechend ihrer abgeschätzten Relevanz für die Anfrage, dargestellt ist. Ein weiteres allgemeines Steuerungsmittel ist vorzugsweise als ein Mehrfach-Knopf in diesem letzten Fenster implementiert, mit dem, wenn er aktiviert wird, eine Neuanzeige aller früheren Datenelemente vereinigt mit neu seit der letzten Fensteranzeige empfangenen Elementen bewirkt wird. Die neu empfangenen Elemente werden in die Anzeigeliste in der Reihenfolge oder Relevanz eingebunden und werden gegenüber früheren Elementen beispielsweise durch ihre Farbe oder Intensität unterschieden, so daß der Nutzer ein erneutes Scannen früherer Elemente vermeiden kann. Optional öffnet ein Klicken auf ein Datenelement ein noch weiteres Informationsfenster, das entweder die Quelle des Elementes, eine Anzeige der Antwort, die das Element enthält, oder einen Zugang über das Netz zur Quelle des Elements, etc., angibt.One of the general control means is preferably implemented as an ordinary show-to-button, which, when activated, causes another window to be displayed in which a list of all the responses currently received, graded according to their estimated relevance for the request, is shown. Another general control means is preferably implemented as a multi-button in this last window, which, when activated, redisplays all previous data items combined with new elements received since the last window display. The newly received elements are included in the display list in order or relevance and are distinguished from previous elements, for example by their color or intensity, so that the user can avoid re-scanning previous elements. Optionally, clicking on a data element opens yet another information window, which either indicates the source of the element, a display of the response containing the element, or access via the network to the source of the element, etc.
Zusätzlich zu derartigen allgemeinen Funktionen und Steuerungsmitteln implementiert ein Netbot-Nutzerschnittstellenmodul vorzugsweise spezielle Designs, Formatierungen und Felder, die für die Informationsdomäne geeignet sind, für die es entworfen wurde. Beispielsweise kann ein Netbot für einen vergleichenden Einkauf in einer Informationsdomäne elektronischer Läden im Internet eine spezielle Schnittstellendarstellung aufweisen, die nach Produktname, Modell und Preis bezeichnete Felder enthält. Andererseits kann ein Netbot für einen Zugriff auf eine Informationsdomäne von Online-Internetindizes eine Schnittstelle mit Feldern umfassen, die mit Elementen benannt sind, die aus der Anfrage abgeleitet sind.In addition to such general ones Functions and control means are implemented by a Netbot user interface module preferably special designs, formatting and fields that are suitable for the information domain are for who designed it. For example, a netbot for one comparative shopping in an information domain of electronic shops on the Internet have a special interface representation that is sorted by product name, Contains designated fields for model and price. On the other hand, a Netbot for one Access to an information domain online internet indexes include an interface with fields, which are named with elements derived from the query.
In einer Netbot-Ausführung befinden
sich die meisten Funktionen und Module auf an ein Netz angeschlossenen
Servern, auf die ein Nutzer aus der Ferne zugreifen kann. Beispielsweise
kann der Nutzer auf einen Netbot über das Internet mit den World-Wide-Web-Protokollen
unter Verwendung eines Webbrowsers, wie beispielsweise Netscape,
zugreifen. In diesem Fall baut die Nutzerschnittstelle HTML-formatierte
Seiten auf, die über
das Netz durch den I/O-Manager übertragen
werden.
Obwohl die Nutzerschnittstelle primär in Form von Fenstern und Knöpfen beschrieben ist, ist es für einen Fachmann erkennbar, daß die Erfindung an andere Anzeigeparadigmen anpaßbar ist, mit welchen eine Anzeige von Informationen und Eingabe von Nutzerbefehlen bereitgestellt wird. Beispielsweise kann das Nutzerschnittstellenmodul den gesamten Schirm steuern und graphische Anzeigen ohne Intervention eines Windowingsystems darstellen.Although the user interface is primarily in the form of windows and buttons it is for one skilled in the art recognizes that the Invention is adaptable to other display paradigms with which a display of information and input of user commands becomes. For example, the user interface module can the entire Control screen and graphic displays without the intervention of a windowing system represent.
Das Nutzerschnittstellenmodul wird vorzugsweise mit einer objektorientierten Programmiersprache implementiert, die durch eine Klassenbibliothek, die Windowingfunktionen bereitstellt, ergänzt ist. Bei einer bevorzugten Implementierung wird die Java-Sprache zusammen mit dem java.awt-Paket verwendet. Siehe beispielsweise Flanagan, 1996, Java In A Nutshell, O'Reilly & Associates, Abschnitte 5 und 19.The user interface module will preferably implemented with an object-oriented programming language, through a class library that provides windowing functions, added is. In a preferred implementation, the Java language used together with the java.awt package. See for example Flanagan, 1996, Java In A Nutshell, O'Reilly & Associates, sections 5 and 19.
DAS INTEGRATORMODULTHE INTEGRATOR MODULE
DER ANFRAGE-ROUTERTHE INQUIRY ROUTER
Ein gut geführter Netbot sollte vorzugsweise eine knappe Netzbandbreite und Ressourcen zur Informationsquellenbearbeitung in einer kompetenten und effizienten und sparsamen Weise verwenden, wobei gleichzeitig jede Nutzeranfrage bestmöglich beantwortet wird. Ein derartiges Verhalten minimiert die Nutzung der Ressourcen, und es wird daher die beste Gesamtleistung sowohl für den individuellen Netbot als auch für alle gleichzeitig auf einem Netz arbeitenden Netbots erzielt.A well-managed netbot should be preferred a scarce network bandwidth and resources for processing information sources use in a competent, efficient and economical way, At the same time, every user request is answered as best as possible. On such behavior minimizes the use of resources, and it will therefore be the best overall performance for both the individual Netbot for everyone as well Netbots working simultaneously on a network.
Der Anfrage-Router ist für das Erreichen dieses Verhaltens wichtig, da er es ermöglicht, daß der Netbot Anfragen nur zu Informationsquellen sendet, von denen es wahrscheinlich ist, daß sie für eine Anfrage relevante Information aufweisen. Aus einer Nutzeranfrage bestimmt der Anfrage-Router die Relevanz jeder Informationsquelle für die gegebene Anfrage und gibt die N relevantesten Quellen zurück. N ist ein gemäß der Nutzerpräferenz steuerbarer Parameter und kann sehr klein, z. B. 1, sein. Diese Relevanzbestimmung ist vorzugsweise eher überinklusiv als unterinklusiv. Ein gelegentliches Einschließen einer irrelevanten Informationsquelle wird gegenüber einem Auslassen einer relevanten und wichtigen Quelle bevorzugt. Des weiteren wird bevorzugt, daß diese Relevanzbestimmung schnell veranschlagt werden kann und keine aufwendigen Verarbeitungstechniken erfordert.The request router is for reaching This behavior is important because it allows the Netbot to only make requests Sends information sources that are likely to be used for a request have relevant information. Determined from a user request the request router the relevance of each information source for the given Query and returns the N most relevant sources. N is a controllable according to user preference Parameters and can be very small, e.g. B. 1. This determination of relevance is preferably more inclusive as under-inclusive. Occasionally including an irrelevant source of information is opposite omitting a relevant and important source. It is further preferred that this Relevance determination can be estimated quickly and no complex Processing techniques required.
Bei einer bevorzugten Ausführungsform berechnet der Anfrage-Router einen numerischen Relevanzrangwert für jede Informationsquelle, mit dem die Relevanz der Quelle abgeschätzt wird. Diese Berechnung basiert auf dem Konzept "konzeptioneller Klassen". Dabei wird jede Informationsquelle im voraus mit den konzeptionellen Klassen markiert, für die sie relevant ist. Dann bildet der Anfrage-Router jede Anfrage auf die dafür relevanten konzeptionellen Klassen ab und findet Informationsquellen mit konzeptionellen Klassen, für die die Anfrage gemeinsam sind. Das Abbilden einer Anfrage auf ihre konzeptionellen Klassen wird vorzugsweise mit einer Hash-Funktion ausgeführt.In a preferred embodiment the request router calculates a numerical relevance rank for every Information source used to estimate the relevance of the source. This calculation is based on the concept of "conceptual classes". Each will Information source marked in advance with the conceptual classes, for the it is relevant. The request router then forms each request the relevant ones conceptual classes and finds information sources with conceptual Classes, for who share the request. Mapping a request to yours Conceptual classes will preferably have a hash function executed.
AGGREGATIONSMASCHINEAGGREGATION MACHINE
Die Aggregationsmaschine ist die koordinierende Funktion des Integratormoduls. Sie empfängt die Nutzeranfrage vom Nutzerschnittstellenmodul und fordert den Anfrage-Router auf, eine Liste der N Informationsquellen bereitzustellen, die für die gegebene Anfrage am relevantesten sind. Sie ruft dann die N Wrapper für die N Informationsquellen von der Wrapper-Datenbank ab. Geführt durch die N Wrapper übersetzt die Aggregationsmaschine die Anfrage in die Anfrageformate, die von jeder der N Informationsquellen akzeptiert werden und überträgt die N Anfragen zum I/O-Manager zur Netzübertragung. Für einige Quellen kann die Anfrage im Format einer Form sein, die zurückgegeben werden soll. Wenn eine Antwort von einer Informationsquelle erhalten wird, extrahiert die Aggregationsmaschine, wiederum geführt durch die entsprechenden Wrapper, Daten aus der Antwort und ordnet sie in einer Liste von Datenfeldern an, die Tupel-Format genannt werden, die für die spezielle Informationsdomäne relevant sind. Optional kann jedes Tupel unter Verwendung eines Verfahrens, das für die spezielle Informationsdomäne angemessen ist, einer Prioritätsreihenfolge zugeordnet werden. Schließlich gibt die Aggregationsmaschine die Tupel, sortiert in der Prioritätsreihenfolge, falls eine Priorität bestimmt wurde, zum Nutzerschnittstellenmodul weiter, wenn der Manager für die stufenweise Anzeige Daten zur Darstellung für den Benutzer anfordert.The aggregation machine is the coordinating function of the integrator module. It receives the user request from the user interface module and requests the request router to provide a list of the N information sources that are most relevant to the given request. It then calls the N wrappers for the N information sources from the wrapper database. Led by the N wrappers, the aggregation machine translates the request into the request formats that are accepted by each of the N information sources and transmits the N requests to the I / O manager for network transmission. For some sources, the request can be in the form of a form to be returned. When a response is received from an information source, the aggregation engine, again guided by the appropriate wrapper, extracts data from the response and arranges it in a list of data fields called tuple format that are relevant to the particular information domain. Optionally, each tuple can be assigned a priority order using a method that is appropriate for the particular information domain. Finally, the aggregation engine passes the tuples, sorted in order of priority, if a priority has been determined, to the user interface module when the manager requests data to be presented to the user for the gradual display.
Wenn beispielsweise die Informationsdomäne in Bezug zu Internet-Online-Softwarehändlern steht, beinhalten die Tupel gegebenenfalls relevante Felder wie z. B. Produktname, Hersteller, Softwareversionsnummer, erforderliches Betriebssystem, Preis, etc. Eine beispielhafte Prioritätsreihenfolge der Tupel kann je nach Benutzerpräferenz entsprechend dem Preis, der Lieferdauer oder einem anderen Faktor gegeben sein.For example, if related to the information domain to Internet online software retailers , the tuples may contain relevant fields such as z. B. Product name, manufacturer, software version number, required Operating system, price, etc. An example priority order the tuple can, depending on user preference, according to the price, the delivery period or another factor.
Falls, als ein weiteres Beispiel, die Informationsdomäne in Bezug zu Suchmaschinen des World Wide Web ("WWW") steht, deren Indexinformationsseiten im allgemeinen auf dem WWW verfügbar sind, beinhalten die Tupel gegebenenfalls relevante Felder, wie z. B. den Titel der indizierten Seite, die Internetadresse (universal resource locator "URL") dieser Seite, Punktzahlen bezüglich der Relevanz, mit welchen der Bezug der indizierten Seite zur Anfrage abgeschätzt wird, beschreibenden Text, etc. Eine beispielhafte Prioritätsreihenfolge kann auf der normierten Relevanzabschätzung durch den Netbot der indizierten Seite für die Anfrage basieren. Falls der Netbot die indizierte Seite nicht abruft, summiert er die normalisierten Relevanzabschätzungen für diese Antwort, die von jeder der Suchmaschinen zurückgegeben werden. Falls eine Suchmaschine eine Relevanzabschätzung nicht zurückgibt, wird ein Standardeinstellungswert verwendet. Die erhaltenen Relevanzabschätzungen werden dann durch lineares Anpassen der zurückgegebenen Punktzahlen so normiert, daß diese ein gemeinsames Maximum von z. B. 1000 haben, und dann werden die angepaßten Punktzahlen mit einem Aussagewahrscheinlichkeitsfaktor multipliziert. Dieser Aussagewahrscheinlichkeitsfaktor, der im Bereich von 0 bis 1 liegt, ist eine vorbestimmte Abschätzung der Zuverlässigkeit von bestimmten, den Informationsquellen eigenen Relevanzabschätzungen. Er kann beispielsweise durch die praktische Erfahrung mit den Relevanzabschätzungen der Informationsquelle bestimmt werden. Alternativ kann der Benutzer den Netbot auffordern, die Seite abzurufen, um seine eigene Relevanzabschätzung vorzunehmen. Bei einer beispielhaften Ausführung wird für Anfragen, bei welchen das Vorhandensein entweder aller Anfrageworte oder einiger Anfrageworte erforderlich ist, die Abschätzung durch Scannen der Seite und Zählen der Anzahl von Anfrageworten, die tatsächlich vorhanden sind, und dann Skalieren des Zählwerts ermittelt, so daß das Vorhandensein aller Worte zum gemeinsamen maximalen Relevanzwert führt. Für Anfragen, die das Vorhandensein eines Satzes erfordern, wird die Abschätzung beispielsweise durch Subtrahieren vom gemeinsamen Maximum einer normierten Summe des Quadrates der Entfernung jedes Wortes des Satzes in der Seite vom nachfolgenden Wort in dem Satz ermittelt. Damit ist die Relevanz hoch, wenn der Satz zusammenhängend auf der Seite erscheint, während die Relevanz niedrig ist, wenn die Worte des Satzes auf der Seite weit voneinander getrennt sind.If, as another example, the information domain in relation to search engines of the World Wide Web ("WWW") stands, whose index information pages generally on the WWW available the tuples may contain relevant fields such as z. B. the title of the indexed page, the Internet address (universal resource locator "URL") of this page, scores in terms of the relevance with which the relation of the indexed page to the request estimated will, descriptive text, etc. An example order of priority can be on the standardized relevance assessment through the netbot of the indexed page based on the request. If the netbot does not retrieve the indexed page, it sums the normalized relevance estimates for this Response returned by each of the search engines. If one Search engine a relevance assessment not returns a default setting value is used. The relevance assessments received are then like this by linearly adjusting the returned scores standardized that this a common maximum of z. B. 1000, and then the matched Multiplied scores by a probability factor. This probability factor, which is in the range from 0 to 1 is a predetermined estimate of reliability from certain relevance assessments specific to the information sources. For example, through practical experience with relevance assessments the source of information can be determined. Alternatively, the user can ask the Netbot to access the page to make its own relevance assessment. In an exemplary embodiment is for Requests in which the presence of either all query words or some query words is required by the estimate Scan the page and count the number of query words that actually exist and then scaling the count determined so that the Presence of all words for the common maximum relevance value leads. For inquiries, The estimation, for example, will require the existence of a sentence by subtracting from the common maximum of a normalized sum of the square of the distance of each word of the sentence in the page determined from the following word in the sentence. That is the relevance high if the sentence is contiguous appears on the page while The relevance is low if the words of the sentence are on the page are far apart.
Zusammenfassend wird für die Mehrzahl der Informationsdomänen die Prioritätsreihenfolge aus einer Relevanzberechnung, wie bei dem Beispiel der WWW-Suchmaschine bestimmt. Jedoch kann eine Prioritätsreihenfolge für bestimmte Domänen, wie beispielsweise Online-Softwarehändler einfach aus den Werten eines oder mehrerer numerischer Felder der Antwort-Tupel bestimmt werden.In summary, for the majority of the information domains the order of priority from a relevance calculation, as in the example of the WWW search engine certainly. However, a priority order for certain domains such as online software retailers from the values of one or more numeric fields of the answer tuple be determined.
DIE WRAPPER-DATENBANKTHE WRAPPER DATABASE
Die bevorzugte Art, Informationsquellen und ihre Fähigkeiten, insbesondere ihre Anfrageformate und Antwortformate zu beschreiben, sind kompakte modulare erklärende Beschreibungen, die Wrapper genannt werden. Da ein Netbot auf mehrere hundert bis zu mehreren tausend Informationsquellen zugreifen kann, sind die Beschreibungen der Quellen vorzugs weise kompakt und erfordern ein Minimum an Speicherplatz. Darüber hinaus, da häufig neue Informationsquellen erzeugt werden und bestehende Quellen ihr Format häufig ändern, ist eine einfache Pflege von Quellenbeschreibungen von Bedeutung. Eine modulare erklärende Beschreibung anstelle einer komplexen Prozedur-orientierten Beschreibung erleichtert eine derartige Pflege. Bei einer Ausführung dieser Erfindung können Wrapper durch ein separates Modul für Informationsquellen, die ausreichend regelmäßige Formate aufweisen, unterrichtet werden.The preferred way of sources of information and their skills in particular to describe your request formats and response formats, are compact modular explanatory Descriptions called wrappers. Because a netbot on several can access a hundred to several thousand sources of information, the descriptions of the sources are preferably compact and require a minimum of storage space. In addition, since often new Sources of information are generated and existing sources their format change frequently is easy maintenance of source descriptions of importance. A modular explanatory Description instead of a complex procedure-oriented description facilitates such care. When executing this Invention can Wrapper through a separate module for information sources that sufficiently regular formats have to be taught.
Für jede Informationsquelle umfaßt bei einer beispielhaften Ausführungsform jeder Wrapper vorzugsweise die folgende Information:
- 1. Die Internetadresse (Universal Resource Locator "URL") der Informationsquelle;
- 2. Die konzeptionellen Klassen der Quelle;
- 3. Eine Beschreibung der Abbildung aus Anfrageargumenten, z. B. Worten oder Sätzen, auf Felder der Anfrage oder eine HTML-definierte Form, die verwendet wird, um die Quelle abzufragen (einschließlich einer Siteunterstützung für beliebige, alle, Satz- oder Nahanfragen);
- 4. eine Beschreibung des Formats der Anfrageantwort oder des HTML-Seitenlayouts, das eine syntaktische Analyse relevanter Information gegenüber anderer Information und irrelevantem Formatierungsinhalt ermöglicht.
- 1. The Internet address (Universal Resource Locator "URL") of the information source;
- 2. The conceptual classes of the source;
- 3. A description of the mapping from query arguments, e.g. B. words or sentences, on fields of the query, or an HTML-defined form used to query the source (including site support for any, all, sentence, or close queries);
- 4. A description of the format of the query response or the HTML page layout, which enables a syntactical analysis of relevant information against other information and irrelevant formatting content.
Zumindest die Punkte 3. und 4. werden vorteilhafterweise in der Wrapper-Beschreibungssprache dieser Erfindung geschrieben.At least points 3 and 4 will be advantageously in the wrapper description language of this invention written.
Ein Netbot kann Wrapper auf verschiedene Weisen abrufen. Bei einer Ausführung kann die Informationsquelle selbst ihren eigenen Wrapper auf eine Anfrage von einem Netbot liefern. Bei einer alternativen Ausführung kann der Netbot seine eigenen Wrapper auf verschiedene Weisen liefern. Beispielsweise können Wrapper im Netbot selbst eingebaut sein, insbesondere wenn der Netbot nur auf wenige Informationsquellen zugreift. Auch können Wrapper in einer lokalen Datenbank gespeichert sein oder können auf Anfrage von einer zentralisierten Datenbank heruntergeladen werden.A netbot can wrapper on different Retrieve wise men. In one execution the source of information can put its own wrapper on one Deliver a request from a Netbot. In an alternative execution can the Netbot deliver its own wrappers in a number of ways. For example, wrappers be built into the Netbot itself, especially if the Netbot only accesses few sources of information. You can also use wrappers in a local Database can be stored or can be requested from a centralized Database can be downloaded.
Die Wrapper-Beschreibungssprache (worauf nachfolgend als "WDL" Bezug genommen wird) dieser Erfindung erleichtert die semantische Beschreibung von Anfragen, Formen und Seiten durch Verwendung eines erklärenden Beschreibungsformats, das Grammatikmerkmale und gewöhnliche Ausdrücke kombiniert. Im folgenden wird ein Beispiel dieser Beschreibungssprache dargelegt. Eine detaillierte Beschreibung wird in einem späteren Abschnitt präsentiert. Die verwendete Syntax folgt Fachleuten bekannten Konventionen zur Bestimmung der Grammatik, einschließlich von gewöhnlichen Ausdrücken. Siehe z. B. Schwartz, 1993, Learnin Perl, O'Reilly & Associates, Inc., Kapitel 7; Aho et al., 1986, Compilers Principles, Techniques, and Tools, Addison Wesley Publishing Co., Abschnitt 3.3.The wrapper description language (hereinafter referred to as "WDL") this invention facilitates the semantic description of requests, Shapes and pages using an explanatory description format, the grammar features and ordinary expressions combined. The following is an example of this description language explained. A detailed description will be given in a later section presents. The syntax used follows conventions known to experts Determination of grammar, including ordinary ones Express. See e.g. B. Schwartz, 1993, Learnin Perl, O'Reilly & Associates, Inc., Chapter 7; Aho et al., 1986, Compilers Principles, Techniques, and Tools, Addison Wesley Publishing Co., section 3.3.
Im folgenden wird eine beispielhafte Beschreibung in WDL einer typischen, von einer WWW-Suchmaschine zurückgegebenen Seite angegeben. Der WDL-Interpreter verwendet die Seitenbeschreibung, um eine Seite syntaktisch zu analysieren und bestimmte spezifizierte Aktionsanweisungen auszuführen. Man beachte, daß "stuff" ein in der WDL reserviertes Wort ist, das jeden Zeichen-String bis zum ersten Auftreten eines zwingenden darauffolgenden String-Literals abgleicht.The following is an example Description in WDL of a typical WWW search engine returned Page specified. The WDL interpreter uses the page description, to parse a page and specify specific ones Execute action instructions. Note that "stuff" is reserved in the WDL Word is that every character string until the first occurrence of a mandatory string literals.
Damit wird eine Seite beschrieben, die unter anderen Daten aus einer Sequenz von null oder mehr Elementen aufgebaut ist. Im Detail ist für eine Seite bestimmt, daß sie aus Stuff, dann dem String <dl>, dann null oder mehreren Elementen, dann null oder mehreren Zeichen ("."), dann schließlich dem Ende der Seite ("$") besteht. Im allgemeinen umfaßt ein Element drei Relevanzfelder, die mit (Stuff) bezeichnet sind und auf die sequentiell mit $0, $1 und $2 Bezug genommen wird, die durch die "output ()"-Anweisung ausgegeben werden, wenn ein Element erkannt wird. Im Detail wird für ein Element bestimmt, daß es aus Stuff, dann dem String <dt>, dann weiterem Stuff, dann dem String '=''', dann dem ersten Feld des Interesses, auf das nachfolgend mit $0 Bezug genommen wird, dann dem String '''><strong>', dann dem zweiten Feld des Interesses, auf das später mit $1 Bezug genommen wird, dann dem String ''</strong></a>'', dann weiterem Stuff, dann dem String "<dd>", dann dem dritten Feld des Interesses, auf das nachfolgend mit $2 Bezug genommen wird, dann dem String "<br>" besteht. Die Aktionsanweisung in den Klammern, die in diesem Fall die Ausgabe der Variablen $0, $1 und $2 mit den Bindungen bestimmt, wenn ein <item> passend ist, wird ausgeführt, wenn jedes Element erkannt ist.This describes a page which among other data from a sequence of zero or more elements is constructed. In detail is for one side determines that it from stuff, then the string <dl>, then zero or more Elements, then zero or more characters ("."), then finally the end of the page ("$"). In general comprises An element has three relevance fields, which are labeled (Stuff) and sequentially referred to as $ 0, $ 1 and $ 2, the through the "output () "Statement issued when an item is recognized. In detail is for an item determines that it from stuff, then the string <dt>, then another stuff, then the string '=' '', then the first field of interest, followed by $ 0 Is referenced, then the string '' '> <strong>', then the second field of interest, on that later is referred to as $ 1, then the string '' </strong> </a> '', then another stuff, then the string "<dd>", then the third Field of Interest referred to below as $ 2 then the string "<br>" exists. The instruction in the Parentheses, which in this case output the variables $ 0, $ 1 and $ 2 with the ties determined if a <item> matches is is executed when every element is recognized.
DAS NETBOT-SYSTEMTHE NETBOT SYSTEM
Die bevorzugte funktionale Struktur
eines Netbots kann Systemhardwarekomponenten gemäß verschiedener Alternativen
zugeordnet sein. Die bevorzugte Alternative hängt in jedem Fall davon ab,
mit welcher Zuteilung von Funktionen eine rasche Antwort und vernünftige Kosten
erzielt werden.
Das Netz
In einem derartigen Netz kann ein
Netbot verschiedene Ausführungen
haben. In einer vollkommen lokalen Ausführung befinden sich Netbot-Funktionen
in einer lokalen Netbot-Software
Beispielsweise ist der Computer
Die verschiedenen Computer eines Netbot-Systems können mit Software versehen sein, um die Verfahren dieser Erfindung entweder von computerlesbaren Medien oder durch Laden über ein Netz durchzuführen. Diese Erfindung ist an bekannte magnetische und optische Medien, wie beispielsweise Platten, Bänder und CD-ROM anpaßbar.The different computers one Netbot systems can be softwareed to either implement the methods of this invention of computer-readable media or by loading via a network. This Invention is in known magnetic and optical media, such as Plates, tapes and Customizable CD-ROM.
5.2. DER I/O-MANAGER5.2. THE I / O MANAGER
Das I/O-Managermodul führt das Hardware-, Betriebssystem- und netzspezifische Interfacing für das Integratormodul aus. Die Netzwerkkopplung umfaßt die Aufgaben eines Sendens von Anfragen und Empfangens von Antworten von an das Netz angeschlossenen Informationsquellen. Eine wichtige Anwendung der Netbots dieser Erfindung ist, Informationen über das Internet abzurufen. Bei dieser Anwendung ist der I/O-Manager dafür verantwortlich, die relevanten Protokolle des WWW, Gopher, FTP, der Internetwerkzeuge etc. zu implementieren. Optional kann er temporär Seiten und andere Daten zwischenspeichern, um die Reaktionszeit zu verbessern.The I / O manager module does that Hardware, operating system and network-specific interface for the integrator module out. The network coupling includes the tasks of sending requests and receiving responses from information sources connected to the network. An important Application of the Netbots of this invention is information on the Internet retrieve. In this application, the I / O manager is responsible for the relevant protocols of the WWW, Gopher, FTP, the Internet tools etc. to implement. Optionally, he can temporarily save pages and other data, to improve the response time.
Das Betriebssysteminterfacing umfaßt die Aufgabe einer Fensterverwaltung für das Nutzerschnittstellenmodul und eines Zugriffs auf die Wrapper-Datenbank, falls sie vorhanden ist.Operating system interfacing includes the task a window manager for the user interface module and access to the wrapper database, if it exists.
Vorzugsweise ist der I/O-Manager aus kommerziell verfügbaren Protokollstapeln, Windowingbibliotheken, wie beispielsweise dem Java.awt-Paket und anderen Werkzeugen, aufgebaut. Bei einigen Implementierungen können mehr oder weniger I/O-Managerfunktionen durch andere Systemkomponenten auf dem an das Netz angeschlossenen Computer ausgeführt werden. Optional ist der I/O-Manager so konzipiert, daß er für zahlreiche Maschinen skalierbar ist, damit kein Mehrfachpfadbetrieb oder wiedereintrittsinvarianter Code erforderlich ist und damit er plattformübergreifend und beständig ist.Preferably the I / O manager from commercially available Protocol stacks, windowing libraries such as the Java.awt package and other tools. In some implementations can more or less I / O manager functions through other system components on the computer connected to the network. Optionally, the I / O manager is designed to be scalable for numerous machines is therefore no multi-path operation or re-entry invariant Code is required to be cross-platform and persistent.
5.3. DIE AGGREGATIONSMASCHINE5.3. THE AGGREGATION MACHINE
Bei der bevorzugten Ausführungsform werden die zuvor für die Aggregationsmaschinenkomponente dieser Erfindung identifizierten Funktionen durch den folgenden Prozeß ausgeführt. Suchprozesse nach der Informationsquelle laufen parallel ab, da alle Anfragen ohne Warten auf irgendwelche Antworten übertragen werden.
- 1. Empfange eine Nutzeranfrage vom Nutzerschnittstellenmodul;
- 2. Führe ein Anfrage-Routing durch, um die für die Nutzeranfrage N relevantesten Informationsquellen zu ermitteln;
- 3. Für jede der N relevanten Informationsquellen:
- A. Rufe den Wrapper von dieser Informationsquelle ab (beispielsweise von der Quelle selbst oder von einer lokalen oder entfernten Wrapper-Datenbank);
- B. Geführt durch den Wrapper, formatiere die Nutzeranfrage in der Form oder dem Format, das für die Informationsquelle erforderlich ist;
- C. Übertrage den übersetzten Befehl zum I/O-Modul zur Übertragung zur Informationsquelle;
- 4. Initialisiere die Liste von Antworten, so daß sie leer ist;
- 5. Bis ein nutzerspezifiziertes Zeitlimit erreicht ist, führe aus:
- A. Wenn eine Antwort einer Informationsquelle vom I/O-Modul empfangen wurde und zum Integrator übertragen wurde, dann:
- i. Geführt durch den Wrapper für diese Informationsquelle, analysiere die Syntax der Antwort, um die zurückgegebene Information zu verstehen, streiche den sitespezifischen Formatierungstext und anderen irrelevanten Inhalt, und sammle relevante Felder in Tupel;
- ii. Füge jedes Tupel zur Liste von Tupeln hinzu, wobei optional eine Bestimmung einer Prioritätsreihenfolge, ein Löschen von Duplikaten, etc. ausgeführt wird,
- B. Warte auf die nächste Antwort;
- 6. Füge die Liste erzeugter Tupel zum Nutzerschnittstellenmodul auf eine Aufforderung hin hinzu, die beispielsweise auf Grund einer Nutzeraktivierung der Zeige-Knopf- oder Mehr-Knopf-Steuerungsmittel erfolgen kann.
- 1. Receive a user request from the user interface module;
- 2. Perform request routing to determine the most relevant information sources for user request N;
- 3. For each of the N relevant information sources:
- A. Retrieve the wrapper from this source of information (for example, from the source itself or from a local or remote wrapper database);
- B. Led by the wrapper, format the user request in the form or format required for the information source;
- C. Transfer the translated command to the I / O module for transfer to the information source;
- 4. Initialize the list of answers so that it is empty;
- 5. Until a user specified time limit is reached, do:
- A. If a response from an information source was received by the I / O module and transmitted to the integrator, then:
- i. Guided by the wrapper for this information source, analyze the syntax of the response to understand the information returned, delete the site-specific formatting text and other irrelevant content, and collect relevant fields in tuples;
- ii. Add each tuple to the list of tuples, optionally determining a priority order, deleting duplicates, etc.
- B. Waiting for the next answer;
- 6. Add the list of generated tuples to the user interface module upon request, which can be done, for example, due to user activation of the pointing button or multi-button control means.
Wenn mehrere Informationsquellen abgefragt werden, wird in Schritt 6 bevorzugt, dem Nutzerschnittstellenmodul und damit dem Nutzer eine einzelne zusammengefügte Liste von Tupeln darzulegen, die aus den Antworten entnommen sind und gemäß einer Abschätzung der Signifikanz oder Relevanz jedes Tupels für den Benutzer sortiert sind. Eine derartige Abschätzung wird vorzugsweise gemäß Methoden, die für die Informationsdomäne, auf welche der Netbot gerichtet ist, spezifisch sind, ausgeführt. Für bestimmte Domänen kann eine Signifikanzabschätzung direkt aus dem Wert eines oder mehrerer Datenfelder in den Tupeln gebildet werden. Beispielsweise kann entsprechend der Nutzerpräferenz in einer Domäne des elektronischen Einkaufens die Signifikanz nur mit dem Preis oder dem Lieferdatum verbunden sein. Jedoch wird für die meisten Domänen eine Signifikanzabschätzung entsprechend der Relevanz der zurückgegebenen Information ausgeführt, die durch Prüfen der Antworten von jeder Quelle ermittelt werden muß.If multiple sources of information are queried, the user interface module is preferred in step 6 and thus present the user with a single, assembled list of tuples, which are taken from the answers and according to an estimate of the Significance or relevance of each tuple are sorted for the user. Such an estimate is preferably according to methods the for the information domain, to which the Netbot is directed. For certain domains can make a significance assessment directly from the value of one or more data fields in the tuples be formed. For example, according to the user preference in a domain of electronic shopping the significance only with the price or the delivery date. However, for most Domains one significance assessment executed according to the relevance of the information returned by Check of responses from every source.
Bei einer bevorzugten Ausführungsform einer derartigen Relevanzbestimmung hat der Nutzer die Wahl, ob er den Netbot alle Informationsseiten selbst prüfen läßt oder nicht. Falls der Nutzer dies wählt, wird die Relevanz durch den Netbot gemäß einer domänenspezifischen Analysefunktion ermittelt. In einer Domäne von Informationsanfragen findet eine beispielhafte Analysefunktion die Anzahl und den Ort der Anfrageworte in der zurückgegebenen Antwort. Für Stichwortanfragen sind Antworten, bei welchen mehr Stichworte mit größerer Häufigkeit vorliegen, relevanter. Für auf Sätzen basierende Antworten sind Antworten, in welchen die Worte des Satzes einen geringeren Abstand haben, beispielsweise in einem einzelnen Satz oder sogar in einer zusammenhängenden Sequenz vorkommen, relevanter. Bei anderen Domänen werden geeignete Analysefunktionen bereitgestellt.In a preferred embodiment Such a relevance determination gives the user the choice of whether he has the Netbot check all information pages himself or not. If the user this chooses the relevance is determined by the Netbot according to a domain-specific analysis function determined. In a domain of An exemplary analysis function finds information requests The number and location of the query words in the response returned. For keyword requests are answers in which more keywords with greater frequency are more relevant. For on sentences based answers are answers in which the words of the sentence have a smaller distance, for example in a single one Sentence or even in a coherent sequence, relevant. For other domains suitable analysis functions are provided.
Falls der Nutzer entscheidet, daß er den Netbot die Antworten nicht prüfen läßt, ist der Netbot auf Relevanzabschätzungen angewiesen, die von den Informationsquellen zurückgegeben werden. Falls eine bestimmte Quelle keine Relevanzabschätzung zurückgibt, wird ein Standardeinstellungswert verwendet. Diese Abschätzungen werden dann normiert, so daß sie sich zwischen z. B. 0 und 1000 befinden und werden mit einem Aussagewahrscheinlichkeitsrangfaktor multipliziert. Dieser Aussagewahrscheinlichkeitsfaktor, der im Bereich von 0 bis 1 liegt, ist eine vorbestimmte Abschätzung der Verläßlichkeit der für eine bestimmte Informationsquelle eigenen Relevanzabschätzungen. Beispielsweise kann er durch praktische Erfahrung mit den Abschätzungen der Quelle bestimmt werden. Dort, wo dasselbe Tupel von zwei oder mehr Quellen zurückgegeben wird, werden die Relevanzwerte von allen diesen Quellen kombiniert. Optional werden die Relevanzabschätzungen, die von jeder Quelle zurückgegeben werden, so abgestimmt, daß sie eine einheitliche Verteilung im Normierungsbereich haben.If the user decides that the Netbot doesn't check the answers lets is the netbot on relevance assessments instructed that are returned from the information sources. If one certain source does not return a relevance estimate, becomes a default setting value used. These estimates are then normalized so that they between z. B. 0 and 1000 are and are with a probability factor multiplied. This probability factor, which is in the range is from 0 to 1 is a predetermined estimate of reliability the for a certain information source own relevance assessments. For example, through practical experience with the estimates the source can be determined. Where the same tuple of two or returned more sources the relevance values from all these sources are combined. Optional are the relevance assessments made by each source returned are so tuned that they have a uniform distribution in the standardization area.
In einer besonderen detaillierten Ausführung wird diese Bestimmung gemäß dem folgenden Prozeß durchgeführt. Hier wurde durch ein Anfrage-Routing eine Liste von K Informationsquellen, source_k mit k von 1 bis K, bestimmt und es wurden ihre Aussagewahrscheinlichkeitsgrade, crank_k zurückgegeben. Jede dieser Quellen wurde abgefragt, hat-Antworten zurückgegeben und es wurden K Listen von Informationstupeln, tupels_j, wobei j von 1 bis length_k ist, aus diesen Antworten entnommen. Die Präferenz des Benutzers für eine Netbotanalyse wird im Verifizierungsbitschalter V festgehalten. Die Variable t.score stellt die zusammengesetzte Relevanzpunktzahl für das Tupel t dar, die Variable t.sourcescore_k stellt die von der Informationsquelle source_k zurückgegebene Relevanzabschätzung für die Antwort, aus der das Tupel t entnommen wurde, dar.In a particularly detailed embodiment, this determination is carried out according to the following process. Here, a list of K information sources, source_k with k from 1 to K, was determined by query routing, and their degrees of confidence, crank_k, were returned. Each of these sources was queried, returned responses, and K lists of information tuples, tupels_j, where j is from 1 to length_k, were extracted from these answers. The user's preference for a Netbot analysis is recorded in the verification bit switch V. The variable t.score represents the composite relevance score for the tuple t, the variable t.sourcescore_k represents the relevance estimate for the answer from which the tuple t was taken, returned by the information source source_k.
Eingabe: Liste von K Quellen mit ihren Aussagewahrscheinlichkeitsrangpaaren (source_k, crank_k), die vom Anfrageroutingsystem erhalten wurden, K geordneten Listen von Tupeln tuples_k der Länge length_k, die von der Quelle source_k erhalten wurden, und dem Verifizierungsbitschalter V (Boolesch), der aus den Benutzerpräferenzen erhalten wurde.Entry: List of K sources with their confidence level pairs (source_k, crank_k), the received from the request routing system, K ordered lists of Tuples tuples_k of length length_k obtained from source source_k and the verification bit switch V (Boolean) obtained from user preferences.
Ausgabe: Zusammengefügte Liste aller Tupel sortiert nach Relevanz.Edition: Merged list all tuples sorted by relevance.
Für den Fachmann ist es erkennbar, daß diese Prozesse Änderungen der Routine und Verbesserungen unterzogen werden können, welche dieselben Funktionen in derselben Art und Weise ausführen. Insbesondere können andere Werte für den Normierungsbereich und ein anderer Standardeinstellungswert für die Relevanzabschätzungen der Informationsquelle verwendet werden. Diese Erfindung umfaßt derartige Änderungen der Routine. Diese Prozesse sind vorzugsweise in C++ implementiert, können jedoch auch alternativ in irgendeiner Prozedurorientierten oder Objekt-orientierten Programmiersprache implementiert sein.For Those skilled in the art will recognize that these processes change can be subjected to routine and improvements which perform the same functions in the same way. In particular can other values for the normalization range and another standard setting value for the relevance assessments the information source can be used. This invention includes such changes the routine. These processes are preferably implemented in C ++, can however alternatively in any procedure-oriented or Object-oriented programming language can be implemented.
5.4 DER ANFRAGE-ROUTER5.4 THE INQUIRY ROUTER
Der Anfrage-Router empfängt als Eingabe eine als eine Liste von Worten oder Stichworten formulierte Nutzeranfrage und gibt als Ausgabe eine Liste von N-Informationsquellen zurück, die entsprechend ihrer wahrscheinlichen Relevanz für die Eingabeanfrage geordnet sind. Die Bestimmung dieser Informationsquellen ist bezüglich der Geschwindigkeit und auf Überinklusivität optimiert. Ein gelegentliches Miteinbeziehen einer irrelevanten Informationsquelle wird gegenüber einem Auslassen einer relevanten Quelle bevorzugt.The request router receives as Enter a user request formulated as a list of words or keywords and returns as output a list of N information sources that ordered according to their likely relevance to the input request are. The determination of these sources of information is related to Speed and optimized for over-inclusiveness. An occasional involvement of an irrelevant source of information is opposite omitting a relevant source.
Der bevorzugte Anfrage-Router basiert auf dem Prinzip eines Zuordnens relevanter Konzepte zu Informationsquellen und Anfrageworten. Im voraus wird ein Satz von Konzepten gewählt, um die Informationsquellen der einen oder von mehreren Informationsdomänen zu beschreiben, auf die ein oder mehrere Netbots gerichtet sind. Für jede Informationsquelle in den Domänen wird die Relevanz dieser Quelle für jedes der gewählten Konzepte beurteilt. Desweiteren wird jedes Wort, das in möglichen Anfragen auftreten kann, geprüft, um zu bestimmen, welches der gewählten Konzepte für das Wort relevant ist. Dann werden auf den Empfang der Worte oder Stichworte einer Anfrage hin, die mit diesen Worten in Beziehung stehenden Konzepte ermittelt und dann die für diese Konzepte relevanten Informationsquellen gefunden. Die abgestufte Relevanz jeder Quelle wird durch Kombinieren der individuellen Relevanzen der Quelle für alle Konzepte der Anfrage bestimmt. Der Fall von auf Sätzen basierenden Anfragen wird vorzugsweise durch Erzeugen von getrennten Daten für diesen Anfragetyp behandelt.The preferred request router is based on the principle of assigning relevant concepts to information sources and query words. In advance, a set of concepts is chosen to describe the information sources of the one or more information domains, to which one or more netbots are aimed. For every source of information in the domains becomes the relevance of this source for each of the chosen concepts assessed. Furthermore, every word that occurs in possible queries can, checked to to determine which of the chosen Concepts for the word is relevant. Then on receiving the words or Keywords of an inquiry related to these words standing concepts and then the relevant for these concepts Sources of information found. The graded relevance of each source is done by combining the individual relevance of the source for all concepts the request. The case of requests based on sentences will preferably by generating separate data for it Request type handled.
Bei der bevorzugten Implementierung dieses Prozesses werden vier Tabellen verwendet, die Relevanzinformationen enthalten. Im folgenden wird W etwas größer gewählt, z. B. 10%, als die Anzahl von Worten, die in möglichen Anfragen auftreten können. C ist die Anzahl gewählter Konzepte und S ist die Anzahl von Informationsquellen in der Informationsdomäne. WORD2CONCEPT[] ist eine Tabelle von W Vektoren von C Bits, wobei die C Bits des Vektors für ein Wort anzeigen, welches der C Konzepte für das Wort relevant ist. CONCEPT2SOURCE[][] ist eine C auf S Tabelle. Für jedes der C Konzepte und jede der S Quellen enthält der entsprechende Eintrag dieser Tabelle den Relevanzwert dieser Quelle für dieses Konzept. Insbesondere hat die j-te Informationsquelle ein Relevanzgewicht von 5 im Verhältnis zum i-ten Konzept, falls der Eintrag <i, j> gleich 5 ist. CONCEPT2SOURCE[][] wird beim Suchen von Worten verwendet. Für das Suchen mit Sätzen verbindet die Tabelle CONCEPT2PHRASE[][] in ähnlicher Weise Konzepte und Quellen. Schließlich umfaßt DEFAULT-RELEVANCE[] ein Voreinstellungsrelevanzgewicht für jede der S Informationsquellen.In the preferred implementation In this process, four tables are used, the relevance information contain. In the following, W is chosen slightly larger, e.g. B. 10% as the number of words in possible Inquiries can occur. C is the number selected Concepts and S is the number of sources of information in the information domain. WORD2CONCEPT [] is a table of W vectors of C bits, the C bits of the Vector for display a word which of the C concepts is relevant to the word. CONCEPT2SOURCE [] [] is a C on S table. For each of the C concepts and each of the S sources contains the corresponding entry this table the relevance value of this source for this concept. In particular the jth information source has a relevance weight of 5 in relation to the i-th concept if the entry <i, j> is 5. CONCEPT2SOURCE [] [] is used when searching for words. Connects for searching with sentences the table CONCEPT2PHRASE [] [] similarly concepts and Swell. Finally comprises DEFAULT-RELEVANCE [] a default relevance weight for each of the S sources of information.
Bei der bevorzugten Implementierung wird der folgende Prozeß durchgeführt.
- 1. Für jede der S Informationsquellen setze RELEVANCE[j] = DEFAULT-RELEVANCE[j];
- 2. Für jedes Wort in der Nutzeranfrage führe aus:
- A. Berechne eine Hash-Funktion auf das Wort, womit eine Zahl M zwischen Null und W erhalten wird. Für diesen Prozeß ist jede geeignete Hash-Funktion verwendbar. Eine beispielhafte Hash-Funktion ist in Sedgewick, 1990, Algorithms in C, Addison-Wesley Publishing Co., Kapitel 16, offenbart.
- B. Der C-Bit-Vektor V sei gleich WORD2CONCEPT[M];
- C. Kombiniere die Relevanzen für alle Konzepte in V zur Relevanz für die Informationsquellen durch Ausführen von: Für i von 0 bis C, führe aus: Eine andere monoton ansteigende Funktion als "+" kann ebenso verwendet werden, um die individuellen Konzeptrelevanzen zu einer endgültigen Relevanz zu kombinieren;
- D. Kombiniere die Relevanzen für alle Worte in der Nutzeranfrage, indem sie beispielsweise addiert werden.
- 3. In dem Fall einer Suche mit Sätzen führe zusätzlich aus:
- A. Verknüpfe alle Worte des Nutzeranfragesatzes;
- B. Berechne die Hash-Funktion auf den Satz und erhalte M und setze den C Bit-Vektor V gleich WORD2CONEPT[M];
- C. Kombiniere die Relevanzen für alle Konzepte in V zur Relevanz für die Informationsquellen durch Ausführen von: Für i von 0 bis C, führe aus:
- 4. Sortiere die Informationsquellen basierend auf ihrer RELEVANCE und gebe die N-relevantesten Quellen zurück.
- 1. For each of the S information sources set RELEVANCE [j] = DEFAULT-RELEVANCE [j];
- 2. For each word in the user request, do:
- A. Compute a hash function on the word, giving a number M between zero and W. Any suitable hash function can be used for this process. An exemplary hash function is disclosed in Sedgewick, 1990, Algorithms in C, Addison-Wesley Publishing Co., Chapter 16.
- B. The C-bit vector V is equal to WORD2CONCEPT [M];
- C. Combine the relevance for all concepts in V to the relevance for the information sources by executing: For i from 0 to C, do: A monotonically increasing function other than "+" can also be used to combine the individual conceptual relevance to a final relevance;
- D. Combine the relevance for all words in the user query, for example by adding them together.
- 3. In the case of a search with sentences, also do the following:
- A. Link all the words in the user request record;
- B. Compute the hash function on the set and get M and set the C bit vector V equal to WORD2CONEPT [M];
- C. Combine the relevance for all concepts in V to the relevance for the information sources by executing: For i from 0 to C, do:
- 4. Sort the information sources based on their RELEVANCE and return the N most relevant sources.
Für einen Fachmann ist es erkennbar, daß an diesem Prozeß Änderungen hinsichtlich der Routine und Verbesserungen vorgenommen werden können, bei welchen dieselben Funktionen in derselben Weise ausgeführt werden. Diese Erfindung umfaßt derartige Änderungen der Routine.For one skilled in the art will recognize that there are changes to this process regarding the routine and improvements can be made at which same functions are performed in the same way. This invention encompasses such changes the routine.
Dieser Prozeß wird vorzugsweise in C++ implementiert, kann jedoch alternativ in jeder Prozedur-orientierten oder Objekt-orientierten Programmiersprache implementiert sein. Im Fall eines Anfrage-Routers, der über Information über eine große Anzahl, z. B. zehntausend Informationsquellen verfügt, ist der Anfrage-Router vorzugsweise als ein Serverprozeß auf einem Servercomputer implementiert, um mit der Größe der erforderlichen Datenstrukturen und den Verarbeitungserfordernissen des Anfrage-Routings fertig zu werden.This process is preferably done in C ++ implemented, but can alternatively be in any procedure-oriented or object-oriented programming language can be implemented. In the case of a request router that has information about a size Number, e.g. B. has ten thousand sources of information the request router preferably as a server process on a Server computers implemented to deal with the size of the required data structures and the processing requirements of the request routing to become.
Eine beispielhafte Konstruktion der
Tabelle WORD2CONCEPT beginnt mit der Auswahl von Konzepten, um die
Informationsdomäne,
die von Interesse ist, zu charakterisieren und der Bestimmung von
Worten und Sätzen,
die wahrscheinlich in den Nutzeranfragen auftreten. Für jedes
Konzept werden die folgenden Handlungen durchgeführt. Die Worte und Sätze, die
mit diesem Konzept verbunden sind, oder zu welchen das Konzept in
Beziehung steht, werden den Stringfeldern KEYS[] und PHRASES[] zugeteilt.
Dann wird der folgende Prozeß ausgeführt.
FOR
i gleich 1 bis zur Anzahl der Elemente in KEYS[], DO Wende die zuvor
verwendete Hash-Funktion auf KEYS[i] an, um eine Zahl zwischen 0
und W zu erhalten SET das Bit, das mit dem momentanen Konzept in WORD2CONCEPT[M]
zusammenpaßt.
FOR
j gleich 1 bis zur Anzahl der Elemente in PHRASES[], DO Wende die
zuvor verwendete Hash-Funktion auf KEYS[i] an, um eine Zahl zwischen
0 und W zu erhalten SET das Bit, das mit dem im momentanen Konzept in
WORD2CONCEPT[M] zusammenpaßt.An exemplary construction of the WORD2CONCEPT table begins with the selection of concepts to characterize the information domain that is of interest and the determination of words and sentences that are likely to occur in user requests. The following actions are performed for each concept. The words and sentences that are associated with this concept or to which the concept is related are assigned to the string fields KEYS [] and PHRASES []. Then the following process is carried out.
FOR i equal to 1 up to the number of elements in KEYS [], DO Apply the previously used hash function to KEYS [i] to get a number between 0 and W SET the bit that corresponds to the current concept in WORD2CONCEPT [ M] fits together.
FOR j equals 1 up to the number of elements in PHRASES [], DO Apply the previously used hash function to KEYS [i] to get a number between 0 and W SET the bit that corresponds to the current concept in WORD2CONCEPT [M] fits together.
Diese Handlungen werden für jedes gewählte Konzept wiederholt. Alternativ kann die Konzeptinformation zusammen mit der String-Information unter Verwendung entweder des offenen oder geschlossenen Hashings gespeichert werden, um einen präzisen Abgleich von String und Konzept zu erhalten.These actions are for everyone elected Repeats concept. Alternatively, the concept information can be put together with the string information using either the open or closed hashing can be saved for precise matching to get from string and concept.
5.5. WRAPPER-DEFINITIONS-SPRACHE5.5. WRAPPER DEFINITION LANGUAGE
In diesem ersten Abschnitt wird einleitendes Material über die Verwendung der WDL in Wrappern dargelegt. Danach werden die zwei hauptsächlichen Komponenten der WDL – die Aktionssprache und die reguläre Ausdruckssprache – in Einzelheiten beschrieben. Schließlich wird eine beispielhafte Ausführungsform der WDL dargelegt.This first section introductory Material about explained the use of the WDL in wrappers. Then the two main Components of the WDL - the Action language and the regular Expression language - in Details described. Finally, an example embodiment the WDL set out.
Ein Wrapper ist eine Beschreibung einer Informationsquelle und wie ein Netbot damit wechselwirken sollte, insbesondere, wie Anfragen an sie formatiert werden sollten und wie Ant worten von ihr zu verstehen sind. Netbots müssen wirkungsvoll mit einigen hundert bis zu mehreren tausend Informationssites in einem Netz interagieren. Diese Wechselwirkung zeigt zwei Erfordernisse: erstens eine kompakte Speicherung einer Beschreibung einer Informationsquelle unter Verwendung einer in der WDL kodierten Darstellung; und zweitens das Verwenden dieser Beschreibung, um die Informationsquelle zu verstehen. Netbots müssen beispielsweise laufend Anfragen an eine Quelle formatieren und nützliche Informationen aus den Seiten, die von der Quelle zurückgegeben werden, syntaktisch analysieren, während sie irrelevante Formatierungsinformationen ignorieren. Da die Informationsquellen immer funktionaler werden, wird es erforderlich sein, daß Netbots komplexere Interaktionen als einfache Anfrage-Antwortpaare verarbeiten. Daher haben die Wrapper und die WDL vorzugsweise die folgenden Eigenschaften:
- 1) WDL-Beschreibungen sind einfach zu schreiben, d. h. einfacher als beispielsweise in C++. Dies ist von Bedeutung, da neue Informationsquellen häufig generiert werden und bestehende Dienste ihr Format häufig ändern. Optional können Wrapper-Beschreibungen automatisch unter Verwendung von Maschinenunterrichtungstechniken in Informationsdomänen generiert werden, wo Antworten ein reguläres vorbestimmtes Format aufweisen.
- 2) Wrapper-Beschreibungen sind kurz. Dies ist wichtig, damit sie beispielsweise lokal in einer Datenbank gespeichert werden können oder rasch von einem Server zu einem Netbot, der in einem Client läuft, selbst über eine langsame Netzverbindung übertragen werden können. Optional können Informationsquellen ihre eigenen Wrapper auf eine Aufforderung hin liefern.
- 3) WDL-Beschreibungen können automatisch in schnelle endliche Automaten kompiliert werden, die die von den Informationsquellen zurückgegebenen Informationen schnell syntaktisch analysieren.
- 4) Eine Verwendung von Wrappern mit WDL ermöglicht, daß sich Netbots an neue Arten von Informationsformaten und neue Typen von Informationsserverinteraktionen in der Zukunft anpassen.
- 1) WDL descriptions are easy to write, ie easier than, for example, in C ++. This is important because new sources of information are generated frequently and existing services change their format frequently. Optionally, wrapper descriptions can be automatically generated using machine education techniques in information domains where responses are in a regular, predetermined format.
- 2) Wrapper descriptions are short. This is important so that they can be stored locally in a database, for example, or can be transferred quickly from a server to a Netbot running in a client, even over a slow network connection. Optionally, information sources can deliver their own wrappers upon request.
- 3) WDL descriptions can be automatically compiled into fast finite automata that quickly parse the information returned from the information sources.
- 4) Using wrappers with WDL enables netbots to adapt to new types of information formats and new types of information server interactions in the future.
Die Wrapper-Beschreibung legt zumindest zwei Prozesse fest: erstens, das Anfordern von Informationen von einer Informationsquelle, z. B., wie die richtige HTML-formatierte Seite von einer Quelle abzurufen ist; und zweitens, wie zurückgegebene Seiten syntaktisch zu analysieren sind, um die relevanten Daten zu entnehmen. Um den ersten Prozeß auszuführen, umfaßt die WDL eine Aktionssprachenkomponente, die eine erweiterbare Sprache von Aus drücken und Anweisungen ist. Um den zweiten Prozeß auszuführen, umfaßt die WDL eine reguläre Ausdruckssprachenkomponente, bei der es sich um ein umfangreiches und neuartiges Mittel zur Bestimmung regulärer Ausdrucksmusterabgleicheinrichtungen handelt.The wrapper description at least lays two processes are established: first, requesting information from an information source, e.g. B. how to format the correct HTML Page is retrieved from a source; and second, how returned Pages are parsed to get the relevant data refer to. To perform the first process, the WDL includes an action language component, which is an expandable language of off and instructions. Around performing the second process involves the WDL a regular Expression language component, which is a large one and novel means for determining regular expression matching devices is.
Bei alternativen Implementierungen können Netbots alternative Musterabgleichseinrichtungen verwenden, die Fachleuten bekannt sind. Beispielsweise könnte die reguläre Ausdruckskomponente durch eine kontextfreie Sprachspezifizierung ("CFL") ersetzt werden. In diesem Fall können bei der Implementierung der WDL die für die Konstruktion von Compilern bekannten Techniken, wie beispielsweise YACC, verfolgt werden. Jedoch wird dort, wo es möglich ist, aufgrund ihrer einfachen Spezifizierung und raschen Abarbeitung ein regulärer Ausdruchsmusterabgleich bevorzugt.In alternative implementations can Netbots use alternative pattern matching facilities that Are known to experts. For example, the regular expression component through a context-free language specification ("CFL") be replaced. In this case, you can in the implementation of the WDL for the construction of compilers known techniques, such as YACC, are followed. however will be where possible is due to its simple specification and rapid processing a regular Expression pattern matching preferred.
EIN BEISPIEL DER REGULÄREN AUSDRUCKSKOMPONENTEAN EXAMPLE THE REGULAR EXPRESSION OF THE COMPONENTS
Reguläre Ausdrücke sind zur Beschreibung des Formats der von vielen Informationsquellen zurückgegebenen Informationen von Vorteil. Die reguläre Ausdruckskomponente der WDL erweitert die früheren regulären Ausdrucksabgleicheinrichtungen auf verschiedene neue Arten. Erstens ermöglicht sie das Programmieren von Spracheinrichtungen der Aktionssprache, z. B. von Anweisungen und Ausdrücken, die auszuführen sind, wenn reguläre Ausdrücke erkannt werden, und mit Variablenbindungen, die durch teilweise Übereinstimmungen bestimmt werden, die während der Gesamterkennung erkannt werden. Zweitens werden bei der bevorzugten Implementierung reguläre Ausdrücke in kompakte und effiziente endliche Automaten kompiliert. Drittens wird der wirkungsvolle und intuitive Ausdruck eines komplexen regulären Ausdrucks in einer verschachtelten Weise unterstützt. Und viertens besitzt sie eine wirkungsvolle Backtracking-freie Auffülleinrichtung.Regular expressions are used to describe the Format of the information returned by many information sources Advantage. The regular one Expression component of the WDL extends the previous regular expression matching facilities in different new ways. First, it enables programming of language facilities of the action language, e.g. B. Instructions and expressions, to execute that are when regular expressions are recognized, and with variable bindings that are partially matched to be determined during of overall recognition. Second, the preferred Implementation regular expressions compiled into compact and efficient finite state machines. thirdly becomes the effective and intuitive expression of a complex regular expression supported in a nested manner. And fourth, she owns an effective backtracking-free filling device.
Es folgt ein beispielhafter Wrapper, der für eine Suchmaschine für Internetinformationen geeignet und in der WDL geschrieben ist. Die Bedeutung des jeweiligen Abschnitts wird in Kommentaren beschrieben, die mit "/*" und "*/" eingefaßt sind.An example wrapper follows, the for a search engine for Internet information suitable and written in the WDL. The The meaning of each section is described in comments, which are enclosed with "/ *" and "* /".
5.5.1. BESCHREIBUNG DER WDL-KOMPONENTEN5.5.1. DESCRIPTION OF WDL COMPONENTS
In diesem Abschnitt sind die bevorzugten Merkmale der Aktionssprache und der regulären Ausdruckskomponenten der WDL beschrieben. Diese Erfindung ist nicht auf die dargelegten Beschreibungen beschränkt. In diesen Beschreibungen werden bekannte Verfahren zum Beschreiben von Grammatiken einschließlich von regulären Ausdrücken verwendet und für den Fachmann ist es erkennbar, daß es viele dazu im wesentlichen äquivalente Beschreibungen gibt. Derartige äquivalente Beschreibungen umfassen solche, die aus dem Umbenennen der beschriebenen syntaktischen Elemente oder aus dem Anwenden bekannter grammatikalischer Transformationen auf die dargelegte Syntax resultieren, sind jedoch nicht darauf beschränkt. Diese Erfindung schließt auch diese im wesentlichen äquivalenten Beschreibungen ein.In this section are the preferred ones Features of the action language and the regular expression components of the WDL described. This invention is not based on the descriptions set forth limited. Known methods of describing are described in these descriptions of grammars including from regular Express used and for it will be apparent to those skilled in the art that there are many essentially equivalent thereto Descriptions there. Such equivalents Descriptions include those resulting from the renaming of those described syntactic elements or from the use of known grammatical However, transformations to the presented syntax result not limited to that. This invention closes these are also essentially equivalent Descriptions.
DIE AKTIONSSPRACHENKOMPONENTETHE ACTION LANGUAGE COMPONENT
Die Aktionssprache umfaßt bestimmte bevorzugte Eigenschaften auf der Basisebene: eine Zuteilungsanweisung; Sequenzierungsanweisungen wie beispielsweise "if" and "while"-Konstrukte, eine Tupelausgabeanweisung; String- und numerische Ausdrücke; String-, numerische und boolsche Operatoren; und bestimmte eingebaute Funktionen. Für Fachleute ist es verständlich, daß eine Aktionssprache auf der Basisebene mit einer äquivalenten semantischen Ausdrucksfähigkeit mit einer geringfügig verschiedenen Auswahl von Merkmalen aufgebaut werden kann. Beispielsweise kann die while-Anweisung durch eine goto-Anweisung ersetzt werden. Die Aktionssprachenkomponente dieser Erfindung umfaßt derartige bekannte äquivalente Formulierungen der offenbarten Semantik. Desweiteren können in optionalen Ausführungsformen die bevorzugten Eigenschaften auf der Basisebene durch zusätzliche Merkmale erweitert werden, wie beispielsweise: zusätzliche Sequenzierungsanweisungen, wie beispielsweise "for" oder "repeat"-Schleifen; Nutzerdefinierte Funktionen; zusätzliche String-, numerische und Boolesche Ausdrücke und Operatoren, wie sie beispielsweise in C oder C++ zu finden sind; zusätzliche eingebaute Funktionen und Array-Variablen. Solche zusätzlichen Merkmale können zur bevorzugten Basisebenensprache auf bekannte Weise hinzugefügt werden. S. z. B. Aho et al., 1986, Compilers Principles, Techniques, and Tools, Addison Wesley Publishing Co.The language of action includes certain preferred properties at the base level: an assignment instruction; Sequencing instructions such as "if" and "while" constructs, a tuple output instruction; String and numeric expressions; String, numeric and boolean operators; and certain built-in Functions. For Experts it is understandable that a Action language at the basic level with an equivalent semantic expressiveness with a slight various selection of features can be built. For example the while statement can be replaced by a goto statement. The action language component of this invention includes such known equivalents Formulations of the disclosed semantics. Furthermore, in optional embodiments the preferred properties at the base level through additional ones Features are expanded, such as: additional sequencing instructions, such as "for" or "repeat" loops; user-defined functions; additional String, numeric and Boolean expressions and operators like them can be found, for example, in C or C ++; additional built-in functions and array variables. Such additional Characteristics can can be added to the preferred base level language in a known manner. S. z. B. Aho et al., 1986, Compilers Principles, Techniques, and Tools, Addison Wesley Publishing Co.
Die Syntax der bevorzugten Basisebenenaktionssprache ist durch die folgende in einer Standardnotation ausgedrückte Grammatik gegeben.The preferred base-level action language syntax is by the following grammar expressed in standard notation given.
Somit ist die Aktionssprachenkomponente mit Anweisungen und Ausdrücken definiert. Eine Anweisung kann sein: eine Zuteilungsanweisung, die einer skalaren Variable einen neuen Wert zuteilt; eine if-Anweisung; eine while-Schleife; eine zusammengesetzte Anweisung, die eine Folge anderer Anweisungen ist, die von "{" und "}" umschlossen sind, oder eine Ausgabeanweisung. Mit Ausnahme der Ausgabeanweisung funktionieren die Anweisungen in derselben Weise wie bei anderen Prozedur-orientierten Programmiersprachen, z. B. C, C++ oder Pascal. Für die if- und while-Anweisungen wird das konditionale Argument als wahr betrachtet, wenn es entweder eine Zahl ist, die nicht gleich Null ist oder ein String, der nicht gleich Null, d. h. nicht der Leer-String "" ist. Die OUTPUT-Anweisung ermöglicht, daß ein Wrapper Informationen, die mit Antworten von der Informationsquelle übereinstimmen, zum Netbotmodul zurückgeben kann, das den Wrapper abarbeitet. Beispielsweise bewirkt das Abarbeiten der Anweisung "output (arg_1, ..., arg_n)", daß das Tupel <arg_1, ..., arg_n> vom Wrapper zum Netbot zurückgegeben wird.Thus, the action language component with instructions and expressions Are defined. An instruction can be: an assignment instruction that assigns a new value to a scalar variable; an if statement; a while loop; a compound statement that is a consequence other instructions enclosed by "{" and "}", or an output instruction. With the exception of the output instruction, the instructions work in the same way as with other procedure-oriented programming languages, e.g. B. C, C ++ or Pascal. For the if and while statements will use the conditional argument as considered true if it is either a number that is not the same Is zero or a string that is not zero, i.e. H. is not the empty string "". The OUTPUT statement enables the existence Wrapper information that matches responses from the information source, return to the Netbot module that can process the wrapper. For example, processing the statement "output (arg_1, ..., arg_n) ", that this Tuple <arg_1, ..., arg_n> from the wrapper to the netbot returned becomes.
Ein Ausdruck kann sein: eine String-Konstante, die ein Zeichen-String ist, der von Anführungsstrichen umgeben ist; eine Fließkommazahl; ein Variablenname, wobei es sich um einen Namen oder eine ganze Zahl handelt, dem/der ein Dollarzeichen vorausgeht; ein Einfügeoperator, der auf zwei einfassende Unterausdrücke angewandt wird; ein Unterausdruck, der eingefaßt ist zwischen "(" und ")", oder ein Ruf zu einer eingebauten Funktion.An expression can be: a string constant, which is a character string surrounded by quotation marks; a floating point number; a variable name, which is a name or a whole Is a number preceded by a dollar sign; an insert operator, applied to two enclosing sub-terms; a sub-expression, the bordered is between "(" and ")", or a call to a built-in function.
Des weiteren stellt die Sprache für Prozedur-orientierte
Programmiersprachen standardmäßige Operatoren
bereit einschließlich
der folgenden:
arithmetische Operatoren ("+", "–", "*", "/"); numerische Vergleichsoperatoren ("<", "=", ">", "<=", ">=", "!="); String-Vergleichsoperatoren
("lt", "eq", "gt", "le", "ge", "ne"); einen String-Verkettungsoperator
(".") und Boolesche Operatoren
("&&", "||", "!"). Diese Operatoren weisen die folgende
Semantik auf:
- 1) +, –, *, /: Ausführen der angegebenen arithmetischen Operation auf die einfassenden Ausdrücke;
- 2) .: Verketten der einfassenden Strings:
- 3) ==, <=, >=, <, >, !=: Durchführen des angegebenen numerischen Vergleichs der einfassenden Zahlen und Zurückgeben der Fließkommawerte 0,0 oder 1,0 in entsprechender Weise;
- 4) eq, le, ge, lt, gt, ne: Durchführen des angegebenen Vergleichs der ASCII-Codes der einfassenden Strings Schriftzeichen-für-Schriftzeichen und Zurückgeben der Fließkommawerte 0,0 oder 1,0 in entsprechender Weise;
- 5) !: Zurückgeben von 1, falls das Argument die Zahl 0 ist oder der String "", ansonsten Zurückgeben von 0;
- 6) &&: Evaluieren des ersten Arguments, falls das erste Argument Null ist oder "", Anhalten und Zurückgeben dieses Wertes, ansonsten Evaluieren des zweiten Argumentes und Zurückgeben des letzteren Wertes;
- 7) ||: Evaluieren des ersten Arguments, falls das erste Argument weder Null noch "" ist, unmittelbar Anhalten und Zurückgeben dieses Werts; ansonsten Evaluieren des zweiten Arguments und Zurückgeben des letzteren Wertes.
arithmetic operators ("+", "-", "*", "/"); numerical comparison operators ("<", "=", ">", "<=", ">=","!="); String comparison operators ("lt", "eq", "gt", "le", "ge", "ne"); a string concatenation operator (".") and Boolean operators ("&&", "||", "!"). These operators have the following semantics:
- 1) +, -, *, /: perform the specified arithmetic operation on the enclosing expressions;
- 2).: Concatenating the enclosing strings:
- 3) ==, <=,> =, <,>,! =: Perform the specified numerical comparison of the enclosing numbers and return the floating point values 0.0 or 1.0 accordingly;
- 4) eq, le, ge, lt, gt, ne: performing the specified comparison of the ASCII codes of the enclosing strings character by character and returning the floating point values 0.0 or 1.0 in a corresponding manner;
- 5)!: Return 1 if the argument is 0 or the string "", otherwise return 0;
- 6) &&: evaluating the first argument if the first argument is zero or "", stopping and returning this value, otherwise evaluating the second argument and returning the latter value;
- 7) ||: Evaluate the first argument if the first argument is neither zero nor "", immediately stop and return this value; otherwise evaluate the second argument and return the latter value.
In der Reihenfolge von der höchsten zur niedrigsten haben diese Operatoren die folgende Priorität:
- 1. jeder Ausdruck in Klammern (höchste Priorität)
- 2. *, /
- 3. +, –, .
- 4. ==, <=, >=, <, >, !=, ne, eq, le, lt, gt, ge
- 5. ! (Boolesches Nein)
- 6. && (Boolesches Und)
- 7. || (Boolesches Oder) (niedrigste Priorität).
- 1. every expression in parentheses (highest priority)
- 2. *, /
- 3. +, -,.
- 4. ==, <=,> =, <,>,! =, Ne, eq, le, lt, gt, ge
- 5th! (Boolean no)
- 6. && (Boolean And)
- 7. || (Boolean Or) (lowest priority).
Alle Operatoren sind links assoziativ.All operators are associative on the left.
Es werden keine Variablenvereinbarungen benötigt. Erstens werden alle Variablen in der Aktionssprache dadurch unterschieden, daß ihnen ein „$" vorausgeht. Diese speziellen Variablen die Unterstrings bezeichnen, die durch einen regulären Ausdruck abgeglichen sind, bestehen aus einem „$", worauf eine ganze Zahl, z. B. $0 oder $1, folgt. Zweitens werden zur Laufzeit automatische Typumwandlungen zwischen String- und Fließkommatypen dynamisch vorgenommen. Falls ein Operator eine Zahl erwartet, jedoch einen String erhält, wird der String durch Aufrufen der C-Bibliotheksfunktion atof() in eine Zahl umgewandelt, die die ASCII-Darstellung einer Zahl in ihre interne Fließkommadarstellung umwandelt. Falls ein Operator ein Stringargument erwartet, jedoch eine Zahl erhält, verwendet er die C-Bibliotheksfunktion sprintf (..., "%I"), um es in einen String umzuwandeln. Drittens werden Variablen, auf die Bezug genommen wird, die jedoch noch nicht zugeordnet wurden, auf die Standardeinstellungswerte 0 oder "" eingestellt, wenn dies angebracht ist.There are no variable declarations needed. First, all the variables in the action language are distinguished by that them preceded by a "$". This special variables denote the substrings that are marked by a regular Expression matched consist of a "$" followed by an integer, such as $ 0 or $ 1 follows. Second, automatic type conversions at runtime between string and floating point types made dynamically. If an operator expects a number, however receives a string the string by calling the C library function atof () in a Number converted to the ASCII representation a number in its internal floating point representation transforms. If an operator expects a string argument, however get a number he uses the C library function sprintf (..., "% I") to put it into a Convert string. Third, variables are referenced that have not yet been mapped to the default setting values 0 or "" set if this is appropriate.
Die Aktionssprachenkomponente weist mehrere eingebaute Funktionen auf. Die folgenden Funktionen sind bevorzugte eingebaute Funktionen der Grundebene.
- 1) argc(), argv(): Wenn ein Netbot einen Wrapper abarbeitet, kann er dem Wrapper eines oder mehrere Argumente geben. Diese stellen gewöhnlich Anfrageparameter, Anfrageworte oder Anfragestichworte dar, die vom Benutzer geliefert werden. Auf diese Argu mente wird von innerhalb der Wrappersprache durch die Funktionen argc(), die die Anzahl von an den Wrapper weitergegebenen Argumenten zurückgibt, und argv(n), die das n-te Argument zurückgibt, zugegriffen.
- 2) fetch(): Diese Funktion ist vorzugsweise mit dem I/O-Modul gekoppelt, um einen String, der die Netzadresse einer Informationsquelle enthält, und möglicherweise Anfrageparameter über ein Netz zur adressierten Informationsquelle gemäß dem richtigen Protokoll zu übertragen, und gibt einen String zurück, der die Antwort der Informationsquelle enthält. Wrapper verwenden diese Funktion, um Informationsquellen abzufragen und Seiten abzurufen.
- 3) parse(<string>,<nonterminal>): Diese Funktion nimmt einen String und versucht ihn mit dem regulären Ausdruck abzugleichen, der dem gegebenen <nonterminal> entspricht, der durch die reguläre Ausdruckssprachenkomponente der WDL definiert ist. Diese Funktion gibt „1" zurück, falls der Abgleich erfolgreich war, oder „0", falls der String nicht mit dem regulären Ausdruck zusammenpaßt. Wrapper verwenden diese Funktion, um die Antwort einer Informationsquelle syntaktisch zu analysieren.
- 1) argc (), argv (): When a netbot processes a wrapper, it can give the wrapper one or more arguments. These usually represent query parameters, query words or query keywords that are supplied by the user. These arguments are accessed from within the wrapper language by the argc () function, which returns the number of arguments passed to the wrapper, and argv (n), which returns the nth argument.
- 2) fetch (): This function is preferably coupled to the I / O module to transmit a string containing the network address of an information source and possibly request parameters over a network to the addressed information source according to the correct protocol and gives a string that contains the response from the information source. Wrappers use this function to query information sources and to retrieve pages.
- 3) parse (<string>, <nonterminal>): This function takes a string and tries to match it with the regular expression that matches the given <nonterminal> defined by the WDL's regular expression language component. This function returns "1" if the match was successful, or "0" if the string does not match the regular expression. Wrappers use this function to parse the response of an information source.
Ein beispielhafter Wrapper umfaßt die folgende Sequenz von Aktionssprachenanweisungen. Am Anfang befindet sich eine Reihe von Anweisungen unter Verwendung von argc() und argv(), um die Nutzeranfrageparameter zu erhalten und um eine Stringvariable, z. B. $url, zu initialisieren, wobei ein String die URL der einschlägigen Seite bei der Informationsquelle zusammen mit einer geeignet formatierten Anfrage enthält. Als nächstes holt die Zuteilungsanweisung „$html_text = fetch ($url)" die Anfrage-Antwortseite in eine andere Stringvariable, z. B. $html_text. Schließlich versucht die Funktion parse($html_text,<page>) den zurückgegebenen html-Text mit dem regulären Ausdruck <page>, der die gesuchte Seite beschreibt, abzugleichen.An exemplary wrapper includes the following Sequence of action language instructions. At the beginning is a series of statements using argc () and argv (), to get the user request parameters and a string variable, z. B. $ url, where a string is the URL of the relevant page at the information source along with an appropriately formatted Contains request. Next gets the assignment instruction "$ html_text = fetch ($ url) "the Request response page in another string variable, e.g. B. $ html_text. Finally tries the function parse ($ html_text, <page>) the returned html text with the regular Expression <page> that is the one you are looking for Page describes to match.
DIE REGULÄRE AUSDRUCKSPRACHETHE REGULAR EXPRESSION LANGUAGE
Die reguläre Ausdrucks-(„reg-exp")-Komponente der WDL gleicht Strings gegen reguläre Ausdrücke ab. Es wurde festgestellt, daß reguläre Ausdrücke dazu geeignet sind, das Format von Antworten zu beschreiben, die von einer großen Menge von Informationsquellen zurückgegeben werden. Jedoch ist die reg-exp-Sprache dieser Erfindung in der Lage, diese Informa tion so abzugleichen, daß relevante Felder in einer schnelleren und zweckmäßigeren Weise entnommen werden können, als dies frühere Sprachen und Systeme, wie beispielsweise AWK oder Perl können. Die reguläre Ausdruckskomponente umfaßt neuartige Einrichtungen, die die Probleme bei früheren Abgleichssystemen lösen und dadurch ihre Verwendung durch Netbots ermöglichen.The regular expression ("reg-exp") component of the WDL is like strings against regular ones Expressions. It has been found that regular expressions do this are capable of describing the format of responses provided by a big one Amount of information sources are returned. However is The reg-exp language of this invention is capable of this information to adjust so that relevant Fields can be extracted in a faster and more convenient way can, than this earlier Languages and systems such as AWK or Perl can. The regular Expression component includes novel facilities that solve the problems of previous matching systems and thereby enable their use by Netbots.
Eine erste neuartige Einrichtung ermöglicht, daß die Beschreibung von regulären Ausdrücken in einer Weise ähnlich zu einer kontextfreien Grammatik, die eine Sprache durch einen Satz von Regeln für Non-Terminals in der Grammatik definiert, in Stücke unterteilt wird. Siehe z. B. Aho et al., 1986, Compilers Principles, Techniques, and Tools, Addison Wesley Publishing Co., Abschnitt 4.2. Das Schreiben eines einzelnen regulären Ausdrucks, um das Format einer Seite von einer Informationsquelle darzustellen, wie es bei früheren Systemen erforderlich ist, führt häufig zu einem sehr breiten und sperrigen Ausdruck, d. h. einem, der schwierig zu schreiben, zu verstehen und zu pflegen ist. Um dieses Problem bestehender Systeme zu lösen, bestimmt die reg-exp-Komponente einen regulären Ausdruck durch einen Satz von Regeln für Komponenten des regulären Ausdrucks. Diese Komponenten werden durch Non-Terminals markiert. Jedoch ist es im Gegensatz zu kontextfreien Grammatiken nicht zulässig, daß der Satz von Regeln in der reg-exp-Komponente rekursiv oder gegenseitig rekursiv ist. Mit anderen Worten kann sich die Regel für einen bestimmten Non-Terminal nicht direkt oder indirekt auf andere Regeln beziehen, die sich auf diesen speziellen Non-Terminal beziehen.A first novel facility allows the description of regular expressions to be broken up into pieces in a manner similar to a context-free grammar that defines a language through a set of rules for non-terminals in the grammar. See e.g. B. Aho et al., 1986, Compilers Principles, Techniques, and Tools, Addison Wesley Publishing Co., Section 4.2. Writing a single regular expression to represent the format of a page from a source of information, as in previous sys required often leads to a very broad and bulky expression, ie one that is difficult to write, understand and maintain. To solve this problem of existing systems, the reg-exp component determines a regular expression by a set of rules for components of the regular expression. These components are marked by non-terminals. However, unlike context-free grammars, the set of rules in the reg-exp component is not allowed to be recursive or mutually recursive. In other words, the rule for a particular non-terminal cannot directly or indirectly refer to other rules that relate to that particular non-terminal.
Im folgenden wird die Verwendung eines Satzes von Regeln und Non-Terminals beispielhaft veranschaulicht. Ein Non-Terminal auf höchster Ebene, der eine Informationsantwort definiert, kann sein: wodurch spezifiziert wird, daß die Antwort eine Seite ist, die aus einem Kopf gefolgt von null oder mehr Elementen, gefolgt von einem Schwanz besteht. Das Stichwort „END" kennzeichnet das Ende einer Regel bzw. Vorschrift. Die Non-Terminals der zweiten Ebene auf der rechten Seite („RHS") dieser Vorschrift <head>, <item> und <tail> sind durch ihre eigenen Vorschriften definiert:The use of a set of rules and non-terminals is exemplified below. A top-level non-terminal that defines an information response can be: thereby specifying that the answer is a page consisting of a head followed by zero or more elements followed by a tail. The keyword "END" denotes the end of a rule or regulation. The non-terminals of the second level on the right ("RHS") of this regulation <head>, <item> and <tail> are defined by their own regulations:
Um diese Regeln auszuführen, substituiert der reg-exp-Komponentencompiler die RHSen der Vorschriften für <head>, <item> und <tail> in die RHS von <page>. Das Ergebnis ist, als ob der Wrapper die große, sperrige zusammengesetzte Regel auf höchster Ebene enthielte:To implement these rules, substituted the reg-exp component compiler the RHSs of the regulations for <head>, <item> and <tail> into the RHS of <page>. The result is, as if the wrapper was the big, bulky one compound rule at the highest Level would include:
Wenn die Vorschriften der zweiten Ebene weitere Non-Terminals auf ihren RHSen enthalten hätten, würde der Compiler weiterhin geeignete Substituierungen vornehmen, bis es keine weiteren Non-Terminals auf der RHS der zusammengesetzten Vorschrift für die Vorschrift auf der höchsten Ebene gäbe. Aufgrund der mangelnden Rekursion oder gegenseitigen Rekursion endet diese Substituierung.If the regulations of the second Level would have contained further non-terminals on their RHSs, the Compilers continue to make appropriate substitutions until it no further non-terminals on the RHS of the composite regulation for the Regulation at the highest Level. Due to lack of recursion or mutual recursion ends this substitution.
Eine zweite neuartige Einrichtung ermöglicht ein Fallenlassen von Schriftzeichengruppen in einem String ohne Backtracking. Bei früheren Abgleichsystemen für reguläre Ausdrücke ist dieses relativ herkömmliche Erfordernis in einer Weise implementiert, die das Speichern von vielen Backtracking-Punkten in einem Stapel erfordert und die zu einem übermäßigen Backtracking führen kann. Beispielsweise kann das Perl-Idiom ",*"'' des Stands der Technik, das mit jeder Anzahl von Auftritten jedes Schriftzeichens zusammenpaßt oder das Perl-Idiom „[^\d]*\d, das mit allen stellenlosen Schriftzeichen bis zum ersten Auftreten einer Stelle zusammenpaßt, ein übermäßiges Backtracking während eines Abgleichs hervorrufen. Dies ist ineffizient und wird nicht bevorzugt, da Informationsantworten schnell syntaktisch analysiert werden sollten. Siehe z. B. Schwartz, 1993, Learning Perl, O'Reilly & Associates, Inc., Kapitel 7. Um dieses Problem zu lösen, führt die reg-exp-Komponente eine einfache und direkte Syntax für dieses gemeinsame Idiom ein: wobei „stuff" ein reserviertes Wort ist. Stuff ist so definiert, daß es mit allen Schriftzeichen vom momentanen Schriftzeichen bis zum ersten Auftreten des Strings "literal-string", wobei dieser nicht umfaßt ist, zusammenpaßt, wobei es sich um einen wörtlichen String handeln muß. Dieses Konstrukt ermöglicht eine kompakte, effiziente und Backtracking-freie Implementierung dieses gebräuchlichen allgemeinen und wichtigen Idioms.A second novel facility allows groups of characters to be dropped into a string without backtracking. In previous regular expression matching systems, this relatively conventional requirement is implemented in a manner that requires storing many backtracking points in a stack and that can result in excessive backtracking. For example, the Perl idiom ", *"'' of the prior art, which matches any number of appearances of each character, or the Perl idiom "[^ \ d] * \ d, which corresponds to all non-character characters until the first occurrence one place, causing excessive backtracking during a match. This is inefficient and is not preferred because information responses should be parsed quickly. See e.g. B. Schwartz, 1993, Learning Perl, O'Reilly & Associates, Inc., Chapter 7. To solve this problem, the reg-exp component introduces a simple and direct syntax for this common idiom: where "stuff" is a reserved word. Stuff is defined to match all characters from the current character to the first occurrence of the string "literal-string", which is not included, which is a literal string This construct enables a compact, efficient and backtracking-free implementation of this common and important idiom.
Eine dritte neuartige Einrichtung ermöglicht, daß relevante Datenfelder aus beliebig komplexen regulären Ausdrücken entnommen werden können. Aktionssprachenanweisungen können auf der RHS eines Non-Terminals für eine Abarbeitung immer dann eingebettet sein, wenn dieser Non-Terminal abgeglichen ist und mit den Variablenbindungen, die bei jedem Auftreten einer Übereinstimmung dieses Non-Terminals aktuell sind. Im Fall des vorhergehenden Beispiels kann die Definition für <item> wie folgt erweitert werden:A third new facility allows that relevant Data fields can be taken from any complex regular expressions. Action language statements can Then on the RHS of a non-terminal for processing be embedded when this non-terminal is synchronized and with the variable bindings that occur each time a match occurs of this non-terminal are up to date. In the case of the previous example can expand the definition for <item> as follows become:
Immer wenn <item> abgeglichen ist, wird $0 zu dem durch stuff abgeglichenen String in Klammern gesetzt und dann wird die Ausgabeanweisung abgearbeitet. In diesem Fall wird $0 an Schriftzeichen gebunden, auf die "Data:" folgt und welchen das Neuzeile-Schriftzeichen vorausgeht.Whenever <item> matched , $ 0 becomes the string matched by stuff in parentheses set and then the output instruction is processed. In this In this case, $ 0 is bound to characters followed by "Data:" and which the newline character precedes.
Systeme des Stands der Technik wie beispielsweise AWK und Perl weisen keine derartige Einrichtung auf. Obwohl bei ihnen Variablen gesetzt werden, wie beispielsweise $0, $1, etc. geschieht dies nur nachdem der einzige zusammengesetzte reguläre Ausdruck, der <page> definiert, abgeglichen ist. Mit anderen Worten wird die gesamte Seite abgeglichen, bevor Variablen gesetzt werden. Daher sind bei AWK und Perl die relevanten Datenfelder in allen außer dem letzten <item> verloren, falls es mehr als ein <item> auf der <page> gibt. Die reg-exp Komponente der WDL löst dieses Problem, indem eine Spezifizierung von Aktionen, die mehrfach ausgeführt werden, einmal für jeden Non-Terminalabgleich und jedes Mal mit verschiedenen Variablenbindungen, zugelassen wird.Prior art systems such as AWK and Perl have no such facility on. Although they set variables such as $ 0, $ 1, etc., this only happens after the only compound regular expression that defines <page> is matched. In other words, the entire page is matched before variables are set. Therefore, the relevant data fields in AWK and Perl are lost in all but the last <item> if there is more than one <item> on the <page>. The reg-exp component of the WDL solves this problem by allowing a specification of actions that are executed multiple times, once for each non-terminal comparison and each time with different variable bindings.
Im Folgenden wird die Beschreibung der reg-exp Sprache betrachtet. Diese beinhaltet bestimmte bevorzugte Merkmale auf der Grundebene: Definition von regulären Non-Terminalausdrücken; Einbetten von Aktionsspracheanweisungen in Vorschriften des regulären Ausdrucks; Operatoren zum Ausdruck eines Wechsels und einer Wiederholung und ein wörtlicher String-Abgleich. Für Fachleute wird es verständlich sein, daß eine bevorzugte reg-exp Sprache der Basisebene mit äquivalenten semantischen Ausdrucksmöglichkeiten unter Verwendung einer geringfügig unterschiedlichen Auswahl von Merkmalen entworfen werden kann, und daß die reg-exp Sprachenkomponente der WDL derartige wohlbekannte Äquivalente umfaßt. Insbesondere umfaßt die reg-exp Sprache Umbenennungen von Variablen und bekannte grammatikalische Transformationen, die auf die nachfolgenden Regeln bzw. Vorschriften angewandt werden.The following is the description considered the reg-exp language. This includes certain preferred ones Basic level features: definition of regular non-terminal expressions; Embed action language instructions in regular expression rules; Operators for expressing a change and a repetition and a literal String matching. For It becomes understandable to experts be that one preferred reg-exp Base level language with equivalents semantic possibilities of expression using a slightly different selection of features can be designed, and that the reg-exp language component of the WDL such well-known equivalents includes. In particular, the reg-exp language renaming of variables and known grammatical Transformations based on the following rules or regulations be applied.
Bei optionalen Ausführungen können die bevorzugten Basismerkmale mit zusätzlichen Merkmalen erweitert werden, wie beispielsweise: einer speziellen Disjunktion ("||"); Wiederholung einer beliebigen ganzen Zahl; Abgleichen mit Schriftzeichenklassen; einem lokalen String-Speicher; Verankerungsschriftzeichen. Derartige zusätzliche Merkmale sind mit Ausnahme der speziellen Disjunktion Standard, was bewirkt, daß die aufgelisteten Alternativen gleichzeitig abgeglichen werden, wenn der String bezüglich der Syntax analysiert wird, wobei die erste passende Alternative zurückgegeben wird. Im Gegensatz dazu paßt die reguläre Disjunktion mit jeder Alternative in der aufgelisteten Sequenz zusammen, mit einem Backtracking, bis ein Erfolg erzielt ist. Die zusätzlichen Merkmale können zur Basisebenensprache in bekannter Weise hinzugefügt werden. Siehe z. B. Schwartz, 1993, Learning Perl, O'Reilly & Associates, Inc.; Aho et al., 1986, Compilers Principles, Techniques, and Tools, Addison Wesley Publishing Co.; Hopcroft et al., Introduction to Automata Theory, Language Computation, Addison Wesley Publishing Co.With optional versions can the preferred basic features expanded with additional features such as: a special disjunction ("||"); Repetition of one any integer; Matching with character classes; one local string memory; Anchor character. Such additional Features are standard with the exception of the special disjunction, which causes the listed alternatives are compared at the same time, if the string regarding the syntax is analyzed, being the first appropriate alternative returned becomes. In contrast, it fits the regular Disjunction with any alternative in the listed sequence together, with backtracking until success is achieved. The additional Characteristics can be added to the base level language in a known manner. See e.g. B. Schwartz, 1993, Learning Perl, O'Reilly & Associates, Inc .; Aho et al., 1986, Compilers Principles, Techniques, and Tools, Addison Wesley Publishing Co .; Hopcroft et al., Introduction to Automata Theory, Language Computation, Addison Wesley Publishing Co.
Bei einer weiteren alternativen Ausführungsform können Erklärungen hinzugefügt werden, um das Backtracking zu steuern, um die Funktionsweise des regulären Abgleichens der Ausdrücke zu verbessern. Falls von einem bestimmten Teil einer Vorschrift bekannt wäre, daß er kein Backtracking erfordert, könnte der Abschnitt zwischen Angaben gesetzt werden, die den Compiler und Interpreter anweisen, einen endlichen Automaten ohne Vorsehen eines Backtrackings zu generieren. Dies ermöglicht, daß ein Teil der Vorschrift effizienter als ansonsten abgeglichen wird.In another alternative embodiment can Explanations added to control the backtracking to control how the regular Match the expressions to improve. If from a specific part of a regulation would be known that he no backtracking required the section between specifications to be placed by the compiler and instruct interpreters to use a finite state machine without provision generating a backtracking. This enables part of the regulation to be more efficient than is otherwise compared.
Die Syntax der bevorzugten Aktionssprache der Basisebene ist durch die folgende in einer Standardnotation ausgedrückte Grammatik gegeben.The preferred action language syntax the base level is by the following in standard notation expressed Given grammar.
Mit wenigen Worten spezifiziert eine Vorschrift ein bestimmtes <nonterminal> so, daß es einen bestimmten regulären Ausdruck erkennt. Ein regulärer Ausdruck kann umfassen: Disjunktionen ("|"); Sequenzen; null oder mehr Wiederholungen ("+"); ein oder mehrere Wiederholungen ("+"); und null oder eine Wiederholung ("?"). Ausdrücke können sein: wörtliche Strings, die von Doppel-Anführungszeichen eingefaßt sind; das spezielle Zeichen stuff; eingeklammerte reguläre Ausdrücke; Non-Terminals, die durch eine andere Vorschrift definiert sein müssen; oder Anweisungen, die in der Aktionssprache geschrieben sind.In a few words, a regulation specifies a certain <nonterminal> in such a way that it recognizes a certain regular expression. A regular expression can include: disjunctions ("|");sequences; zero or more repetitions ("+"); one or more repetitions ("+"); and zero or a repeat ("?"). Expressions can be: literal strings enclosed in double quotes; the special character stuff; parenthesized regular expressions; Non-terminals defi by another regulation must be kidneyed; or instructions written in the action language.
DIE WRAPPER-BESCHREIBUNGSSPRACHETHE WRAPPER DESCRIPTION LANGUAGE
Eine fertige Wrapper-Beschreibung kann sein:A finished wrapper description may be:
Somit umfassen die bevorzugten WDL-Entitäten eine Anweisung in der Aktionssprache, die typischerweise eine Sequenz von Aktionssprachenanweisungen ist, welchen eine optionale Gruppe von Vorschriften in der reg-exp Sprache folgt, die einen regulären Ausdruck zum Abgleichen einer von Informationsquellen zurückgegebenen Antwort definieren.Thus, the preferred WDL entities include one Statement in the action language, typically a sequence of action language instructions, which is an optional group of regulations in the reg-exp language that follows a regular expression to match a response returned from information sources.
Um eine fertige Wrapper-Beschreibung abzuarbeiten, wird die Anweisung, wie im folgenden beschrieben ist, abgearbeitet. Typischerweise enthält die Anweisung unter anderem Rufe zu den eingebauten Funktionen fetch () und parse (). Die eingebaute Funktion parse () versucht eine durch fetch () zurückgegebene Antwort durch Aufrufen eines Non-Terminals, der durch die beigefügten Vorschriften definiert ist, abzugleichen, wobei jede einen regulären Ausdruck definiert. Falls der Abgleich des regulären Ausdrucks erfolgreich ist, werden alle Aktionssprachenanweisungen, die typischerweise im regulären Ausdruck eingebettet sind, ausgeführt, wobei typischerweise einige Aktionsanweisungen, die in Non-Terminals einer niedrigeren Ebene eingebettet sind, mehrfach mit den aktuellen Operandenbindungen bei jedem Auftreten einer Übereinstimmung abgearbeitet werden und die Funktion parse () den Wert "1" zurückgibt. Falls der Abgleich nicht erfolgreich ist, wird keine der eingebetteten Anweisungen abgearbeitet und die Funktion parse () gibt den Wert "0" zurück.A finished wrapper description to process the instruction as described below processed. Typically, the statement includes, among other things Call to the built-in functions fetch () and parse (). The built-in The parse () function tries one returned by fetch () Answer by calling a non-terminal through the attached regulations is defined to match, each with a regular expression Are defined. If the regular expression match is successful, are all of the action language instructions typically found in regular expression are embedded, executed, typically some action instructions that are in non-terminals are embedded at a lower level, multiple times with the current one Operand bindings are processed each time a match occurs and the function parse () returns the value "1". If the comparison is not successful, none of the embedded ones Instructions processed and the function parse () returns the value "0".
5.5.2. IMPLEMENTIERUNG DER WDL KOMPONENTEN5.5.2. IMPLEMENTATION THE WDL COMPONENT
Die bevorzugte Implementierung der WDL ist in diesem Abschnitt unter den folgenden Überschriften beschrieben: (1) Parsen bzw. syntaktische Analyse von regulären Ausdrucksvorschriften, (2) Zwischencode-Generierung für reguläre Ausdrücke, (3) Laufzeitinterpretierung von regulären Ausdrücken, (4) Aktionssprachencodegenerierung und Laufzeitinterpretierung. Man beachte, daß diese bevorzugte Implementierung der WDL beispielhaft ist. Es ist Fachleuten geläufig, daß Alternativen für die hierin beschriebene Implementierung bestehen. Beispielsweise können die beschriebenen Prozesse unterschiedlich implementiert werden, z. B. mit unterschiedlichen Variablen und unterschiedlichen Ordnungen der individuellen Schritte. Auch können die Prozesse alternative Algorithmen verwenden, um dieselben Effekte z. B. für den String-Abgleich zu erzielen. Als ein weiteres Beispiel offenbart die beschriebene Implementierung Prozesse zur Interpretation verschiedener Zwischencodes. Verschiedene Zwischencodes können verwendet werden. Für die reguläre Ausdruckssprache sind verschiedene Typen von Knoten möglich, einschließlich von z. B. Knoten, die eine Variablenliste von Nachfolgezuständen aufweisen, um zu vermeiden, daß ein Backtracking-Stapel für Nachfolgezustände unterstützt werden muß. Für die Aktionssprache könnte an Stelle des offenbarten Adress-basierenden Zwischencodes äquivalent ein umgekehrter Stapel-basierter Polish-Zwischencode verwendet werden. Schließlich ist es an Stelle einer Interpretation möglich unter Verwendung der offenbarten auf die Syntax gerichteten Verfahren direkt in eine Maschinensprache zu kompilieren.The preferred implementation of the WDL is described in this section under the following headings: (1) Parsing or syntactic analysis of regular expression rules, (2) Intermediate code generation for regular expressions (3) runtime interpretation of regular expressions, (4) action language code generation and runtime interpretation. Note that this preferred implementation of the WDL is exemplary. It is known to those skilled in the art that alternatives to those herein described implementation exist. For example, the described processes are implemented differently, e.g. B. with different variables and different orders of individual steps. The processes can also be alternative Use algorithms to achieve the same effects e.g. B. for string matching to achieve. As another example, the disclosed discloses Implementation processes for the interpretation of different intermediate codes. Different intermediate codes can be used. For the regular Expression types are possible in different types of nodes, including z. B. nodes that have a variable list of successor states, to avoid that a Backtracking stack for successor states supports must become. For the Action language could equivalent to the disclosed address-based intermediate code an inverted batch-based Polish intermediate code can be used. Finally is it possible instead of an interpretation using the disclosed syntax-based methods directly into a Compile machine language.
Im Rest dieses Abschnitts wird ein Syntaxanalysebaumknoten, der eine Markierung "1" hat, Daten "d" und abgeleitete Knoten "c_1, ..., c_n" aufweist, mit "1<d;c_1, ..., c_n>" bezeichnet. Diese Syntaxanalysebaumknoten können in im Stand der Technik bekannter Weise aufgebaut sein und es kann darauf in bekannter Weise z. B. durch einen Zeiger auf einen Datenbereich, der Knotendaten enthält, Bezug genommen werden.In the rest of this section, a Parse tree node that has a "1" flag, Data "d" and derived Node "c_1, ..., c_n ", labeled" 1 <d; c_1, ..., c_n> ". These parse tree nodes can be constructed in a manner known in the prior art and it can then in a known manner z. B. by a pointer to a data area, that contains node data, Be referenced.
SYNTAKTISCHE ANALYSE VON REGULÄREN AUSDRUCKSVORSCHRIFTENSYNTACTIC ANALYSIS OF REGULAR EXPRESSION REGULATORY
Der erste Schritt bei der bevorzugten Implementierung eines Kompilierens einer Wrapper-Beschreibung ist ein syntaktisches Analysieren der Vorschriften der reg-exp Sprache und der Anweisungen der Aktionssprache. Die Eingabe zu diesem Schritt sind die Vorschriften der reg-exp-Sprache, die den abzugleichenden regulären Ausdruck definieren. Die Ausgabe dieses Schritts ist ein Zwischencode in der Form eines Satzes von Syntaxanalysebäumen, wobei ein Syntaxanalysebaum für die Vorschrift der höchsten Ebene und zusätzliche Syntaxanalysebäume für jede Vorschrift einer niedrigeren Ebene vorgesehen sind.The first step in the preferred Implementation of compiling a wrapper description is a syntactic analysis of the regulations of the reg-exp language and the instructions of the action language. The input to this step are the regulations of the reg-exp language that are to be compared regular Define expression. The output of this step is an intermediate code in the form of a set of parsing trees, one parsing tree for the Regulation of the highest Level and additional Parse trees for every Regulation of a lower level are provided.
Bei einer bevorzugten Ausführungsform wird die Verarbeitung dieses Schrittes durch syntaktische Analyse gemäß einem rekursiven absteigenden syntaktischen Analysealgorithmus (Parser) und Ausgeben des Syntaxanalysebaumes gemäß einem auf die Syntax gerichteten Übersetzer ausgeführt. Der Aufbau eines rekursiven absteigenden Kompilers für die zuvor beschriebene Syntax der reg-exp-Sprache ist Fachleuten geläufig. Beispielsweise ist er verständlich mit Beispielen in Lehrbüchern wie Aho et al., 1986, Compilers Principles, Techniques, and Tools, Addison Wesley Publishing Co. im Abschnitt 2.4 und 4.4 dargestellt. Ein auf die Syntax gerichteter Aufbau von Syntaxanalysebäume wird durch Beispiele im Abschnitt 5.2 abgedeckt. Diese Erfindung ist nicht auf diese bevorzugte Ausführung beschränkt. Alternative syntaktische Analysetechniken sind im Stand der Technik bekannt und diese Erfindung umfaßt Ausführungen, bei welchen solche Techniken, wie beispielsweise das LL oder LR-Parsen verwendet werden. Allgemein siehe auch Aho et al., Kapitel 4. Diese Erfindung umfaßt ebenso alternative Techniken der Zwischencodegenerierung, die im Stand der Technik bekannt sind. Allgemein siehe auch Aho et al., Kapitel 5.In a preferred embodiment, the processing of this step is carried out by syntactical analysis in accordance with a recursive descending syntactic analysis algorithm (parser) and outputting the syntax analysis tree in accordance with a syntax-oriented translator. Experts are familiar with the construction of a recursive descending compiler for the syntax of the reg-exp language described above. For example, it is understandably illustrated with examples in textbooks such as Aho et al., 1986, Compilers Principles, Techniques, and Tools, Addison Wesley Publishing Co. in sections 2.4 and 4.4. A syntax-oriented structure of syntax analysis trees is covered by examples in section 5.2. This Invention is not limited to this preferred embodiment. Alternative syntactic analysis techniques are known in the art and this invention encompasses implementations using such techniques as LL or LR parsing. In general, see also Aho et al., Chapter 4. This invention also encompasses alternative techniques of intermediate code generation that are known in the art. In general, see also Aho et al., Chapter 5.
Die Spezifizierung für die auf die Syntax gerichtete Analyse umfaßt Vorschriften für die Syntaxanalysebaumknoten, die zu erzeugen sind, wenn jede Syntaxvorschrift durch den Analysealgorithmus erkannt ist. Für jede der vorherigen reg-exp Syntaxvorschriften werden die folgenden Knoten, die durch das Non-Terminal der Vorschrift gekennzeichnet sind, erzeugt:
- 1. Rule: Erzeuge den Knoten "Rule <nonterminal-Name; node-for-regexp>." Dies ist der Knoten für eine gesamte Vorschrift, die mit ihrem Non-Terminal-Namen gekennzeichnet ist.
- 2. Regexp: Erzeuge den Knoten "alternatives <node_for_sequence_1, ..., node_for_sequence_n>". Das ist der Knoten für eine Disjunktion ("|") für alternative reguläre Ausdrücke, die auf eine Übereinstimmung in der aufgelisteten Reihenfolge getestet werden, wobei die erste erfolgreiche Übereinstimmung zurückgegeben wird.
- 3. Sequence: Erzeuge den Knoten "Sequence <node_for_repetition_1 ..., node_for_repetition_n>." Das ist der Knoten für eine Sequenz regulärer Ausdrucksmuster, von welchen jedes sequentiell übereinstimmen muß.
- 4. Repetition: Erzeuge den Knoten "Repetition <type; node_for_term>." Das ist der Knoten für eine Wiederholung, wobei type ein Element ist, aus der Gruppe bestehend aus "?" (0 oder 1 Wiederholung), "+" (eine oder mehrere Wiederholungen) und "*" (0 oder mehr Wiederholungen).
- 5. String_In_Double_Quotes: Erzeuge den Knoten "String <literal_string>." Dies ist der Knoten, um einen wörtlichen String abzugleichen.
- 6. Stuff: Erzeuge den Knoten "Stuff<>" für das reservierte Wort "stuff".
- 7. (Regexp): Erzeuge den Knoten "Sequence <OpenParenthesis<i>, node_for_Regexp, CloseParenthesis<i>>." Dies ist der Knoten, der eine Zuordnung zu einer sequentiell numerierten Variable auf einen Abgleich durch "Regexp" bewirkt. Der Knoten "OpenParenthesis<n>" ist ein Knoten, der die n-te offene Klammer darstellt, die bei der sequentiellen syntaktischen Analyse der RHS der momentanen Vorschrift angetroffen wird. Die Vorschrift "CloseParenthesis<n>" ist ein Knoten, der die entsprechende n-te schließende Klammer darstellt, die angetroffen wird.
- 8. <nonterminal>: Erzeuge den Knoten "Nonterminal <nonterminal_name>," als ein Beispiel eines Non-Terminal.
- 9. Action: Erzeuge den Knoten "Action <node_for_action_language_statement>."
- 1. Rule: Create the node "Rule <nonterminal name; node-for-regexp>." This is the node for an entire rule that is identified by its non-terminal name.
- 2. Regexp: Create the node "alternative <node_for_sequence_1, ..., node_for_sequence_n>". This is the node for a disjunction ("|") for alternative regular expressions that are tested for a match in the order listed, returning the first successful match.
- 3. Sequence: Create the node "Sequence <node_for_repetition_1 ..., node_for_repetition_n>." This is the node for a sequence of regular expression patterns, each of which must match sequentially.
- 4. Repetition: Create the node "Repetition <type;node_for_term>." This is the node for a repetition, where type is an element from the group consisting of "?" (0 or 1 repetition), "+" (one or more repetitions) and "*" (0 or more repetitions).
- 5. String_In_Double_Quotes: Create the node "String <literal_string>." This is the node for matching a literal string.
- 6. Stuff: Create the node "Stuff <>" for the reserved word "stuff".
- 7. (Regexp): Create the node "Sequence <OpenParenthesis <i>, node_for_Regexp, CloseParenthesis <i>>." This is the node that causes an assignment to a sequentially numbered variable on a comparison by "Regexp". The "OpenParenthesis <n>" node is a node that represents the nth open parenthesis encountered in the sequential parsing of the RHS of the current regulation. The "CloseParenthesis <n>" rule is a node that represents the corresponding nth closing bracket that is encountered.
- 8. <nonterminal>: Create the node "Nonterminal <nonterminal_name>," as an example of a non-terminal.
- 9. Action: Create the node "Action <node_for_action_language_statement>."
Dies ist ein Knoten eines Beispiels einer Aktionssprachenanweisung, bei der die node_for_action_language_statement einen Zwischencode für die Aktionssprachenanweisung darstellt.This is a node of an example an action language instruction in which the node_for_action_language_statement an intermediate code for represents the action language instruction.
Diese Vorschriften, die abgearbeitet werden, wenn der Analysealgorithmus die entsprechende reg-exp-Sprachsyntaxvorschrift erkennt, bewirken die Erzeugung eines Syntaxanalysebaums, der aus den aufgelisteten Knotentypen gebildet wird, die in einer true-Struktur verbunden sind. Dieser Syntaxanalysebaum wird in nachfolgende Schritte dieses Prozesses eingegeben.These regulations that worked through if the analysis algorithm has the appropriate reg-exp language syntax rule recognizes, generate a parsing tree that is out the listed node types is formed in a true structure are connected. This parsing tree will be in subsequent steps entered this process.
ZWISCHENCODEERZEUGUNG FÜR REGULÄRE AUSDRÜCKEBETWEEN CODE PRODUCTION FOR REGULAR EXPRESSIONS
Eine Codeerzeugung bei der bevorzugten Ausführung umfaßt die folgenden drei Schritte:
- 1. Spezielle Vorverarbeitung von Stuff-Knoten;
- 2. Eliminierendes Auftreten von Non-Terminals auf der RHS des Non-Terminals der obersten Ebene; und
- 3. Umwandeln der resultierenden RHS der Vorschrift der obersten Ebene in einen endlichen Automaten ("FSA").
- 1. Special preprocessing of stuff nodes;
- 2. Eliminating occurrence of non-terminals on the RHS of the top-level non-terminals; and
- 3. Convert the resulting RHS of the top level rule into a finite state machine ("FSA").
Diese Schritte werden erstens allgemein und zweitens in Einzelheiten beschrieben.First, these steps become general and secondly described in detail.
Zuerst ist eine Vorverarbeitung von Stuff-Knoten notwendig, um später das bevorzugte gegensinnige Durchquerungsverfahren bei der Erzeugung des FSA zu verwenden. Da ein FSA nicht für ein Stuff-Element allein aufgebaut werden kann, ist es notwendig einen FSA für die Kombination eines Stuff-Knotens und des Knotens des wörtlichen Strings aufzubauen, der jedem Stuff-Element folgen muß, und es können nur offene und schließende Klammern zwischen einem Stuff-Knoten und seinem darauffolgendem wörtlichen String vorkommen. Um dies zu erreichen, wird der Syntaxanalysebaum durchquert und jeder Stuff-Knoten mit dem folgenden wörtlichen String durch Ersetzen beider Knoten durch einen neuen Stuff_and_String-Knoten verknüpft. Der neue Knoten berücksichtigt auch dazwischen vorkommende Klammern.First is a preprocessing of Stuff knot necessary to later the preferred counter-traversal method of generation of the FSA. Because an FSA isn't for a stuff element alone an FSA is required for the combination of a stuff node and the knot of the literal string, which must follow each stuff element, and only open and closing parentheses can be used between a stuff knot and its subsequent literal String. To achieve this, the parsing tree traverses and each stuff knot with the following literal String by replacing both nodes with a new Stuff_and_String node connected. The new nodes considered also parentheses in between.
Der zweite Schritt bei der Codegenerierung substituiert alle Non-Terminals auf der RHS des Non-Terminals der höchsten Ebene mit ihren jeweiligen RHSen, um eine einzige zusammengesetzte Vorschrift für den gesamten regulären Ausdruck zu erzeugen. Während dieser Substituierung ist es notwendig, die Auftritte von Variablen in Aktionssprachenanweisungen umzunumerieren.The second step in code generation substitutes all non-terminals on the RHS of the non-terminal of the highest level with their respective RHSs to form a single composite regulation for the to generate entire regular expression. During this substitution, it is necessary to renumber the occurrences of variables into action language instructions.
Beispielsweise betrachte man den Wrapper:For example, consider that wrapper:
Hierbei bezieht sich $2 in der Ausgabeanweisung in <page> auf ("dan"), während sich $0 in der Ausgabeanweisung in <a> auf (stuff "cody") bezieht. Nach der Substituierung würde die RHS von <page> wie folgt erweitert sein, falls die Variablen in der Ausgabeanweisung nicht umnumeriert werden würden:Here, $ 2 refers to the output instruction in <page> on ("dan") while $ 0 in the output instruction in <a> refers to (stuff "cody"). After Substitution would the RHS of <page> expanded as follows if the variables in the output instruction are not renumbered would be:
Hierbei bezieht sich $0 jedoch auf ("dave") anstelle von (stuff "cody"), während sich $2 sich auf (stuff "cody") anstelle von ("dan") bezieht. Um eine korrekte Variablenzuteilung beizubehalten, müssen die Variablenbezugnahmen wie folgt umnumeriert werden:Here, however, $ 0 refers to ("dave") instead of (stuff "cody") while looking $ 2 refers to (stuff "cody") instead of ("dan"). To one To maintain correct variable assignment, the variable references must can be renumbered as follows:
Im dritten Schritt bei der bevorzugten Ausführungsform des Codegenerierungsprozesses werden die verarbeiteten und erweiterten RHSen in einen FSA durch Durchführen einer gegensinnigen Durchquerung des Syntaxanalysebaums umgewandelt, der die RHS der Vorschrift der höchsten Ebene darstellt, während jeder Knoten wiederum in einen FSA umgewandelt wird. Die FSAen weisen mehrere Typen von Zuständen auf, wobei am wichtigsten sind:
- 1. Char_branch: Verzweigt zu einem der 256 möglichen Nachfolgezustände, die von dem momentanen Schriftzeichen abhängen und rückt die momentane Leseposition vor;
- 2. Action: Führt einen Block von Aktionssprachenanweisungen aus;
- 3. Marker: Zeichnet die momentane Eingabestringposition plus oder minus eines bestimmten Versatzes auf einem Markierungsstapel auf;
- 4. Success: Wenn erreicht, war die syntaktische Analyse erfolgreich;
- 5. Fail: Wenn erreicht, ist der momentane Versuch der syntaktischen Analyse fehlgeschlagen und der FSA muß entweder zum vorherigen Backtracking-Punkt zurückverfolgen oder fehlschlagen, falls keine Backtracking-Punkte verfügbar sind;
- 6. Push: Schiebt eine Konfiguration, die einen FSA-Zustand und die momentane Eingabestringposition umfaßt, auf den Backtracking-Stapel für ein späteres Backtracking.
- 1. Char_branch: branches to one of the 256 possible successor states that depend on the current character and advances the current reading position;
- 2. Action: Executes a block of action language instructions;
- 3. Marker: records the current input string position plus or minus a certain offset on a marker stack;
- 4. Success: If reached, the parsing was successful;
- 5. Fail: If reached, the current attempt at parsing has failed and the FSA must either trace back to the previous backtracking point or fail if no backtracking points are available;
- 6. Push: Pushes a configuration that includes an FSA state and the current input string position onto the backtracking stack for later backtracking.
CODEGENERIERUNGSSCHRITT 1: VORVERARBEITUNGCode Generation STEP 1: PRE-PROCESSING
Die bevorzugte Vorverarbeitung von Stuff-Knoten beginnt mit einem Erweitern oder Verflachen von verschachtelten Sequenzen, d. h. Sequence<>-Elementen, die in anderen Sequence<>-Elementen verschachtelt sind. Dies wird gemäß dem folgenden Prozeß ausgeführt:The preferred preprocessing of Stuff node begins with expanding or flattening nested ones Sequences, d. H. Sequence <> elements in other Sequence <> elements are. This is done according to the following Process executed:
Als nächstes wird jedes Auftreten eines Stuff-Knotens durch einen Stuff_and_String-Knoten ersetzt, der auch den folgenden wörtlichen String und alle dazwischen vorkommenden Klammern berücksichtigt. Auf jedes Auftreten von "stuff" in einem Wrapper folgt ein wörtlicher String mit dem semantischen Ergebnis, daß "stuff" mit allen Schriftzeichen von der momentanen Position bis zum, jedoch nicht einschließlich des, ersten Auftretens) des folgenden wörtlichen Strings zusammenpaßt. Nur offene und schließende Klammern können zwischen Stuff und dem wörtlichen String vorkommen. Bei der bevorzugten Ausführung wird dieses Ersetzen vorzugsweise gemäß dem folgendem Prozeß durchgeführt:Next, each occurrence of a stuff node is replaced by a stuff_and_string node, which also takes into account the following literal string and all parentheses in between. On each occurrence of "stuff" in a wrapper is followed by a literal string with the semantic result that "stuff" matches all characters from the current position up to, but not including, the first occurrence) of the following literal string. Only open and closing brackets can appear between stuff and the literal string. In the preferred embodiment, this replacement is preferably done according to the following process:
Dieser Prozeß verknüpft den Stuff-Knoten, den wörtlichen String-Knoten c_j, und alle dazwischen vorkommenden Klammerknoten, ... c_j – 1, zu dem einzigen Stuff_and_String-Knoten; c_i + 1, ..., c – j – 1>.This process links the stuff node, the literal String node c_j, and all parentheses in between, ... c_j - 1, to the only Stuff_and_String node; c_i + 1, ..., c - j - 1>.
CODEGENERIERUNGSSCHRITT 2: SUBSTITUIERUNG UND VARIABLENUMBENENNUNGCode Generation STEP 2: SUBSTITUTION AND VARIABLE RENAME
Nachdem die Vorverarbeitung abgeschlossen ist, werden Non-Terminals auf der RHS der Vorschrift der höchsten Ebene vorzugsweise substituiert und alle Aktionsanweisungsvariablen umnumeriert. Für die Substituierung und Variablenumnumerierung wird vorzugsweise ein Prozess verwendet, der zwei Funktionen EXPAND_REC und EXPAND_ACTION und eine globale Variable PAREN_COUNT verwendet. EXPAND_REGEXP wird rekursiv aufgerufen, um RHS-Non-Terminals zu substituieren, wobei mit einem Ruf zum Non-Terminal der höchsten Ebene begonnen wird. PAREN_COUNT wird mit null initialisiert und mit fortlaufender Substituierung bei jeder angetroffenen "(" inkrementiert. PAREN_COUNT umfaßt somit einen Zählwert der gesamten Anzahl von "(", die bisher angetroffen wurden. Dann werden während der Substituierung angetroffene Klammern von ihrer früheren Zahl zum momentanen Wert von PAREN_COUNT umnumeriert und Variablen in den Aktionsanweisungen in einer entsprechenden Weise umnumeriert. Beispielsweise, wenn PAREN-COUNT momentan acht ist, wird ein OpenParenthesis <2>-Knoten durch einen OpenParenthesis<8>-Knoten ersetzt und eine Output($2)-Anweisung wird durch eine Output($8)-Anweisung ersetzt. EXPAND_ACTION führt eine Umnummerierung der Aktionsanweisungsvariable durch. Diese Prozesse werden vorzugsweise wie folgt durchgeführt:After the preprocessing is completed is, non-terminals on the RHS are the highest level requirement preferably substituted and all action statement variables renumbered. For the substitution and variable numbering preferably a process is used of the two functions EXPAND_REC and EXPAND_ACTION and a global one PAREN_COUNT variable used. EXPAND_REGEXP is called recursively, to substitute RHS non-terminals, with a call to the non-terminal the highest Level is started. PAREN_COUNT is initialized to zero and incremented with substitution on each encountered "(". PAREN_COUNT thus includes a count the total number of "(" that have been encountered so far were. Then during the parentheses found in the substitution from their previous number renumbered to the current value of PAREN_COUNT and variables in renumbered the action instructions in an appropriate manner. For example, if PAREN-COUNT is currently eight, an OpenParenthesis <2> node is replaced by one OpenParenthesis <8> node replaced and an Output ($ 2) statement is replaced by an Output ($ 8) statement. EXPAND_ACTION is leading one Renumber the action instruction variable by. These processes are preferably carried out as follows:
CODEGENERIERUNG TEIL 3: ERZEUGUNG EINES ENDLICHEN AUTOMATENCODE GENERATION PART 3: GENERATION OF A FINAL MACHINE
Im letzten Schritt einer Codegenerierung bei der bevorzugten Ausführung wird ein FSA erzeugt, der den substituierten und verarbeiteten regulären Ausdruck darstellt. Obwohl Algorithmen zum Generieren solcher FSAen bekannt sind, haben diese in der Vergangenheit keine Einrichtungen bereitgestellt, um beispielsweise Aktionssprachenanweisungen in solche FSAen einzubetten. Dementsprechend konzentriert sich die folgende Beschreibung auf diese neuen Merkmale der bevorzugten Ausführungsform dieses Prozesses, die auf die Unterstützung der Aktionssprachenanweisungen und die anderen neuartigen Merkmale der reg-exp-Sprache gerichtet sind.In the final step of code generation in the preferred embodiment, an FSA is generated that represents the substituted and processed regular expression. Although algorithms for generating such FSAs are known, they have not provided any facilities in the past, for example, to embed action language instructions in such FSAs. Accordingly, the fol Description to these new features of the preferred embodiment of this process, which are directed to the support of the action language instructions and the other novel features of the reg-exp language.
Eine FSA-Ausgabe von diesem Prozeß beginnt ihre Abarbeitung in einem Anfangszustand, wobei ein Eingabezeiger auf den Beginn des Eingabestrings gesetzt wird und dann wiederholt eine von sechs Grundprozeduren entsprechend seinem momentanen Zustand abarbeitet. Diese Prozeduren setzen einen neuen momentanen Zustand und beeinflussen typischerweise eine oder mehrere der Datenstrukturen, auf die durch den FSA zugegriffen wird. Die sechs Arten von Zuständen und ihre Prozeduren sind wie folgt:
- (1) Char_branch<next_state_0, ..., next_state_225>: Wenn der momentane Zustand ein char_branch- Zustand ist, wird der nächste Zustand gemäß dem ASCII-Wert i des momentanen Eingabeschriftzeichens als next_state_i ausgewählt und der Eingabezeiger wird auf das nächste Schriftzeichen im Eingabestring vorgerückt.
- (2) Marker<num, open/close_flag, offset, next_state>: Wenn der momentane Zustand ein Markierungszeichenzustand ist, wird ein Datensatz auf einen Laufzeitstapel geschoben, der als der Markierungsstapel bekannt ist, der die Schriftzeichenposition einer Klammer enthält, die im Eingabestring angetroffen wird, plus dem angezeigten Versatz und einer Kennzeichnung, ob diese Klammer offen oder geschlossen ist, und der nächste Zustand wird auf next_state gesetzt. Eine beispielhafte Markierung kann einen Datensatz verschieben, der anzeigt, daß die fünfte offene Klammer an der momentanen Eingabeposition aufgetreten ist.
- (3) Action<complied_action_statements, next_state>: Wenn der momentane Zustand ein Aktionszustand ist, werden die Aktionssprachenanweisungen abgearbeitet, die durch compiled_action_statements dargestellt sind und der nächste Zustand wird auf next_state gesetzt.
- (4) Success<>: Wenn der momentane Zustand der Erfolgszustand ist, wurde ein String erfolgreich abgeglichen und dieser FSA endet.
- (5) Push<state, next_state>: Wenn der momentane Zustand ein Verschiebezustand ist, wird die momentane Konfiguration des FSA auf einen Laufzeitstapel verschoben, der als der Backtracking-Stapel bekannt ist, und der nächste Zustand wird auf next_state gesetzt. Eine FSA-Konfiguration ist ein Datensatz, der eine Identifizierung zumindest des momentanen Zustands zusammen mit der momentanen Position in dem Eingangsstring enthält. Push wird verwendet, um die nicht-deterministischen Konstrukte in der regulären Ausdruckssprache zu unterstützen. Ein beispielhaftes nicht-deterministisches Konstrukt ist die Disjunktion "reg-expr1|reg-expr2", die durch einen FSA abgeglichen wird, der erstens einen Backtracking-Zustand auf den Backtracking-Stapel schiebt, und dann zweitens versucht, den FSA entsprechend zu reg-expr1 zu starten. Falls dies fehlschlägt, verfolgt er zurück und (c) versucht den endlichen Automaten entsprechend zu reg-expr2 zu starten.
- (6) Failure<>: Wenn der momentane Zustand der Fehlerzustand ist, wird ein Backtracking-Datensatz aus dem Backtracking-Stapel angehoben und der nächste Zustand und der momentane Eingabezeiger werden auf die Inhalte des Backtracking-Datensatzes gesetzt. Falls der Backtracking-Stapel leer ist, konnte der FSA den Eingabestring nicht abgleichen und endet.
- (1) Char_branch <next_state_0, ..., next_state_225>: If the current state is a char_branch state, the next state is selected as next_state_i according to the ASCII value i of the current input character and the input pointer becomes the next character in the input string advanced.
- (2) Marker <num, open / close_flag, offset, next_state>: If the current state is a marker character state, a record is pushed onto a runtime stack known as the marker stack that contains the character position of a parenthesis found in the input string , plus the displayed offset and an indication of whether this bracket is open or closed, and the next state is set to next_state. An exemplary marker can move a record that indicates that the fifth open bracket has occurred at the current input position.
- (3) Action <complied_action_statements, next_state>: If the current state is an action state, the action language instructions represented by compiled_action_statements are processed and the next state is set to next_state.
- (4) Success <>: If the current state is the success state, a string has been successfully compared and this FSA ends.
- (5) Push <state, next_state>: If the current state is a move state, the current configuration of the FSA is shifted to a runtime stack known as the backtracking stack, and the next state is set to next_state. An FSA configuration is a data record that contains an identification of at least the current status together with the current position in the input string. Push is used to support the non-deterministic constructs in the regular expression language. An exemplary non-deterministic construct is the disjunction "reg-expr1 | reg-expr2", which is compared by an FSA, which firstly pushes a backtracking state onto the backtracking stack and then secondly tries to regulate the FSA accordingly. start expr1. If this fails, it traces back and (c) tries to start the finite machine accordingly to reg-expr2.
- (6) Failure <>: If the current state is the fault state, a backtracking data set is raised from the backtracking stack and the next state and the current input pointer are set to the contents of the backtracking data set. If the backtracking stack is empty, the FSA could not match the input string and ends.
Die Erzeugung des FSA für einen eingegebenen regulären Ausdruck wird unter Verwendung einer gegensinnigen Durchquerung des zuvor produzierten Syntaxanalysebaums ausgeführt. Wenn der Syntaxanalysebaum durchquert wird, wird an jeden Knoten v ein endlicher Automat angefügt, der mit dem Unterausdruck zusammenpaßt, der durch den Unterbaum dargestellt ist, der bei v wurzelt. Dieser angefügte endliche Automat ist der Wert der Variable v.machine. Die endgültige FSA-Ausgabe ist der FSA, der an die Wurzel des Syntaxanalysebaums angefügt ist, wenn der Erzeugungsprozeß endet.The generation of the FSA for one entered regular Expression is made using an opposite traverse of the parsing tree previously produced. If the parse tree is traversed, a finite automaton is added to each node v matches with the subexpression that goes through the subtree is shown, which is rooted at v. This finite automaton is the one Value of the v.machine variable. The final FSA edition is the FSA, which is appended to the root of the parsing tree when the creation process ends.
Während der Durchquerung werden bestimmte endliche Automaten gemäß für Fachleute bereits bekannten Verfahren erzeugt. Diese Automaten erkennen reguläre Standardausdruckskonstrukte und können mit bekannten Verfahren aufgebaut werden. Allgemeine Referenzquellen für die Erzeugung derartiger endlicher Standardautomaten umfassen die folgenden: Aho et al., 1974, The Design And Analysis Of Computer Algorithms, Addison Wesley Publishing Co., Kapitel 9, Aho et al., 1986, Compilers Principles, Techniques, and Tools, Addison Wesley Publishing Co., Kapitel 3; Hopcroft et al., 1979, Introduction to Automata Theory, Languages, and Computation, Addison-Wesley Publishing Co., Abschnitt 2.5; Sedgewick, 1990, Algorithms in C, Addison-Wesley Publishing Co., Kapitel 16.While the crossing becomes certain finite automata for professionals already known methods generated. These machines recognize regular standard expression constructs and can with known methods are established. General reference sources for the Generation of such finite standard machines include the following: Aho et al., 1974, The Design And Analysis Of Computer Algorithms, Addison Wesley Publishing Co., Chapter 9, Aho et al., 1986, Compilers Principles, Techniques, and Tools, Addison Wesley Publishing Co., Chapter 3; Hopcroft et al., 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.
Des weiteren kann der offengelegte Prozeß bestimmte Konstruktionsmethoden annehmen, die vorteilhafterweise bei einer alternativen Ausführung verändert sein können. Beispielsweise kann der Automat, der einen wörtlichen String darstellt, gemäß dem Boyer-Moore oder einem anderen Stringabgleichsalgorithmus aufgebaut sein. Siehe z. B. Sedgewick Kapitel 19.Furthermore, the disclosed Process determined Adopt construction methods that are advantageous for a alternative execution changed could be. For example, the machine that represents a literal string can according to the Boyer Moore or another string matching algorithm. Please refer z. B. Sedgewick Chapter 19.
Der bevorzugte Prozeß ist:The preferred process is:
Dieser Prozeß verwendet eine MAKE_SEQUENCE-Funktion, die einen zusammengesetzen Automaten aus einer Reihe von Unterautomaten aufbaut. Der zusammengesetzte Automat arbeitet jeden der Unterautomaten in der Sequenz ab, bis ein Unterautomat versagt, wobei in diesem Fall der zusammengesetzte Automat ebenfalls versagt, oder alle Unterautomaten erfolgreich sind, wobei in diesem Fall der zusammengesetzte Automat erfolgreich ist. Mit anderen Worten startet der zusammengesetzte Automat den ersten Unterautomaten. Falls dieser erfolgreich ist, startet er den zweiten. Falls dieser erfolgreich ist, startet er den dritten usw.This process uses a MAKE_SEQUENCE function, which put together machines from a series of sub-machines builds. The assembled machine works each of the sub-machines in the sequence until a sub-machine fails, whereby in this If the assembled machine also fails, or all sub-machines are successful, in which case the composite automaton is successful. In other words, the compound starts Automat the first submachine. If this is successful, he starts the second. If it is successful, it starts the third etc.
Falls irgendein Unterautomat versagt, d. h. einen Failure<>-Status erreicht, versagt der zusammengesetzte Automat ebenso.If any sub-machine fails, d. H. reached a Failure <> status, fails the composite machine as well.
Hiermit wird der bevorzugte Aufbau von FSAen, die reguläre Ausdrücke der der reg-exp-Sprache dieser Erfindung darstellen, abgeschlossen. Als nächstes wird die FSA-Abarbeitung beschrieben.This is the preferred setup from FSAen, the regular expressions that of the reg-exp language of this invention. Next up described the FSA processing.
LAUFZEITINTERPRETIERUNG VON REGULÄREN AUSDRÜCKENLAUFZEITINTERPRETIERUNG FROM REGULAR EXPRESS
Bei einer bevorzugten Ausführung wird der FSA, der einen regulären Ausdruck darstellt, durch Interpretieren der in den vorherigen Codegenerierungsschritten erzeugten Struktur abgearbeitet. Der Interpreter greift vorzugsweise auf mehrere Datenstrukturen einschließlich des momentanen Zustands des FSA, eines Zeigers auf die momentane Schriftzeichenposition des Eingabestrings, eines Backtracking-Stapels und eines Markierungszeichenstapels zu. Der Backtracking-Stapel enthält Datensätze, die den Interpretationszustand des FSA kennzeichnen und wird auf eine im Stand der Technik bekannte Weise verwendet, um ein Backtracking zu implementieren, falls ein versuchter Teilabgleich des Eingabestrings fehlschlägt. Konfigurationsdatensätze umfassen den momentanen Zustand und die momentane Eingabeposition. Bei einer alternativen Ausführung können Verschiebezustände durch Implementieren von Zuständen mit einer Liste von möglichen nächsten Zuständen vermieden werden.In a preferred embodiment the FSA, the one regular Represents expression by interpreting those in the previous code generation steps generated structure processed. The interpreter prefers to intervene to multiple data structures including the current state the FSA, a pointer to the current character position the input string, a backtracking stack, and a marker stack to. The backtracking stack contains records that characterize the interpretation status of the FSA and will open a way known in the art used to backtracking to implement if an attempted partial comparison of the input string fails. Configuration records include the current state and the current input position. In an alternative version can shifting states by implementing states avoided with a list of possible next states become.
Bei der bevorzugten Implementierung der neuartigen Variablenbindungs- und Aktionsanweisungsmerkmale der reg-exp-Sprache dieser Erfindung wird ein zusätzlicher Stapel, der Markierungszeichenstapel verwendet. Die Semantik dieser Merkmale erfordert, daß keine Aktionen ausgeführt werden, bis der gesamte Abgleichprozeß für den regulären Ausdruck erfolgreich ist. Auf einen Erfolg hin, werden alle Aktionen dann mit den Variablenbindungen abge arbeitet, die während der syntaktischen Analyse aufgetreten sind. Das bedeutet, daß eine einzelne Variable, z. B. $1, verschiedene Bindungen in derselben Aktionsanweisung haben kann, die bei einem Abgleichserfolg mehrfach abgearbeitet werden kann.In the preferred implementation the new variable binding and action instruction features The reg-exp language of this invention becomes an additional one Stack using marker sign stack. The semantics of this Characteristics requires that none Actions performed until the entire regular expression matching process is successful. Upon success, all actions are then linked to the variable abge who works during the syntactic analysis have occurred. That means a single Variable, e.g. B. $ 1, different ties in the same action instruction may have worked through several times if the comparison was successful can be.
Diese Semantik wird bei der bevorzugten Ausführung unter Verwendung des Markierungszeichenstapels in der folgenden Weise implementiert. Wenn der momentane interpretierte Zustand ein Action<>-Zustand ist, wird die Aktionsspracheanweisung nicht unmittelbar abgearbeitet. Vielmehr wird der Aktionsanweisungscode auf den Markierungszeichenstapel geschoben. Ähnlich wird, wenn der momentane Zustand ein Markierungszeichenzustand ist, der eine Klammer in der regulären Ausdrucksdefinition darstellt, die Information, die im Markierungszeichenstapel vorliegt, auf den Markierungszeichenstapel geschoben. Diese Information ermöglicht ein Finden der Position des Beginns oder Endes einer momentanen Variablenbindung in einem Eingabestring. Um eine Abarbeitung von Aktionssprachenanweisungen zu verhindern, die während eines fehlgeschlagenen versuchten Teilabgleichs berücksichtigt wurden, wird der Markierungszeichenstapel auf eine geeignete Ebene angehoben, wenn der FSA ein Backtracking ausführt. Somit umfassen die Automatenkonfiguration und der Konfigurationsdatensatz auf dem Backtracking-Stapel des weiteren die momentane Position in dem Markierungszeichenstapel.This semantics is preferred in the execution using the marker character stack in the following Way implemented. If the current interpreted state is on Action <> state is being the action language instruction was not processed immediately. Much more the action instruction code on the marker stack pushed. Similar if the current state is a flag state, which is a bracket in the regular Expression definition represents the information contained in the marker stack is present, pushed onto the stack of marking characters. This information allows finding the position of the beginning or end of a current one Variable binding in an input string. To process a Prevent action language instructions from occurring during a failed attempted partial adjustment taken into account the marker stack will be at an appropriate level raised when the FSA is backtracking. Thus include the machine configuration and the configuration record on the backtracking stack of the the current position in the marker stack.
Aktionssprachenanweisungen werden auf einen endgültigen Abgleichserfolg durch Scannen des Markierungszeichenstapels von unten nach oben abgearbeitet. Bei diesem Scannen werden Variablenbindungen gesetzt, wie durch die Markierungszeichenzustandsdatensätze gekennzeichnet ist, und Aktionen abgearbeitet, wie durch die Aktionszustandsdatensätze gekennzeichnet ist. Im Fall eines Abgleichsfehlschlags, werden keine Aktionssprachenanweisungen abgearbeitet.Action language instructions will be to a final one Matching success by scanning the stack of markers from worked from bottom to top. With this scanning, variable bindings are set, as identified by the marker state records, and Actions processed as identified by the action status records is. In the event of a match failure, no action language instructions are provided processed.
In Einzelheiten funktioniert eine
Ausführung
der bevorzugten Implementierung wie folgt:
GLOBAL VARIABLE
current_state = initialisiert auf den Anfangsautomatenzustand
GLOBAL
VARIABLE input_pos = initialisiert auf die Adresse des Anfangs des
Eingabestrings
GLOBAL VARIABLE BT_STACK = initialisiert auf
einen leeren Stapel
GLOBAL VARIABLE MARK_STACK = initialisiert
auf einen leeren Stapel
REPEAT UNTIL eine der folgenden Klauseln
aussteigtIn detail, execution of the preferred implementation works as follows:
GLOBAL VARIABLE current_state = initialized to the initial automatic 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
GLOBAL VARIABLE MARK_STACK = initialized to an empty batch
REPEAT UNTIL one of the following clauses gets out
Beispielsweise wird in der vorhergehenden FOR-Schleife, die Bindung von $2 auf den Unter-String des Eingabestrings gesetzt, der bei open_marks [2] beginnt und bei close_marks [2] endet.For example, in the previous FOR loop, the binding of $ 2 to the sub-string of the input string set that starts with open_marks [2] and starts with close_marks [2] ends.
AKTIONSSPRACHENCODEGENERIERUNG UND LAUFZEITINTERPRETATIONACTION LANGUAGE Code Generation AND DURATION INTERPRETATION
Bei einer bevorzugten Ausführung werden Aktionssprachenanweisungen in einen Bytecode-Typus mit variabler Länge einer Zwischensprache kompiliert, der durch einen Bytecode-Interpreter mit Laufzeit abgearbeitet wird. Die Syntax der zuvor beschriebenen Aktionssprache wird durch eine beliebige geeignete bekannte syntaktische Analysetechnik, beispielsweise durch eine syntaktische LL- oder LR-Analyse syntaktisch analysiert. Geeignete syntaktische Analysetechniken werden mit Beispielen in Aho et al., 1986, Compiler Principles, Techniques, and Tools, Addison Wesley Publishing Co., Kapitel 4 präsentiert. Während der syntaktischen Analyse werden allen in den Wrappern auftretenden Variablen eindeutige Zahlen zugeordnet. Gemäß einer bevorzugten derartigen Zuordnung werden benannten Variablen, z. B. $x, $abc, in der Reihenfolge, in der sie angetroffen werden, fortlaufende, positive ganze Zahlen zugeordnet und den numerischen Variablen, die abgeglichene Unter-Strings, z. B. $0, $1, $2, etc. bezeichnen, fortlaufende, negative ganze Zahlen zugeordnet, wobei die numerische Variable $i der Zahl-(i + 1) zugeordnet wird.In a preferred embodiment Action language instructions in a bytecode type with variable Length one Intermediate language compiled by a bytecode interpreter is processed with runtime. The syntax of the previously described Action language is known by any suitable syntactic Analysis technology, for example by a syntactic LL or LR analysis parsed. Appropriate syntactical analysis techniques are illustrated with examples in Aho et al., 1986, Compiler Principles, Techniques, and Tools, Addison Wesley Publishing Co., Chapter 4. While The syntactic analysis will include all those occurring in the wrappers Assigned unique numbers to variables. According to a preferred one Assignment are named variables, e.g. B. $ x, $ abc, in order, in which they are encountered, consecutive, positive integers assigned and the numeric variables, the matched sub-strings, e.g. B. $ 0, Denote $ 1, $ 2, etc., assigned consecutive, negative integers, where the numeric variable $ i is assigned to the number (i + 1).
Durch bekannte auf die Syntax gerichtete Übersetzungstechniken wird ein Zwischencode generiert. Geeignete auf die Syntax gerichtete Übersetzungstechniken werden mit Beispielen in Aho et al. in Kapitel 8 dargelegt. Der bevorzugte Zwischencode wird nachfolgend dargestellt. Bei dieser Darstellung haben Befehle der Zwischensprache das Format eines Befehlcodes mit gegebenenfalls modifizierender Information, worauf null oder mehr Argumente folgen. Die Variablen sind mit <var> bezeichnet, wobei var die ganzzahlige 2-Byte-Kodierung der Variable ist. Die relativen Verzweigungsoffsets sind als ganze 4-Byte-Zahlen kodiert. Alle Verzweigungen sind relativ zur momentanen Befehlsadresse, d. h. der Adresse des Verzweigungsbefehls selbst, so daß der Byte-Code relokatierbar ist.
- 1. Funktionsaufrufe: Kodierung: 0 funcode numargs <var_0> <var_1> ... <var_numargs> Bedeutung: var0 ist das Ergebnis der Funktion zugeteilt, identifiziert durch „funcode" auf die Argumente var_1, ..., var_numargs der Zahl „numargs". Jede eingebaute Funktion, z. B. agrc, argv, etc. und jeder Operator, z. B. "+", "–", "*", etc. der Sprache weist ihre eigene eindeutige ganze Zahl „funcode" auf.
- 2. Verzweigungsbefehle: Kodierung: 1 <offset> <var0> Bedeutung: falls var0 wahr ist, verzweige um einen relativ zum Verzweigungsbefehl versetzten Betrag. Kodierung: 2 <offset> <var0> Bedeutung: falls var0 falsch ist, verzweige um einen relativ zum Verzweigungsbefehl versetzten Betrag. Kodierung: 3 <offset> Bedeutung: verzweige immer um einen relativ zum Verzweigungsbefehl versetzten Betrag.
- 3. Lade Konstante Befehle: Kodierung: 4 <var0> <null-terminated-string> Bedeutung: var0 wird die null-terminated-string-Konstante zugeteilt. Kodierung: 5 <var0> <floating-point-constant> Bedeutung: var0 wird die Fließkommakonstante zugeteilt
- 4. Bewege Befehle: Kodierung: 6 <var0> <var1> Bedeutung: var0 wird von var 1 kopiert.
- 5. Ausgabebefehle: Kodierung: 7 <var0> Bedeutung: gibt ein Element var0 zum momentanen Tupel aus Kodierung: 8 Bedeutung: beendet das momentane Tupel, bewirkt, daß es zum Netbot zurückgegeben wird
- 6. Syntaxanalysebefehle: Kodierung: 9 <var0> <var1> <Adresse des endlichen Automatens für <nt>> Bedeutung: var0 wird das Ergebnis der syntaktischen Analyse von var1 gemäß dem regulären Ausdruck zugeteilt, der mit <nt> gekennzeichnet ist.
- 7. Verlasse Befehle: Kodierung: 10 Bedeutung: Verlasse den momentanen Aktionssprachenblock
- 1. Function calls: Coding: 0 funcode numargs <var_0><var_1> ... <var_numargs> Meaning: var0 is the result of the function assigned, identified by "funcode" to the arguments var_1, ..., var_numargs of the number "numargs ". Every built-in function, e.g. B. agrc, argv, etc. and any operator, e.g. B. "+", "-", "*", etc. of the language has its own unique integer "funcode".
- 2. Branch instructions: Coding: 1 <offset><var0> Meaning: if var0 is true, branch by an amount offset relative to the branch instruction. Coding: 2 <offset><var0> Meaning: if var0 is wrong, branch by an amount offset relative to the branch instruction. Coding: 3 <offset> Meaning: always branch by an amount offset relative to the branch instruction.
- 3. Load constant commands: Coding: 4 <var0><null-terminated-string> Meaning: var0 is assigned the null-terminated-string constant. Coding: 5 <var0><floating-point-constant> Meaning: var0 is assigned the floating point constant
- 4. Move commands: Coding: 6 <var0><var1> Meaning: var0 is copied from var 1.
- 5. Output commands: Coding: 7 <var0> Meaning: outputs an element var0 to the current tuple Coding: 8 Meaning: ends the current tuple, causes it to be returned to the Netbot
- 6. Syntax analysis commands: Coding: 9 <var0><var1><address of the finite state machine for <nt>> Meaning: var0 is assigned the result of the syntactical analysis of var1 according to the regular expression, which is marked with <nt>.
- 7. Leave commands: Coding: 10 Meaning: Leave the current action language block
Bei alternativen Ausführungen können unterschiedliche Zwischencodes oder sogar kein Zwischencode verwendet werden. Beispielsweise könnte anstelle des oben offengelegten auf Adressen basierenden Zwischencodes äquivalent ein umgekehrter Stapel-basierter Polish-Zwischencode verwendet werden. Optional wird kein Zwischencode verwendet und die Aktionssprachenanweisungen werden direkt in eine Maschinensprache kompiliert. Diese beiden Alternativen können unter Verwendung der offenbarten auf die Syntax gerichteten Verfahren implementiert werden. Siehe z. B. Aho et al.In alternative versions can different intermediate codes or even no intermediate code used become. For example equivalent to the address-based intermediate code disclosed above an inverted batch-based Polish intermediate code can be used. optional no intermediate code is used and the action language instructions are compiled directly into a machine language. These two Alternatives can using the disclosed syntax-based methods be implemented. See e.g. B. Aho et al.
Eine Abarbeitung von Wrapperaktionen wird bei einer bevorzugten Ausführung in mehreren Schritten durchgeführt. Zunächst wird Speicher zugeteilt, um alle Variablen und alle Variablenwerte zu speichern. Die Anzahl der Variablen ist bekannt, nachdem die Aktionsanweisungen syntaktisch analysiert wurden. Alle Variablen werden auf einen nicht zugeteilten Wert initialisiert. Als nächstes wird ein CURRENT_INSTRUCTION-Zeiger so initialisiert, daß er auf den nächsten Befehl des abzuarbeitenden Bytecodes zeigt. Dann tritt der Interpreter in eine Schleife ein, die den Arbeitscode abruft, auf den durch CURRENT_INSTRUCTION gezeigt wird, führt die kodierte einfache Aktion gemäß der oben beschriebenen Bytecode-Sprache aus und aktualisiert CURRENT_INSTRUCTION, so daß dieser entweder auf den nächsten Befehl zeigt, oder bei angenommenen Verzweigungsbefehlen mit dem Offset-Wert modifiziert wird. Der Interpreter beendet die Abarbeitung, sobald er auf einen Ausgangsbefehl trifft.A processing of wrapper actions is in a preferred embodiment carried out in several steps. First memory is allocated to all variables and all variable values save. The number of variables is known after the Action instructions were parsed. All variables are initialized to an unallocated value. Next up a CURRENT_INSTRUCTION pointer initialized to point to the next Command of the bytecode to be processed shows. Then the interpreter kicks in in a loop that retrieves the work code to the one by CURRENT_INSTRUCTION is shown leads the encoded simple action according to the above bytecode language described and updates CURRENT_INSTRUCTION so that this either on the next command shows, or with accepted branch instructions with the offset value is modified. The interpreter ends the processing as soon as he meets an exit command.
Die eingebaute Syntaxanalysefunktion wird mit Laufzeit durch Aufrufen des FSA-Interpreters abgearbeitet, um den kompilierten regulären Ausdruckscode zu interpretieren, der den endlichen Automaten beschreibt. Ausgabe-(a_1, ..., a_n)-Anweisungen werden übersetzt und dann durch Abarbeiten des Bytecode-Befehls-Codes 7 für jede Variable in der Ausgabeliste abgearbeitet, worauf ein Bytecode-Befehls-Code 8 folgt, der das aktuelle Tupel beendet, d. h. das Ende der Ausgabeanweisung markiert.The built-in syntax analysis function is processed at runtime by calling the FSA interpreter to get the compiled regular To interpret the expression code that describes the finite automaton. Output (a_1, ..., a_n) instructions are translated and then processed of the bytecode instruction code 7 for each variable in the output list is processed, whereupon a bytecode command code 8 follows that ends the current tuple, i.e. H. the end of the output instruction marked.
6. SPEZIELLE AUSFÜHRUNGEN, ANFÜHRUNG VON REFERENZEN6. SPECIAL VERSIONS leadership OF REFERENCES
Die vorliegende Erfindung ist in ihrem Umfang nicht durch die speziellen hier beschriebenen Ausführungen, beschränkt. Für Fachleute werden sich verschiedene Abwandlungen der Erfindung zusätzlich zu den hierin beschriebenen aus der vorangehenden Beschreibung und den begleitenden Figuren ergeben. Es ist beabsichtigt, daß derartige Modifizierungen in den Umfang der beigefügten Ansprüche fallen.The present invention is in its scope is not due to the special designs described here, limited. For professionals various modifications of the invention will become apparent those described in the foregoing description and the accompanying figures. It is intended that such Modifications fall within the scope of the appended claims.
Claims (16)
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US253096P | 1996-09-20 | 1996-09-20 | |
| US2530P | 1996-09-20 | ||
| PCT/US1997/017132 WO1998012881A2 (en) | 1996-09-20 | 1997-09-22 | Method and system for network information access |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE69726463D1 DE69726463D1 (en) | 2004-01-08 |
| DE69726463T2 true DE69726463T2 (en) | 2004-08-26 |
Family
ID=29720369
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE69726463T Expired - Lifetime DE69726463T2 (en) | 1996-09-20 | 1997-09-22 | METHOD AND SYSTEM FOR ACCESSING NETWORK INFORMATION |
Country Status (1)
| Country | Link |
|---|---|
| DE (1) | DE69726463T2 (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111309299A (en) * | 2020-01-15 | 2020-06-19 | 珠海格力智能装备有限公司 | Industrial robot language processing method and device, storage medium and electronic equipment |
-
1997
- 1997-09-22 DE DE69726463T patent/DE69726463T2/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| DE69726463D1 (en) | 2004-01-08 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP1015964B1 (en) | Method and system for network information access | |
| DE60213409T2 (en) | CREATING STRUCTURED DATA FROM UNFORMATED TEXT | |
| DE19718834B4 (en) | Navigation in hypermedia using soft hyperlinks | |
| US5956720A (en) | Method and apparatus for web site management | |
| DE69801816T2 (en) | DEVICE AND METHOD FOR UPDATING AND SYNCHRONIZING INFORMATION BETWEEN A CLIENT AND A SERVER | |
| DE60126016T2 (en) | Server-side control objects for processing customer-side user interface elements | |
| DE60129652T2 (en) | Image retrieval system and method with semantic and property-based relevance feedback | |
| US6658624B1 (en) | Method and system for processing documents controlled by active documents with embedded instructions | |
| DE60208604T2 (en) | Automatic process for creating image buttons | |
| DE60120822T2 (en) | Meta-document and method for managing meta-documents | |
| US7174506B1 (en) | Method and system for producing dynamic web pages | |
| US10127313B2 (en) | Method of retrieving attributes from at least two data sources | |
| DE102019001267A1 (en) | Dialog-like system for answering inquiries | |
| DE19962192A1 (en) | Method and system for content conversion of electronic data for wireless devices | |
| DE102013003055A1 (en) | Method and apparatus for performing natural language searches | |
| DE10122197A1 (en) | Method and system for accessing information on a network using message linking functions with shadow callback functions | |
| US20020143816A1 (en) | Method and system for using a generalized execution engine to transform a document written in a markup-based declarative template language into specified output formats | |
| DE10031351A1 (en) | Automatic research procedure | |
| US20030158894A1 (en) | Multiterminal publishing system and corresponding method for using same | |
| DE60101668T2 (en) | METHOD AND DEVICE FOR GENERATING AN INDEX BASED ON A FORMAT FOR A STRUCTURED DOCUMENT | |
| DE10250836A1 (en) | Network navigation method in computer network, involves displaying number of bookmark indicators each of which is associated with respective one of group associated bookmarks | |
| US7043482B1 (en) | Automatic and secure data search method using a data transmission network | |
| EP1030254B1 (en) | Method and system to manage documents | |
| DE69726463T2 (en) | METHOD AND SYSTEM FOR ACCESSING NETWORK INFORMATION | |
| Deogun et al. | Structural abstractions of hypertext documents for web-based retrieval |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8364 | No opposition during term of opposition |