IP Library Granted Patent US 8,055,652
Granted Patent B1
US 8,055,652 · App. 12/056,299 · Granted Nov 8, 2011

Dynamic modification of Xpath queries

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,055,652
App. No.
12/056,299
Granted
Nov 8, 2011
Kind
B1
Abstract

Modifying Xpath queries dynamically during an ongoing Xpath evaluation. A modification request comprising at least one Xpath query in response to an input is received in an ongoing Xpath evaluation on an online stream of XML messages. A current generation of Nondeterministic Finite Automaton (NFA) is generated and the branches starting from the root node are identified according to the modification request. The identified branches are copied and modified to create a new generation of NFA. New generation of NFA is used for subsequent Xpath evaluations.

Claims (53)

1. A computer implemented method comprising:

performing, by a processor, a first Xpath evaluation on a stream of Extensible Markup Language (XML) messages, the first Xpath evaluation based on a group of Xpath queries associated with a first user transaction;

receiving, by a processor, a plurality of requests to modify the Xpath query group and combining the plurality of requests into a single atomic modification; and

modifying, by a processor, the Xpath query group, in a persistent manner, without affecting the ongoing first Xpath evaluation on the XML messages, wherein modifying the Xpath query group comprises:

generating a second data structure as a copy of portions of a first data structure, the first data structure comprising a hash table with branches, the branches derived from the group of Xpath queries prior to modification and only copying branches of the first data structure being modified;

altering at least one branch of the second data structure in accordance with the modification request, wherein the single atomic modification modifies the second data structure to perform a subsequent Xpath evaluation corresponding to a subsequent modification request of the plurality of requests without generating an additional data structure;

performing a second Xpath evaluation, associated with a second user transaction, using the second data structure in substantially real time with the first Xpath evaluation such that the first and second user transactions are overlapping; and

deleting the first data structure upon completion of the first user transaction and using the second data structure for additional user transactions until modified.

2. The computer implemented method of claim 1 , wherein said modifying comprises:

generating a current generation of Nondeterministic Finite Automaton (NFA) by compiling said Xpath query group, said current generation of NFA maintained as a data structure;

identifying at least one branch of said data structure starting from the root node according to the modification request;

creating a copy of the identified at least one branch of the data structure;

modifying said copy to create a new generation of NFA further comprising modifying said at least one branch of the data structure starting from the root node; and

using said new generation of NFA for subsequent Xpath evaluations.

3. The computer implemented method of claim 1 , wherein said receiving the modification request comprises receiving a request for:

adding a new Xpath query to the Xpath query group.

4. The computer implemented method of claim 1 , wherein said receiving the modification request comprises receiving a request for:

deleting an existing Xpath query from the Xpath query group.

5. The computer implemented method of claim 3 , wherein said adding a new Xpath query comprises adding a new branch to the data structure.

6. The computer implemented method of claim 2 , wherein said data structure comprises a hash table tree.

7. The computer implemented method of claim 2 further comprising:

using the current generation of NFA for the ongoing Xpath evaluation; and

deleting the current generation of NFA after completing the ongoing Xpath evaluation once it is no longer required and reclaiming the resources used by the current generation of NFA.

8. The computer implemented method of claim 1 , wherein said modifying comprises modifying Xpath queries serially.

9. A computer implemented system least partially implemented in hardware, comprising:

an Xpath parser configured to perform a first Xpath evaluation on a stream of Extensible Markup Language (XML) messages using a processor, the first Xpath evaluation based on a group of Xpath queries associated with a first user transaction, the Xpath parser configured to receive a plurality of requests to modify the Xpath query group and combining the plurality of requests into a single atomic modification; and

a modifying module configured to modify an Xpath query group, in a persistent manner, without affecting the ongoing Xpath evaluation on the XML messages, wherein the modifying module is further configured to generate a second data structure as a copy of a portion of a first data structure, the first data structure comprising a hash table with branches, the branches derived from the group of Xpath queries prior to modification and only copying branches of the first data structure being modified, the modifying module configured to alter at least one branch of the second data structure in accordance with the modification request, wherein the single atomic modification modifies the second data structure to perform a subsequent Xpath evaluation corresponding to a subsequent modification request of the plurality of requests without generating an additional data structure, the modifying module configured to perform a second Xpath evaluation, associated with a second user transaction, using the second data structure in substantially real time with the first Xpath evaluation such that the first and second user transactions are overlapping, and deleting the first data structure upon completion of the first user transaction and using the second data structure for additional user transactions until modified.

10. The computer implemented system of claim 9 , wherein said modifying module comprises:

an identification module for identifying, in a current generation of Nondeterministic Finite Automaton (NFA) said current generation of NFA comprising compiled Xpath query group maintained as a data structure, at least one branch of said data structure starting from root node according to the modification request; and

a copying module for creating a copy of the identified at least one branch of the data structure.

11. The computer implemented system of claim 10 , wherein said modifying module modifies said at least one branch of the data structure.

12. The computer implemented system of claim 9 , wherein said modification request comprises a request for:

adding a new Xpath query to said Xpath query group.

13. The computer implemented system of claim 9 , wherein the modification request comprises a request for:

deleting an existing Xpath query from the Xpath query group.

14. A non-transitory machine-readable medium product, comprising instructions operable to cause a programmable processor to perform:

performing, by the processor, a first Xpath evaluation on a stream of Extensible Markup Language (XML) messages, the first Xpath evaluation based on a group of Xpath queries associated with a first user transaction;

receiving, by the processor, a plurality of requests to modify the Xpath query group and combining the plurality of requests into a single atomic modification; and

modifying, by the processor, the Xpath query group, in a persistent manner, without affecting the ongoing first Xpath evaluation on the XML messages, wherein modifying the Xpath query group comprises:

generating a second data structure as a copy of portions of a first data structure, the first data structure comprising a hash table with branches, the branches derived from the group of Xpath queries prior to modification and only copying branches of the first data structure being modified;

altering at least one branch of the second data structure in accordance with the modification request, wherein the single atomic modification modifies the second data structure to perform a subsequent Xpath evaluation corresponding to a subsequent modification request of the plurality of requests without generating an additional data structure;

performing a second Xpath evaluation, associated with a second user transaction, using the second data structure in substantially real time with the first Xpath evaluation such that the first and second user transactions are overlapping; and

deleting the first data structure upon completion of the first user transaction and using the second data structure for additional user transactions until modified.

15. The machine-readable medium product of claim 14 , wherein said modifying comprises:

generating a current generation of Nondeterministic Finite Automaton (NFA) by compiling said Xpath query group, said current generation of NFA maintained as a data structure;

identifying at least one branch of said data structure starting from the root node according to the modification request;

creating a copy of the identified at least one branch of the data structure;

modifying said copy to create a new generation of NFA further comprising modifying said at least one branch of the data structure starting from the root node; and

using said new generation of NFA for subsequent Xpath evaluations.

16. The machine-readable medium product of claim 14 , wherein said modification request comprises a request for:

adding a new Xpath query to said Xpath query group.

17. The machine-readable medium product of claim 14 , wherein the modification request comprises a request for:

deleting an existing Xpath query from the Xpath query group.

Assignments (5)
CHANGE OF NAME Recorded Oct 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044129/0001 →
CHANGE OF NAME Recorded Feb 13, 2017
From: SONOA NETWORKS (INDIA) PRIVATE LIMITED
To: APIGEE TECHNOLOGIES (INDIA) PRIVATE LIMITED
Reel/Frame 041696/0245 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2017
From: APIGEE CORPORATION
To: GOOGLE INC.
Reel/Frame 040955/0070 →
CHANGE OF NAME Recorded Aug 20, 2013
From: APIGEE TECHNOLOGIES (INDIA) PRIVATE LIMITED
To: APIGEE CORPORATION
Reel/Frame 031040/0098 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 27, 2008
From: KUMAR, ARUN
To: SONOA NETWORKS INDIA (PVT) LTD.
Reel/Frame 020708/0710 →