IP Library Granted Patent US 7,882,138
Granted Patent B1
US 7,882,138 · App. 12/057,366 · Granted Feb 1, 2011

Progressive evaluation of predicate expressions in streaming XPath processor

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 7,882,138
App. No.
12/057,366
Granted
Feb 1, 2011
Kind
B1
Abstract

Progressive evaluation of predicate expressions in streaming XPath processor. A method for evaluating multiple XPath predicate expressions of multiple XPath queries includes identifying includes determining hit of a location path in a SAX event. All XPath predicate expressions of all XPath queries corresponding to the location path are then identified. All leaf nodes in the XPath predicate expressions corresponding to the location path are then determined. Thereafter, storage of nearest parent nodes of the leaf nodes is checked. Each nearest parent node is a first parent node which is encountered while moving from a leaf node towards a root node in an XPath predicate expression and which requires storage for storing intermediate Boolean result. Results of parent nodes of the leaf nodes are the determined based on the checking. Thereafter, the results of the parent nodes are stored if the results of the parent nodes are Boolean results. Further, results of root nodes of the XPath predicate expressions are determined by progressively evaluating subsequent parent nodes of the parent node.

Claims (27)

1. A method comprising:

determining hit of a location path in a SAX event;

identifying all XPath predicate expressions of all XPath queries corresponding to the location path;

determining all leaf nodes in the XPath predicate expressions corresponding to the location path;

checking storage of nearest parent nodes of the leaf nodes, wherein each nearest parent node is first parent node which is encountered while moving from a leaf node towards a root node in an XPath predicate expression and which requires storage for storing intermediate Boolean result;

determining results of parent nodes of the leaf nodes based on the checking;

storing the results of the parent nodes if the results of the parent nodes are Boolean results; and

determining results of root nodes of the XPath predicate expressions by progressively evaluating subsequent parent nodes of the parent nodes, thereby avoiding evaluation of parts of the predicate expressions that yielded a Boolean result.

2. The method of claim 1 further comprising allocating memory for storing results of the parent nodes during parsing of the XPath predicate expressions.

3. The method of claim 1 , wherein the Boolean result comprise “True” or “Yes”.

4. A machine-readable storage medium comprising instructions operable to cause a programmable processor to perform:

determining hit of a location path in a SAX event;

identifying all XPath predicate expressions of all XPath queries corresponding to the location path;

determining all leaf nodes in the XPath predicate expressions corresponding to the location path;

checking storage of nearest parent nodes of the leaf nodes, wherein each nearest parent node is first parent node which is encountered while moving from a leaf node towards a root node in an XPath predicate expression and which requires storage for storing intermediate Boolean result;

determining results of parent nodes of the leaf nodes based on the checking;

storing the results of the parent nodes if the results of the parent nodes are Boolean results; and

determining results of root nodes of the XPath predicate expressions by progressively evaluating subsequent parent nodes of the parent nodes, thereby avoiding evaluation of parts of the predicate expressions that yielded a Boolean result.

5. The machine-readable storage medium of claim 4 further comprising instructions operable to cause a programmable processor to perform allocating memory for storing results of the parent nodes during parsing of the XPath predicate expressions.

6. The machine-readable storage medium of claim 4 , wherein the Boolean result comprise “True” or “Yes”.

7. A system comprising:

an XPath processor comprising:

a location module for determining hit of a location path in a SAX event;

a predicate leaf node identification module for identifying all XPath predicate expressions of all XPath queries corresponding to the location path and determining all leaf nodes in the XPath predicate expressions corresponding to the location path;

a checking module for checking storage of nearest parent nodes of the leaf nodes, wherein each nearest parent node is first parent node which is encountered while moving from a leaf node towards a root node in an XPath predicate expression and which requires storage for storing intermediate Boolean result;

an evaluation module determining results of parent nodes of the leaf nodes based on the checking and determining results of root nodes of the XPath predicate expressions by progressively evaluating subsequent parent nodes of the parent nodes; and

a storage module for storing the results of the parent nodes if the results of the parent nodes are Boolean results.

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 020715/0448 →