A computer-implemented method of retrieving information in a first markup language through a query engine and presenting the information in any required markup language. A user inputs a query and may invoke a number of transformative sequences. These sequences contain a markup language pattern and an action, which may include transforming the tags in the first markup language to tags in a different markup language. The appropriate transformative sequence is selected and the pattern from the transformative sequence is compiled. The compiled pattern is used to perform rapid and efficient searches of documents in the database. A predicate check using the binary coding of the node as well as ancestor information confirms the node. The leaf information associated with a confirmed node is then stored. If necessary, the action from the transformative sequence is applied to change the markup language of the leaf information to that of the user.
|
1. A method of processing a query for a textual document in a tagged-based language comprising:
providing an abstract machine for searching a tree representation of the document, wherein: the abstract machine has an instruction set having an ability to produce at least a portion of results; the tree representation has levels; and all nodes at a same level have a same code; compiling a query in a language into instructions for the abstract engine; running the instructions on the abstract machine, wherein running is performed on the tree representation; and receiving the at least a portion of results from the instructions that have been run.
8. A computer program product for performing a method of processing a query for a textual document in a tagged-based language, the method comprising:
providing an abstract machine for searching a tree representation of the document, wherein: the abstract machine has an instruction set having an ability to produce at least a portion of results; the tree representation has levels; and all nodes at a same level have a same code; compiling a query in a language into instructions for the abstract engine; running the instructions on the abstract machine, wherein running is performed on the tree representation; and receiving the at least a portion of results from the instructions that have been run.
2. The method of
3. The method of
4. The method of
5. The method of
obtaining a code for a particular node, wherein the code has been assigned by: determining a subtree depth for the particular node within the tree representation; determining a parent-child relationship for the particular node and for each node, if any, within the tree representation that lies between the particular node and a root node; and determining a code for the particular node, wherein: if the subtree depth of the particular node is less than two, the code for the particular node is a code for its closest parent node having a subtree depth of at least two; and if the subtree depth of the particular node is at least two, the code for the particular node is selected such that when bitwise binary ANDed with a code of a parent node yields the code of the parent node, wherein the codes for the particular node and the parent node are different from each other; and using the code as part of the query.
6. The method of
7. The method of
9. The computer program product of
10. The computer program product of
11. The computer program product of
12. The computer program product of
obtaining a code for a particular node, wherein the code has been assigned by: determining a subtree depth for the particular node within the tree representation; determining parent-child relationships for the particular node and for each node, if any, within the tree representation that lies between the particular node and a root node; and using a code for the particular node; wherein if the subtree depth of the particular node is less than two, the code for the particular node is a code for its closest parent node having a subtree depth of at least two; and if the subtree depth of the particular node is at least two, the code for the particular node is selected such that when bitwise binary ANDed with a code of a parent node yields the code of the parent node, wherein the codes for the particular node and the parent node are different from each other; and using the code as part of the query.
13. The computer program product of
14. The computer program product of
|
This application is a continuation of application Ser. No. 09/134,263, filed on Aug. 14, 1998, now U.S. Pat. No. 6,263,332.
This patent application is related, in general, to information retrieval and in particular to a query and transformative engine applicable to eXtensible Markup Language (XML) documentation.
As society becomes increasingly more computerized and as greater access is allowed to information stored on computers, it has become increasingly more important to find such information in as efficient a manner as possible.
For example, the development of computerized information resources, such as the Internet, and various on-line services, such as Compuserve, America Online, Prodigy, and other services, has led to a proliferation of electronically available information. In fact, this electronic information is increasingly displacing more conventional means of information transmission, such as newspapers, magazines, and even, television. The World Wide Web consists of a number of Web sites located on numerous servers, most of which are accessible through global computer networks. The primary issue in all of these resources is filtering the vast amount of information available in order that a user obtain that information of interest to him and receiving such information in an acceptable format. To assist in searching information available on the Internet, a number of search techniques have been devised to find information requested by the user.
These search techniques are based upon a node by node search. When the node does not contain "speech" (defined as viewable material for the reader), the search will navigate to the first child of the node and keep on navigating down each node string until speech is found. By being forced into examining each node separately, such searches are time and resource consuming.
In addition, none of these search techniques incorporate a transformative sequence for adjusting the information to the requirements of the user.
There is a need in the art to develop a query system that is easy to use and intuitive. There is an additional need to combine such a query engine with a transformative sequence to allow documents to be presented to users in the format they require.
A computer-implemented method of retrieving information in a first markup language through a query engine and presenting the information in any required markup language is shown. A user inputs a query to achieve one of two possible outputs: In the first usage, a query stands alone and the output of the engine is the information matching the query. In the second usage, transformative sequences are combined with queries. These sequences contain a markup language pattern and an action; the action may include transforming the tags in the first markup language to tags in a different markup language. The output of the engine in this second case is information matching the queries and transformed by the sequences specified. In either usage, the query is compiled from its source format into a sequence of instructions for the query engine. The compiled query is assigned tags and attributes. The database is then searched node by node for the corresponding tags and attributes. A predicate check using the binary coding of the node as well as ancestor and descendant information confirms the node. The leaf information associated with a confirmed node is then stored. If necessary, the action from the transformative sequence is applied to change the markup language of the leaf information to that of the user.
A primary object of the invention is to provide a query engine capable of making partial searches and conducting predicate checks on such searches.
Yet another object of the present invention is to provide an abstract engine with both query and transformative capabilities to access a document and transform it to a requisite format.
It is still another object of the invention to provide a query engine that can produce more than one result on demand.
It is another object of the invention for the query engine to be state-preserving so that the engine can reactivate a prior search.
An object of the invention is to execute XML tag-level search and retrieval.
Furthermore, another object of the invention is to provide an engine that can both process a query and validate the results efficiently.
A further object of the invention is for the transformative engine to present the XML scripted document in HyperText Markup Language (HTML), Handheld Devices Markup Language (HDML), and other presentation formats.
Another object of the invention is to access XML tag-level scripting and perform eXtensible Style Language (XSL) ready transformation on such scripting.
For a more complete understanding of the present invention and the advantages thereof, reference should be made to the following Detailed Description taken in connection with the accompanying drawings in which:
In the context of an electronic environment, a document is stored using a markup language. A markup language defines the descriptions of the structure and content of different types of electronic documents. There is a need to be able to search such electronic documents to obtained needed information. In the prior art, as shown in
Such a typical query would, for example, be addressed at an electronic database containing the works of a number of authors. The objective of the query is to find all the chapter title headings for any plays entitled "Hamlet."
As noted earlier, the engine can support any number of query languages, because the processing steps are the same for all languages, this description uses "L" as a generic variable indicating any query language understood by the engine.
The engine compiles the query language into query engine instructions 220. In the next step 221, specific tag names and attributes are attached to the instructions as required to correctly describe the query. In the example query shown above, the tags are <title>, <chapter> and <play>, "name" is an attribute name, and "hamlet" is an attribute value. An initialized query engine internal state is then created at step 222.
If instead of being a new query this is a resumption of a previously run query, the query is resumed using the Continuation State 212 from the previously processed query. The appropriate query engine internal state is then reactivated 230.
In either the new or resumed query case, the engine now determines 240 if the user desires to search documents in a relational database, or in memory.
When searching a relational database, the engine performs a coarse search 250 of the database, executing query engine instructions and looking for matches based on the tags/attributes/values assigned to the instructions in step 221. This produces a candidate list of possible matches for the query. In this search, the engine does not search the entire database, but rather stops once it has accumulated a partial set of results. This method is more efficient because it allows the query engine to use less memory when searching. For illustrative purposes,
As the search engine travels from node to node of the document tree, the search engine determines whether the contents of the node may partially fulfill the search requirement based on the coarse search criteria 251. This is determined based only on the tags and attributes in the instructions obtained during the compilation 221. In this particular example, the tag is <title>. For example, in
If no candidates at all are found 251, the engine is finished 298 and no more results are returned. Otherwise, the candidate list is further refined using predicate checks 252, details of which will be described later. If the refinement finds no matching candidates 253, then the engine returns to the database and searches for additional candidates 250.
If the refinement finds a match 253, the engine is ready to generate its two outputs: the Query Results 271 and the Continuation State 270. As noted earlier, the Continuation State describes the current state of the engine, so that a later invocation may resume the search at the point where the current operation left off. For example, in
Returning to step 240, the other method of searching is for documents that are not stored in a relational database and instead are contained completely in memory. These documents can be searched much more efficiently than database documents, and so the query engine uses a different path. A simplified search for the proper query results is performed 260 on the document directly in memory. As with the database case, only the first results are used. If no results are found 265, the query engine is finished. Otherwise, the engine proceeds directly to create the Continuation State 270 and the query results 271.
The benefits of the tag, attribute, and attribute value checking mechanism is that it provides a less memory intensive manner of conducting a query since the search is merely looking for simple word associations as opposed to placement of the node in relation to other nodes. This partial checking mechanism 250 allows a much more efficient implementation when searching documents stored in a relational database or in any non-memory resident form, which is important for large documents. To complete the search query, however, the engine must refine the coarse results to eliminate incorrect matches such as the case of a <title> 402 directly under a <play> 401. This requires a descendant predicate check. Typically, such a check on a number of documents and a large number of nodes would consume a great deal of time and resources, especially in an electronic environment. It therefore becomes preferable to devise a constant time method to determine if an element is a descendant of another. The preferred embodiment is a unique binary encoding mechanism and corresponding descendant predicate algorithm to perform such a predicate check operation. In order to determine whether node A is a descendant of node B, this operation will require three pieces of information (1) the identification of the immediate parent, (2) the absolute depth of the node, and (3) binary encoding.
To explain the preferred embodiment of the binary coding mechanism used by the query engine, the following terms must be defined: newcode(), subtree depth, and absolute depth.
C=newcode(Cp) creates a new binary code, C, from the code, Cp, of the parent, P. The new code must have the property that for any two nodes, A and B, with codes Ca=code of node A and Cb=code of node B, the following relationship
where "==" indicates equality, and "&" indicates bitwise binary AND is true IF AND ONLY IF node A is a descendant of B, "descendant" being meant in the most general sense, not limited only to immediate descendants.
The subtree depth of a tag node is defined as follows:
the subtree depth of a leaf tag, meaning a tag node with no descendants (only its own value node), is zero.
the subtree depth of a node, P, with immediate descendants D1, D2, . . . is equal to the maximum subtree depth of any descendant, plus 1.
The absolute depth of a node is defined as follows:
the absolute depth of the root of the tree is zero.
the absolute depth of any node, D, with parent P, is equal to the absolute depth of the parent node, plus 1.
Given these definitions, the method used by the query engine for assigning codes to a tree is as follows:
1) Assign code zero to the root node.
2) Start with the children of the root node, descend the tree in depth-first, left-to-right order.
3) For each node visited, N, with parent P and parent's code Cp:
3a) If the subtree depth of N is greater than 2 then assign a new code, Cn=newcode(Cp) to this node N.
3b) If the subtree depth of N equals 2 then assign a new code, Cn=newcode(Cp) to this node N, and all descendants of N, recursively.
3c) If the subtree depth of N is less than 2 and this is the first subtree of depth less than 2 encountered under parent P, then assign a new code Cpshared=newcode(Cp) to serve as a "shared code" for this parent. Then assign Cpshared as the code for N, and all descendants of N.
3d) If the subtree depth of N is less than 2 and this is not the first subtree of depth less than 2 encountered under parent P, then a code, Cpshared, for parent P already exists. Assign Cpshared as the code for N, and all descendants of N.
This method results in codes being assigned such that:
All nodes in any single subtree of subtree depth 2 or less share a single common code generated as a new code based on the parent's code. This is illustrated as the circled nodes 430 in FIG. 4.
Furthermore, in a collection of related subtrees of depth 1 or 0, being related by having a common parent, all nodes in those subtrees share a single common code generated as a new code based on the common parent's code. This is illustrated as the circled nodes 440 in FIG. 4.
Using these encoding procedures allows the element encodings to be presented as packets of information nearly a factor of 100 times smaller than prior techniques since each node will not require separate binary numbers, thereby improving speed and performance during the searches.
Note that XSL specifications may contain multiple rules, patterns, and actions; in this simple example only one rule with one pattern and one action is shown.
Referring back to
The Action 830 of the XSL transformation rule is not compiled during this sequence, and instead is supplied directly 335 to the transformative engine 380, along with the compiled query engine instructions 330. A document parse tree 350 is also input into the transformative engine 380.
The transformative engine includes a Query Engine Abstract Machine 340 and a Rendering Algorithm 345. The query engine abstract machine 340 incrementally produces query results 360 that are input into the rendering algorithm 345. The Continuation State 370 produced by the query engine abstract machine is also held within the transformative engine.
The transformative engine uses the query engine to determine which nodes match the patterns in the XSL specification. As incremental results are supplied by the query engine, the transformation engine applies the appropriate matching transformation actions (830) to the query engine results. Transformed document 390 is output from the transformative engine 380.
An example of the preferred embodiment of the query and transformation sequence can be viewed in the context of the World Wide Web and the various markup languages that are associated with the Web although other embodiments address non-networked computer databases. A `web browser` is traditionally defined as a computer program which supports the displaying of documents, presently most of which include Hypertext Markup Language (HTML) formatting markup tags (discussed further below), and hyperlinking to other documents, or phrases in documents, across a network. In particular, web browsers are used to access documents across the Internet's World Wide Web. The discussion of the present invention defines both `web browser` and `browser` to include browser programs that enable accessing hyperlinked information over the Internet and other networks, as well as from magnetic disk, compact disk, read-only memory (CD-ROM), or other memory, and does not limit web browsers to just use over the Internet. A number of web browsers are available, some of them commercially. Any viewer of the World Wide Web will typically use a web browser. Indeed, a viewer viewing documents created by the present invention normally uses a web browser to access the documents that a database provider may make available on the network. Web browsers allow clicking on "hot areas" (generated by source anchors containing a document reference name and a hyperlink to that document so that clicking on the hot area causes the specified document to be downloaded over the network and displayed for the viewer). Most web browsers also maintain a history of previously used source anchors and display a hot area which allows hyperlinking back to the database provider's home page (or back through the locations the viewer has previously "visited") so the viewer can always go back to a familiar place.
A viewer and a server, which is where web documents are contained, communicate using the functionality provided by Hypertext Transfer Protocol (HTTP). The Web includes all the servers adhering to this standard which are accessible to clients via Uniform Resource Locators (URL's). For example, communication can be provided over a communication medium. In some embodiments, the client and server may be coupled via Serial Line Internet Protocol (SLIP) or Transmission Control Protocol/Internet Protocol (TCP/IP) connections for high-capacity communication. The web browser is active within the client and presents information to the user.
One way of organizing information on the Internet in order to minimize download time has been to provide users with an overview interface, called a `home page,` to the information. Although a home page is often merely used as a visually interesting trademark, the home page typically contains a key topic summary of the information provided by one author or database provider, and hyperlinks that take a viewer to the information the viewer has chosen.
A `hyperlink` is defined as a point-and-click mechanism implemented on a computer which allows a viewer to link (or jump) from one screen display where a topic is referred to (called the `hyperlink source`), to other screen displays where more information about that topic exists (called the `hyperlink destination`). These hyperlinked screen displays can be portions of the media data (media data can include, e.g., text graphics, audio, video, etc.) from a single data file, or can be portions of a plurality of different data files; these can be stored in a single location, or at a plurality of separate locations. A hyperlink thus provides a computer-assisted way for a human user to efficiently jump between various locations containing information.
Finally, to support the Internet and the World Wide Web, a markup language called HTML was developed. HTML has two major objectives. First, HTML provides a way to specify the structural elements of text (e.g., this is a heading, this is a body of text, this is a list, etc.) using tags which are independent of the content of the text. A web browser uses these tags to format the displayed text for the particular display device of a particular viewer. So, for example, HTML allows an author to specify up to six levels of heading information bracketed by six different heading-tag pairs. Applications (e.g., web browsers) on different computers then process the HTML documents for visual presentation in a manner customized for particular display devices. An application on one computer could display a level 1 heading as 10 point bold Courier while an application on another computer could display it as a 20 point italic Times Roman. A level 1 sequence is heralded with the sequence token </h1>. Thus, a heading might be displayed as:
for a level one heading or
for a level 4 heading. As a markup language, HTML enables a document to be displayed within the capabilities of any particular display system even though that display system does not support italic, or bold, color, or any particular typeface or size. Thus HTML supports writing documents so they can be output to everything from simple monospaced, single-size fonts to proportional-spaced, multiple-size, multiple-style fonts. Each computer program that accesses an HTML document can translate that HTML document into a display format supported by the hardware running the program.
On the World Wide Web, the documents being generated are typically done in HTML. HTML defines hypertext structure within basic limits. It allows a programmer to define a link but it does not allow for differentiation between links or sublinks. An HTML document cannot be parsed into a multi-stage tree. In addition, differing tags cannot be defined in HTML, which reduces its flexibility.
These limitations to HTML are presently being addressed. One of the options is the Standard Generalized Markup Language ("SGML"). HTML can actually be viewed as a subset of SGML. SGML defines a language for use in presenting any form of information. However, SGML presents so many options for defining tags and presenting information that it is very difficult to use in standardizing a way for defining and presenting documents and their contents.
The difficulties in using SGML have led to the development of a hybrid, which would contain the advantages of SGML and HTML. This new language for establishing documents on the World Wide Web is the "Extensible Markup Language" (known as "XML"), which is termed extensible because it is not a fixed format like HTML. XML is designed to allow the use of SGML on the World Wide Web but with some limitations on the options that SGML provides. Basically, XML allows a programmer to devise his or her own set of markup elements. XML documents can be accessed through document type definition (DTD) or DTD-less operations. DTD is usually a file, which contains a formal definition of a particular type of document. This sets out what names can be used for elements, where they may occur and how they all fit together. Basically DTD is a formal language that allows the processors to parse a document and define the interrelations of the elements within an XML document. However, an XML document has additional flexibility since it can define its own markup elements by the existence and location of elements where created thereby allowing DTD-less reading. Pure SGML documents typically would require a DTD file to assist in the translation.
Even for XML documents, the reader must have the ability to efficiently find and retrieve more information about any particular item in a document. Presently, the query engines that exist for XML are comparatively slow. As noted earlier, these search engines rely on a node by node search ("node travel") of an XML document that consists of examining the nodes. If the node has a leaf with the requested information, the engine will access the information. If the node does not have the information, the search will then move down to the node child and perform the same analysis. This type of search is time-consuming. In addition, these search engines do not have the capability to accept directions from non-XML compatible web browsers or present the information in a format compatible to such a web browser.
Moreover, as shown in
Clients 502, 504, 506 and 508 are substantially identical to one another. Client 502 is a representative one of clients 502, 504, 506 and 508. Client 502 includes a user 520, input devices 522, media devices 524, speakers 526, a display device 528, a print device 530 and a client computer 532. Client computer 532 is connected to input devices 522, media devices 524, speakers 526, display device 528, print device 530 and diskette 534. Display device 528 is, for example, a conventional electronic cathode ray tube. Print device 530 is, for example, a conventional electronic printer or plotter.
User 520 and client computer 532 operate in association with one another. For example, in response to signals from client computer 530, display device 528 displays visual images, and user 520 views such visual images. Also, in response to signals from client computer 532, print device 530 prints visual images on paper, and user 520 views such visual images. Further, in response to signals from client computer 532, speakers 526 output audio frequencies, and user 520 listens to such audio frequencies. Moreover, user 520 operates input devices 522 and media devices 524 in order to output information to client computer 532, and client computer 532 receives such information from input devices 522 and media devices 524.
Input devices 522 include, for example, a conventional electronic keyboard and a pointing device such as a conventional electronic mouse, rollerball or light pen. User 520 operates the keyboard to output alphanumeric text information to client computer 532, and client computer 532 receives such alphanumeric text information from the keyboard. User 520 operates the pointing device to output cursor-control information to client computer 532, and client computer 532 receives such cursor-control information from the pointing device.
User 520 operates media devices 524 in order to output information to client computer 532 in the form of media signals, and client computer 532 receives such media signals from media devices 524. Media signals include for example video signals and audio signals. Media devices 524 include, for example, a microphone, a video camera, a videocassette player, a CD-ROM player, and an electronic scanner device.
A web browser typically is loaded onto a client computer and is launched by the client computer when accessing the World Wide Web. The web browser is used for accessing Web sites 518 (a-n) through the web server 516.
The advantages of a web browser on a network such as the Internet is that any of the documents viewed with the program may be located (or scattered in pieces) on any computer connected to network 510. The viewer can use a mouse 522, or other pointing device, to click-on a hot area, such as highlighted text or a button, and cause the relevant portion of the referenced document to be downloaded to the viewer's computer 532 for viewing. These downloaded documents in turn can contain hyperlinks to other documents on the same or other computers. `Downloading` is defined as the transmitting of a document or other information from the an array of web sites 518a through 518n over a network 510 to the viewer's computer 532.
As noted earlier, information is presented to World Wide Web viewers as a collection of `documents` and `pages`. As mentioned above, a `document` is defined in a broad sense to indicate text, pictorial, audio, video and other information stored in one or more computer files. Viewing such multimedia files can be much like watching television. Documents include everything from simple short text documents to large computer multi-media databases.
A `page` is defined as any discrete file, which can be downloaded as a single download segment. Technically, a web browser does not recognize or access documents per se, but instead accesses pages. Typically, a web browser downloads one page as the result of clicking on a hot area. A page often has several source anchors with hyperlinks to various other pages or to specific locations within pages.
One problem with accessing documents over the Internet is that many documents are quite long, and thus can take quite some time to download over the network. This means that viewers are often reluctant to access a document unless they know it will be useful.
The XML versions of articles are searched for the presence of specified search terms, if the web browser is compatible. If the web browser is not compatible, the XML results are converted to a compatible format. The XML results of these search requests can then be displayed on the client's console.
The transformative process on a server is called a server-side transformation. If the browser is XML/XSL-enabled MS IE4 is an example, then server-side transformations need not be implemented on the server since the browser has XML/XSL capabilities. If the browser is not XML/XSL-enabled, and there are commands that can be provided to transform information, then server-side transformation is implemented. As a matter of fact, there may be multiple transformation (XSL) specifications for a variety of formats on each server. The server will enable the appropriate XSL specification given the available browser information; i.e., if the browser is not XML-enabled but is CSS (cascading style sheets)-enabled, the server-side transformations using the "CSS" XSL specification will be implemented, and if the browser is not even CSS-enabled then a "raw HTML" XSL specification can be used, and so forth.
These capabilities are very "back end" oriented, in the sense that they constitute implementation details of commands on the server, as opposed to having graphical manifestation on the GUI of the client computer. The following is an example of the transformation and query process using the following XML document:
<MYDOC>
<SEC>
Section 1 content . . .
<PAR>
Paragraph 1 content . . .
</PAR>
<PAR>
Paragraph 2 content . . .
</PAR>
etc.
<SEC>
<SEC color-blue>
Section 2 content . . .
etc.
<SEC>
</MYDOC>
The corresponding example query expressions are:
"<SEC>(1) WHERE (COLOR="BLUE") UNDER <MYDOC>"
which fetches the first section whose color attribute is blue and which is located under MYDOC . . . and
"<PAR>(2) 2 LEVELS UNDER <MYDOC>"
which fetches the second paragraph, which must be exactly two levels under MYDOC.
Therefore, in a preferred server side embodiment, the server does not have to depend on XML DTDs with the preferred query and transformative engine in order to present information to a user either in an HTML, XML or other markup format.
In such a preferred embodiment, the XML query and transformative engine is located on the server to perform server-side tranformations. The XML and query engine allows XML/XSL-enabled browsers to access the XML documents on the server, whereas those browsers not enabled with XML will have the XML documents on the server transformed into a presentation format acceptable by the browser.
This is a unique approach, which allows a Web site user to have control of the content through their queries, and based on the user's browser and client computer. This server side embodiment therefore allows for access to XML documents for many of the web browsers on the market.
Again, referring back to
The implementation of XML documents on a Web site does lead to a number of potential problems. With HTML as the primary language of use on Web sites and with a majority of web browsers, many users with such browsers will not be able to access information coded in XML.
In order to allow such access by HTML based web browsers, a transformative sequence is integrated with the query engine so that based on the web browser used to access the Web site, a certain transformative sequence will be implemented. The transformative sequence will then access a set of XSL transformative rules that will establish the display for the XML information into the necessary format.
It should be appreciated by those skilled in the art that the specific embodiments disclosed above may be readily utilized as a basis for modifying or designing other methods for carrying out the same purposes of the present invention. It should also be realized by those skilled in the art that such equivalent constructions do not depart from the spirit and scope of the invention as set forth in the appended claims.
Patent | Priority | Assignee | Title |
10025825, | Sep 28 2012 | Oracle International Corporation | Configurable data windows for archived relations |
10042890, | Sep 28 2012 | Oracle International Corporation | Parameterized continuous query templates |
10055501, | May 06 2003 | International Business Machines Corporation | Web-based customer service interface |
10061749, | Nov 26 2013 | SDL NETHERLANDS B V | Systems and methods for contextual vocabularies and customer segmentation |
10083210, | Feb 19 2013 | Oracle International Corporation | Executing continuous event processing (CEP) queries in parallel |
10102250, | Sep 28 2012 | Oracle International Corporation | Managing continuous queries with archived relations |
10120907, | Sep 24 2014 | Oracle International Corporation | Scaling event processing using distributed flows and map-reduce operations |
10275398, | Sep 11 2012 | Nippon Telegraph and Telephone Corporation | Content display device, content display method, and content display program |
10298444, | Jan 15 2013 | Oracle International Corporation | Variable duration windows on continuous data streams |
10452740, | Sep 14 2012 | SDL NETHERLANDS B V | External content libraries |
10521492, | Nov 28 2013 | SDL NETHERLANDS B V | Systems and methods that utilize contextual vocabularies and customer segmentation to deliver web content |
10572928, | May 11 2012 | Fredhopper B.V. | Method and system for recommending products based on a ranking cocktail |
10580015, | Feb 25 2011 | SDL NETHERLANDS B V | Systems, methods, and media for executing and optimizing online marketing initiatives |
10614167, | Oct 30 2015 | SDL Limited | Translation review workflow systems and methods |
10657540, | Jan 29 2011 | SDL NETHERLANDS B V | Systems, methods, and media for web content management |
10956422, | Dec 05 2012 | Oracle International Corporation | Integrating event processing with map-reduce |
10990644, | Nov 26 2013 | SDL Netherlands B.V. | Systems and methods for contextual vocabularies and customer segmentation |
11044949, | Nov 28 2013 | SDL Netherlands B.V. | Systems and methods for dynamic delivery of web content |
11080493, | Oct 30 2015 | SDL Limited | Translation review workflow systems and methods |
11093505, | Sep 28 2012 | Oracle International Corporation | Real-time business event analysis and monitoring |
11288277, | Sep 28 2012 | Oracle International Corporation | Operator sharing for continuous queries over archived relations |
11301874, | Jan 29 2011 | SDL Netherlands B.V. | Systems and methods for managing web content and facilitating data exchange |
11308528, | Sep 14 2012 | SDL NETHERLANDS B V | Blueprinting of multimedia assets |
11386186, | Sep 14 2012 | SDL Netherlands B.V.; SDL INC ; SDL NETHERLANDS B V | External content library connector systems and methods |
11694215, | Jan 29 2011 | SDL Netherlands B.V. | Systems and methods for managing web content |
6665662, | Nov 20 2000 | Cisco Technology, Inc. | Query translation system for retrieving business vocabulary terms |
6711561, | May 02 2000 | International Business Machines Corporation | Prose feedback in information access system |
6745181, | May 02 2000 | International Business Machines Corporation | Information access method |
6968503, | Mar 09 2000 | QUOVADX, INC , GEORGIA CORPORATION | XML user interface for a workflow server |
6983288, | Nov 20 2000 | Cisco Technology, Inc. | Multiple layer information object repository |
7007018, | Nov 20 2000 | Cisco Technology, Inc. | Business vocabulary data storage using multiple inter-related hierarchies |
7020845, | Nov 15 1999 | EMG TECHNOLOGY, LLC | Navigating internet content on a television using a simplified interface and a remote control |
7024425, | Sep 07 2000 | Oracle International Corporation | Method and apparatus for flexible storage and uniform manipulation of XML data in a relational database system |
7047525, | Apr 02 2001 | AMERICAN EXPRESS TRAVEL RELATED SERVICES, CO , INC | System and method for an interoperability framework |
7062705, | Nov 20 2000 | Cisco Technology, Inc. | Techniques for forming electronic documents comprising multiple information types |
7080314, | Jun 16 2000 | WSOU Investments, LLC | Document descriptor extraction method |
7103607, | Nov 20 2000 | Cisco Technology, Inc. | Business vocabulary data retrieval using alternative forms |
7107521, | Jul 03 2001 | International Business Machines Corporation | XSL dynamic inheritance |
7127450, | May 02 2000 | International Business Machines Corporation | Intelligent discard in information access system |
7127469, | Jun 13 2002 | Marklogic Corporation | XML database mixed structural-textual classification system |
7136846, | Apr 06 2001 | International Business Machines Corporation | Wireless information retrieval |
7139973, | Nov 20 2000 | Cisco Technology, Inc. | Dynamic information object cache approach useful in a vocabulary retrieval system |
7146356, | Mar 21 2003 | International Business Machines Corporation | Real-time aggregation of unstructured data into structured data for SQL processing by a relational database engine |
7146614, | Dec 22 1999 | EMC IP HOLDING COMPANY LLC | Computer directory system having an application integration driver infrastructure |
7158981, | Sep 28 2001 | Oracle International Corporation | Providing a consistent hierarchical abstraction of relational data |
7171404, | Jun 13 2002 | Marklogic Corporation | Parent-child query indexing for XML databases |
7194698, | Nov 15 1999 | EMG TECHNOLOGY, LLC | Method to advertise and search on television for web content using a simplified interface |
7243095, | May 02 2000 | International Business Machines Corporation | Prose feedback in information access system |
7260585, | Sep 07 2000 | Oracle International Corporation | Apparatus and method for mapping relational data and metadata to XML |
7343372, | Feb 22 2002 | HULU, LLC | Direct navigation for information retrieval |
7376641, | May 02 2000 | International Business Machines Corporation | Information retrieval from a collection of data |
7386567, | May 01 2003 | Oracle International Corporation | Techniques for changing XML content in a relational database |
7406478, | Aug 11 2005 | Oracle International Corporation | Flexible handling of datetime XML datatype in a database system |
7441196, | Nov 15 1999 | EMG TECHNOLOGY, LLC | Apparatus and method of manipulating a region on a wireless device screen for viewing, zooming and scrolling internet content |
7447993, | Oct 12 2004 | Microsoft Technology Licensing, LLC | System and method for displaying a user interface object using an associated style |
7499909, | Jul 03 2006 | Oracle International Corporation | Techniques of using a relational caching framework for efficiently handling XML queries in the mid-tier data caching |
7516121, | Jun 23 2004 | Oracle International Corporation | Efficient evaluation of queries using translation |
7562083, | Nov 07 2003 | Ruizhang Technology Limited Company | RFID Huffman encoded commands |
7644057, | Jan 03 2001 | International Business Machines Corporation | System and method for electronic communication management |
7668806, | Aug 05 2004 | Oracle International Corporation | Processing queries against one or more markup language sources |
7685150, | Apr 19 2005 | Oracle International Corporation | Optimization of queries over XML views that are based on union all operators |
7702677, | May 02 2000 | International Business Machines Corporation | Information retrieval from a collection of data |
7716160, | Nov 07 2003 | Ruizhang Technology Limited Company | Methods and apparatuses to identify devices |
7716208, | Nov 07 2003 | Ruizhang Technology Limited Company | RFID handshaking |
7743388, | Dec 22 1999 | EMC IP HOLDING COMPANY LLC | Computer directory system having an application integration driver infrastructure |
7752159, | Jan 03 2001 | International Business Machines Corporation | System and method for classifying text |
7756810, | May 06 2003 | International Business Machines Corporation | Software tool for training and testing a knowledge base |
7756858, | Jun 13 2002 | Marklogic Corporation | Parent-child query indexing for xml databases |
7783643, | Feb 22 2002 | HULU, LLC | Direct navigation for information retrieval |
7797310, | Oct 16 2006 | Oracle International Corporation | Technique to estimate the cost of streaming evaluation of XPaths |
7802180, | Jun 23 2004 | Oracle International Corporation | Techniques for serialization of instances of the XQuery data model |
7873649, | Sep 07 2000 | Oracle International Corporation | Method and mechanism for identifying transaction on a row of data |
7904595, | Dec 06 2001 | SDL INC | Globalization management system and method therefor |
7930277, | Apr 21 2004 | Oracle International Corporation | Cost-based optimizer for an XML data repository within a database |
7949941, | Apr 22 2005 | Oracle International Corporation | Optimizing XSLT based on input XML document structure description and translating XSLT into equivalent XQuery expressions |
7958112, | Aug 08 2008 | Oracle International Corporation | Interleaving query transformations for XML indexes |
7962474, | Jun 13 2002 | Marklogic Corporation | Parent-child query indexing for XML databases |
7979420, | Oct 16 2007 | Oracle International Corporation | Handling silent relations in a data stream management system |
8024368, | Dec 07 2005 | Oracle International Corporation | Generating XML instances from flat files |
8073841, | Oct 07 2005 | Oracle International Corporation | Optimizing correlated XML extracts |
8102244, | Aug 09 2003 | Ruizhang Technology Limited Company | Methods and apparatuses to identify devices |
8121974, | Oct 10 2006 | Samsung Electronics Co., Ltd. | Method of generating node indentifier in tree structure |
8145859, | Mar 02 2009 | Oracle International Corporation | Method and system for spilling from a queue to a persistent store |
8166059, | Jul 08 2005 | Oracle International Corporation | Optimization of queries on a repository based on constraints on how the data is stored in the repository |
8180789, | Dec 05 2005 | TERADATA US, INC | Techniques for query generation, population, and management |
8229932, | Sep 04 2003 | Oracle International Corporation | Storing XML documents efficiently in an RDBMS |
8279047, | Oct 09 2001 | Ruizhang Technology Limited Company | Methods and apparatus for anti-collision for radio frequency communication |
8284034, | May 31 2001 | Ruizhang Technology Limited Company | Methods and apparatuses to identify devices |
8290768, | Jun 21 2000 | International Business Machines Corporation | System and method for determining a set of attributes based on content of communications |
8296316, | Oct 17 2007 | Oracle International Corporation | Dynamically sharing a subtree of operators in a data stream management system operating on existing queries |
8296463, | Jan 18 2001 | SDL INC | Globalization management system and method therefor |
8312429, | Nov 10 2000 | Oracle International Corporation | Cell based data processing |
8321450, | Jul 21 2009 | Oracle International Corporation | Standardized database connectivity support for an event processing server in an embedded context |
8352517, | Mar 02 2009 | Oracle International Corporation | Infrastructure for spilling pages to a persistent store |
8386466, | Aug 03 2009 | Oracle International Corporation | Log visualization tool for a data stream processing server |
8387076, | Jul 21 2009 | Oracle International Corporation | Standardized database connectivity support for an event processing server |
8447744, | Dec 28 2009 | Oracle International Corporation | Extensibility platform using data cartridges |
8452653, | Mar 15 2000 | Personal Data Network Corporation | Method for providing information and recommendations based on user activity |
8478732, | May 02 2000 | AIRBNB, INC | Database aliasing in information access system |
8495002, | May 06 2003 | International Business Machines Corporation | Software tool for training and testing a knowledge base |
8498956, | Aug 29 2008 | Oracle International Corporation | Techniques for matching a certain class of regular expression-based patterns in data streams |
8521867, | Oct 20 2007 | Oracle International Corporation | Support for incrementally processing user defined aggregations in a data stream management system |
8527458, | Aug 03 2009 | Oracle International Corporation | Logging framework for a data stream processing server |
8549006, | May 15 2003 | Nuance Communications, Inc | Phrase matching in documents having nested-structure arbitrary (document-specific) markup |
8554789, | Oct 07 2005 | Oracle International Corporation | Managing cyclic constructs of XML schema in a rdbms |
8589436, | Aug 29 2008 | Oracle International Corporation | Techniques for performing regular expression-based pattern matching in data streams |
8676841, | Aug 29 2008 | Oracle International Corporation | Detection of recurring non-occurrences of events using pattern matching |
8694510, | Sep 04 2003 | Oracle International Corporation | Indexing XML documents efficiently |
8713049, | Sep 17 2010 | Oracle International Corporation | Support for a parameterized query/view in complex event processing |
8742899, | Aug 09 2003 | Ruizhang Technology Limited Company | Methods and apparatuses to identify devices |
8768952, | Nov 07 2003 | Ruizhang Technology Limited Company | Methods and apparatuses to identify devices |
8959106, | Dec 28 2009 | Oracle International Corporation | Class loading using java data cartridges |
8990416, | May 06 2011 | Oracle International Corporation | Support for a new insert stream (ISTREAM) operation in complex event processing (CEP) |
9047249, | Feb 19 2013 | Oracle International Corporation | Handling faults in a continuous event processing (CEP) system |
9058360, | Dec 28 2009 | Oracle International Corporation | Extensible language framework using data cartridges |
9069878, | Oct 07 2005 | Oracle International Corporation | Flexible storage of XML collections within an object-relational database |
9098587, | Jan 15 2013 | Oracle International Corporation | Variable duration non-event pattern matching |
9110945, | Sep 17 2010 | Oracle International Corporation | Support for a parameterized query/view in complex event processing |
9189280, | May 13 2011 | Oracle International Corporation | Tracking large numbers of moving objects in an event processing system |
9244978, | Jun 11 2014 | Oracle International Corporation | Custom partitioning of a data stream |
9256646, | Sep 28 2012 | Oracle International Corporation | Configurable data windows for archived relations |
9262258, | Feb 19 2013 | Oracle International Corporation | Handling faults in a continuous event processing (CEP) system |
9262479, | Sep 28 2012 | Oracle International Corporation | Join operations for continuous queries over archived views |
9286352, | Sep 28 2012 | Oracle International Corporation | Hybrid execution of continuous and scheduled queries |
9292574, | Sep 28 2012 | Oracle International Corporation | Tactical query to continuous query conversion |
9305057, | Dec 28 2009 | Oracle International Corporation | Extensible indexing framework using data cartridges |
9305238, | Aug 29 2008 | Oracle International Corporation | Framework for supporting regular expression-based pattern matching in data streams |
9329975, | Jul 07 2011 | Oracle International Corporation | Continuous query language (CQL) debugger in complex event processing (CEP) |
9361308, | Sep 28 2012 | Oracle International Corporation | State initialization algorithm for continuous queries over archived relations |
9367642, | Oct 07 2005 | Oracle International Corporation | Flexible storage of XML collections within an object-relational database |
9390135, | Feb 19 2013 | Oracle International Corporation | Executing continuous event processing (CEP) queries in parallel |
9418113, | May 30 2013 | Oracle International Corporation | Value based windows on relations in continuous data streams |
9430449, | Mar 30 2012 | SDL Limited | Systems, methods, and media for managing editable previews of webpages |
9430494, | Dec 28 2009 | Oracle International Corporation | Spatial data cartridge for event processing systems |
9483671, | Nov 07 2003 | Ruizhang Technology Limited Company | Methods and apparatuses to identify devices |
9535761, | May 13 2011 | Oracle International Corporation | Tracking large numbers of moving objects in an event processing system |
9547626, | Jan 29 2011 | SDL Limited | Systems, methods, and media for managing ambient adaptability of web applications and web services |
9563663, | Sep 28 2012 | Oracle International Corporation | Fast path evaluation of Boolean predicates |
9584665, | Jun 21 2000 | International Business Machines Corporation | System and method for optimizing timing of responses to customer communications |
9596188, | Dec 06 2001 | SDL INC | Globalization management system and method therefor |
9699129, | Jun 21 2000 | International Business Machines Corporation | System and method for increasing email productivity |
9703836, | Sep 28 2012 | Oracle International Corporation | Tactical query to continuous query conversion |
9712645, | Jun 26 2014 | Oracle International Corporation | Embedded event processing |
9715529, | Sep 28 2012 | Oracle International Corporation | Hybrid execution of continuous and scheduled queries |
9756104, | May 06 2011 | Oracle International Corporation | Support for a new insert stream (ISTREAM) operation in complex event processing (CEP) |
9773270, | May 11 2012 | FREDHOPPER B V | Method and system for recommending products based on a ranking cocktail |
9781050, | Dec 06 2001 | SDL INC | Globalization management system and method therefor |
9804892, | May 13 2011 | Oracle International Corporation | Tracking large numbers of moving objects in an event processing system |
9805095, | Sep 28 2012 | Oracle International Corporation | State initialization for continuous queries over archived views |
9852186, | Sep 28 2012 | Oracle International Corporation | Managing risk with continuous queries |
9886486, | Sep 24 2014 | Oracle International Corporation | Enriching events with dynamically typed big data for event processing |
9934279, | Dec 05 2013 | Oracle International Corporation | Pattern matching across multiple input data streams |
9946756, | Sep 28 2012 | Oracle International Corporation | Mechanism to chain continuous queries |
9953059, | Sep 28 2012 | Oracle International Corporation | Generation of archiver queries for continuous queries over archived relations |
9954794, | Dec 06 2001 | SDL Inc. | Globalization management system and method therefor |
9972103, | Jul 24 2015 | Oracle International Corporation | Visually exploring and analyzing event streams |
9990401, | Sep 28 2012 | Oracle International Corporation | Processing events for continuous queries on archived relations |
9990402, | Sep 28 2012 | Oracle International Corporation | Managing continuous queries in the presence of subqueries |
Patent | Priority | Assignee | Title |
4769772, | Feb 28 1985 | HONEYWELL BULL INC , 3800 W 80TH ST , MINNEAPOLIS, MN 55431, A CORP OF DE | Automated query optimization method using both global and parallel local optimizations for materialization access planning for distributed databases |
5138615, | Jun 22 1989 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Reconfiguration system and method for high-speed mesh connected local area network |
5649186, | Aug 07 1995 | Open Invention Network, LLC | System and method for a computer-based dynamic information clipping service |
5655130, | Oct 14 1994 | Unisys Corporation | Method and apparatus for document production using a common document database |
5752021, | May 24 1994 | Fuji Xerox Co., Ltd. | Document database management apparatus capable of conversion between retrieval formulae for different schemata |
5778400, | Mar 02 1995 | Fuji Xerox Co., Ltd. | Apparatus and method for storing, searching for and retrieving text of a structured document provided with tags |
5875334, | Oct 27 1995 | International Business Machines Corporation | System, method, and program for extending a SQL compiler for handling control statements packaged with SQL query statements |
5875441, | May 07 1996 | FUJI XEROX CO , LTD | Document database management system and document database retrieving method |
5893109, | Mar 15 1996 | ENIGMA INFORMATION SYSTEMS LTD | Generation of chunks of a long document for an electronic book system |
5920879, | May 20 1996 | Fuji Xerox Co., Ltd. | Document structure conversion apparatus |
5940822, | Aug 29 1997 | GOOGLE LLC | Encoding method of members related by multiple concept or group hierarchies and identification of members in a corpus or a database that are descendants of one or more selected concepts or groups from the encoding |
5940842, | Dec 02 1994 | Fujitsu Limited | Character string retrieval system having a variable display range |
5956726, | Jun 05 1995 | Hitachi, Ltd. | Method and apparatus for structured document difference string extraction |
5970490, | Nov 05 1996 | GOOGLE LLC | Integration platform for heterogeneous databases |
6009436, | Dec 23 1997 | Ricoh Corporation | Method and apparatus for mapping structured information to different structured information |
6012098, | Feb 23 1998 | International Business Machines Corp. | Servlet pairing for isolation of the retrieval and rendering of data |
6018710, | Dec 13 1996 | Siemens Corporation | Web-based interactive radio environment: WIRE |
6023714, | Apr 24 1997 | Microsoft Technology Licensing, LLC | Method and system for dynamically adapting the layout of a document to an output device |
6047280, | Oct 25 1996 | HERE GLOBAL B V | Interface layer for navigation system |
6052693, | Jul 02 1996 | DELVE SOFTWARE LIMITED | System for assembling large databases through information extracted from text sources |
6055538, | Dec 22 1997 | Hewlett Packard Enterprise Development LP | Methods and system for using web browser to search large collections of documents |
6072801, | Feb 19 1998 | Round Rock Research, LLC | Method of addressing messages, method of establishing wireless communications, and communications system |
6098071, | Jun 06 1995 | Hitachi, Ltd. | Method and apparatus for structured document difference string extraction |
6108676, | Oct 28 1996 | Fuji Xerox Co., Ltd. | Document processing apparatus, document type determining method, and hierarchical regular expression determining method |
6128617, | Nov 24 1997 | SELECT RETRIEVAL, LLC | Data display software with actions and links integrated with information |
EP601550, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Aug 06 1998 | NASR, ROGER I | Vignette Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 023699 | /0305 | |
Aug 06 1998 | WEBBER, NEIL | Vignette Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 023699 | /0305 | |
Jun 19 2001 | Vignette Corporation | (assignment on the face of the patent) | / | |||
Jul 17 2009 | VIGNETTE CORPORATION 4% | Vignette Software LLC | INTELLECTUAL PROPERTY PURCHASE AGREEMENT | 023768 | /0708 | |
Jul 17 2009 | VIGNETTE LLC 96% | Vignette Software LLC | INTELLECTUAL PROPERTY PURCHASE AGREEMENT | 023792 | /0470 | |
Jul 17 2009 | VIGNETTE CORPORATION 96% | VIGNETTE LLC | INTELLECTUAL PROPERTY PURCHASE AGREEMENT | 024006 | /0001 | |
Mar 30 2010 | Vignette Software, LLC | Vignette Corporation | MERGER SEE DOCUMENT FOR DETAILS | 027077 | /0423 | |
Jun 24 2010 | Vignette Corporation | VIGNETTE OPERATING, LLC | CERTIFICATE OF CONVERSION | 027091 | /0009 | |
Jun 24 2010 | VIGNETTE OPERATING, LLC | VIGNETTE PARTNERSHIP, LP | CERTIFICATE OF CONVERSION | 027066 | /0773 | |
Jul 25 2011 | VIGNETTE PARTNERSHIP, LP | OPEN TEXT S A | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 027483 | /0205 | |
Jul 01 2016 | OPEN TEXT S A | OT IP SUB, LLC | IP BUSINESS SALE AGREEMENT | 040019 | /0627 | |
Jul 02 2016 | OP IP SUB, LLC | IP OT SUB ULC | CERTIFICATE OF CONTINUANCE | 040019 | /0500 | |
Jul 08 2016 | IP OT SUB ULC | Open Text SA ULC | CERTIFICATE OF AMALGAMATION | 040019 | /0578 |
Date | Maintenance Fee Events |
Oct 13 2005 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Oct 19 2005 | ASPN: Payor Number Assigned. |
Jan 29 2010 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Jan 22 2014 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Aug 20 2005 | 4 years fee payment window open |
Feb 20 2006 | 6 months grace period start (w surcharge) |
Aug 20 2006 | patent expiry (for year 4) |
Aug 20 2008 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 20 2009 | 8 years fee payment window open |
Feb 20 2010 | 6 months grace period start (w surcharge) |
Aug 20 2010 | patent expiry (for year 8) |
Aug 20 2012 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 20 2013 | 12 years fee payment window open |
Feb 20 2014 | 6 months grace period start (w surcharge) |
Aug 20 2014 | patent expiry (for year 12) |
Aug 20 2016 | 2 years to revive unintentionally abandoned end. (for year 12) |