IP Library Granted Patent US 6,917,935
Granted Patent B2
US 6,917,935 · App. 10/184,223 · Granted Jul 12, 2005

Manipulating schematized data in a database

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 6,917,935
App. No.
10/184,223
Granted
Jul 12, 2005
Kind
B2
Abstract

Methods, systems, and computer program products for accessing data where the data store provider is abstracted from both the data manipulation language used to access the data and the schema that describes the data. A received request structured in accordance with the data manipulation language is represented in an intermediate form. From the intermediate representation, a native request for any of one or more data store providers may be produced. Before being returned to the requester, a native response from data store provider may be formatted so that it is structured in accordance with the data manipulation language used for the request. A given request received by one computer system may cause a procedure to be generated for accessing the data store provider. When a later request is received by second computer system, the previously generated stored procedure may be reused if applicable.

Claims (22)

1. In a computer network that provides access to data described by an eXtensible Markup Language (“XNW”) schema, wherein storage for the data is abstracted flow an XML data manipulation language for interacting with the data such that any of one or more storage mechanisms may be implemented without necessarily requiring corresponding changes to the XML data manipulation language, a method of data access comprising acts of:

receiving, at a first computer system, an initial request to manipulate data of an underlying data store provider, wherein the initial request is structured in accordance with an XML data manipulation language, and wherein the data to manipulate is structured in accordance with a format dictated by the data store provider;

creating one or more initial stored procedures corresponding to the initial request;

receiving, at a second computer system, a subsequent request to manipulate the data of the underlying data store provider;

creating an intermediate representation of the subsequent request that is suitable for conversion into any of one or more requests supported by any of one or more data store providers, wherein at least a portion of the intermediate representation of the subsequent response corresponds to at least one of the one or more initial stored procedures; and

converting the intermediate representation of the subsequent request into a subsequent native request supported by the data store provider, wherein the subsequent native request comprises the at least one of the one or more initial stored procedures.

2. A method as recited in claim 1 , further comprising an act of storing the one or more initial stored procedures.

3. A method as recited in claim 1 , wherein the initial request comprises at least one of an insert, delete, update, replace, or query request.

4. A method as recited in claim 1 , wherein converting the intermediate representation of the subsequent request comprises an act of creating a generic category representation of the intermediate representation of the subsequent request and thereafter converting the generic category representation into the specific subsequent native request supported by the data store provider.

5. A method as recited in claim 4 , wherein the generic category representation corresponds to relational database management systems in general, and wherein the specific subsequent native request corresponds to a specific implementation of a relational database management system.

6. A method as recited in claim 1 , wherein the intermediate representation of the subsequent request comprises one or more logical executions steps, including at least one of: (i) a begin transaction step, (ii) an end transaction step, (iii) a select step, (iv) a test step, (v) a query step, (vi) an insert step, and (vii) a delete step.

7. For a computer network that provides access to data described by an eXtensible Markup Language (“XML”) schema, wherein storage for the data is abstracted from an XML data manipulation language for interacting with the data such that any of one or more storage mechanisms may be implemented without necessarily requiring corresponding changes to the XML data manipulation language, a computer program product comprising a computer readable medium carrying computer executable instructions that implement a method of data access, the method comprising acts of:

receiving, at a first computer system, an initial request to manipulate data of an underlying data store provider, wherein the initial request is structured in accordance with an XML data manipulation language, and wherein the data to manipulate is structured in accordance with a format dictated by the data store provider;

creating one or more initial stored procedures corresponding to the initial request;

receiving, at a second computer system, a subsequent request to manipulate the data of the underlying data store provider;

creating an intermediate representation of the subsequent request that is suitable for conversion into any of one or more requests supported by any of one or more data store providers, wherein at least a portion of the intermediate representation of the subsequent response corresponds to at least one of the one or more initial stored procedures; and

converting the intermediate representation of the subsequent request into a subsequent native request supported by the data store provider, wherein the subsequent native request comprises the at least one of the one or more initial stored procedures.

8. A computer program product as recited in claim 7 , further comprising an act of storing the one or more initial stored procedures.

9. A computer program product as recited in claim 7 , wherein the initial request comprises at least one of an insert, delete, update, replace, or query request.

10. A computer program product as recited in claim 7 , wherein converting the intermediate representation of the subsequent request comprises an act of creating a generic category representation of the intermediate representation of the subsequent request and thereafter converting the generic category representation into the specific subsequent native request supported by the data store provider.

11. A computer program product as recited in claim 7 , wherein the generic category representation corresponds to relational database management systems in general, and wherein the specific subsequent native request corresponds to a specific implementation of a relational database management system.

12. A computer program product as recited in claim 7 , wherein the intermediate representation of the subsequent request comprises one or more logical executions steps, including at least one of: (i) a begin transaction step. (ii) an end transaction step, (iii) a select step, (iv) a test step, (v) a query step, (vi) an insert step, and (vii) a delete step.

Assignments (4)
CORRECTIVE ASSIGNMENT TO CORRECT THE RECORDAL TO REMOVE INADVERTENTLY RECOREDED PROPERTIES SHOWN IN ATTACHED SHEET PREVIOUSLY RECORDED AT REEL: 047681 FRAME: 0916. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jul 18, 2019
From: MICROSOFT TECHNOLOGY LICENSING, LLC
To: SERVICENOW, INC.
Reel/Frame 049797/0119 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 29, 2018
From: MICROSOFT TECHNOLOGY LICENSING, LLC
To: SERVICENOW, INC.
Reel/Frame 047681/0916 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034541/0477 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 26, 2002
From: ZWIEGINCEW, ARTHUR; LUCOVSKY, MARK H.; KLEINERMAN, CHRISTIAN; NONKO, EUGENE N.; PIERCE, SHAUN D.
To: MICROSOFT CORPORATION
Reel/Frame 013079/0566 →