IP Library Granted Patent US 10,489,358
Granted Patent B2
US 10,489,358 · App. 15/433,360 · Granted Nov 26, 2019

Schemas to declare graph data models

Inventors: Bilal M. Bhatti (Islandia, NY); Andrew C. Kidder (Islandia, NY); Mubdiu Reza Chowdhury (Islandia, NY); Avaneesh Srivastav (Islandia, NY)
Assignee: CA, Inc.
G06F16/212G06F16/9024
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 10,489,358
App. No.
15/433,360
Granted
Nov 26, 2019
Kind
B2
Abstract

Provided is a process of validating data to be stored in a graph database, the process including: obtaining a first node to be stored in a graph database, the first node having a relationship to a second node corresponding to an edge; obtaining a node type of the first node having a respective node-type schema; forming a polymorphic schema, based on the node-type schema, specifying criteria to qualify as a valid instance of the node type; validating the first node with the polymorphic schema; and in response to validating the first node, storing the first node and the edge in the graph database.

Claims (88)

1. A method of validating data to be stored in a graph database, the method comprising:

obtaining, with one or more processors, a first node to be stored in a graph database, the first node having a relationship to a second node in the graph database, the relationship corresponding to an edge to be added to the graph database;

obtaining, with one or more processors, a node type of the first node, the node type being one of a plurality of node types of nodes in the graph database, each node type having a respective node-type schema specifying respective criteria to qualify as a valid node of the respective node type;

forming, with one or more processors, from a plurality of schemas, a polymorphic schema specifying criteria to qualify as a valid instance of a node type of the first node, wherein forming a polymorphic schema comprises:

accessing a first-node-type schema in memory corresponding to the node type of the first node, the first-node-type schema specifying a first criterion to determine whether the first node qualifies as a valid instance of the node type of the first node,

determining that the first-node-type schema references a first referenced-schema, the first referenced-schema specifying a second criterion to determine whether the first node qualifies as a valid instance of the node type of the first node, and

combining the first-node-type schema with the first referenced-schema in the polymorphic schema by determining whether the first criterion replaces or augments the second criterion;

validating, with one or more processors, the first node with the polymorphic schema by determining that the first criterion is satisfied by the first node; and

in response to validating the first node, storing, with one or more processors, the first node and the edge in the graph database.

2. The method of claim 1 , wherein

the first node includes at least part of an application program interface (API) response from a third party software-as-a-service (SaaS) application received in a hierarchical serialized data format;

the first node corresponds to an account of a user of the third party server and contains as a parameter an account user name;

the graph database comprises:

user-type nodes corresponding to respective employees of an entity,

account-type nodes corresponding to respective accounts of respective employees in respective SaaS applications,

entity-type nodes corresponding to respective entities having employees corresponding to respective user-type nodes,

edges linking user-type nodes to account-type nodes and corresponding to respective relationships between accounts and employees, and

edges linking entity-type nodes to user-type nodes and corresponding to respective employment relationships between entities and employees;

forming the polymorphic schema comprises combining the three or more schemas that are stored in a hierarchical arrangement of schemas in which child schemas inherit criteria from parent schemas;

the hierarchical arrangement of schemas are retrieved from a document-oriented noSQL (structured query language) database storing the schemas in respective documents encoded in a hierarchical serialized data format;

determining that the first-node-type schema references the first referenced-schema comprises determining that the child-node-type schema is a child schema of the first schema in the hierarchical arrangement of schemas;

combining the first-node-type schema with the first referenced-schema in the polymorphic schema comprises determining that the first criterion augments the second criterion;

the first criterion specifies that first property of the first node is required to qualify as a valid instance of the type of the first node;

the second criterion specifies that the second node must be an entity-type node in the graph database or an account-type node in the graph database; and

validating the record with the polymorphic schema comprises determining that the relationship of the record corresponds to an entity-type node in the graph database or an account-type node in the graph database to satisfy the second criterion.

3. The method of claim 1 , wherein determining that the first-node-type schema references the first referenced-schema comprises:

parsing the first-node-type schema to obtain a sequence of tokens;

determining that a subset of the sequence of tokens reference the first referenced-schema and indicate the first-node-type schema is a subtype of the first referenced-schema.

4. The method of claim 1 , wherein determining that the first-node-type schema references the first referenced-schema comprises:

determining that the first-node-type schema inherits criteria from the first referenced-schema, wherein another node-type schema also inherits criteria from the first referenced-schema.

5. The method of claim 1 , wherein determining that the first-node-type schema references the first schema comprises:

determining that the first-node-type schema references a plurality of other referenced-schemas of which the first-node-type schema is a composition.

6. The method of claim 5 , wherein at least some of the plurality of other referenced-schemas are referenced by other node-type schemas, the other node-type schemas being compositions including respective ones of the at least some of the plurality of other schemas.

7. The method of claim 1 , wherein forming the polymorphic schema comprises:

calling a function with the first-node-type schema as a parameter of the function call, wherein the function identifies schemas referenced by a schema serving as a parameter in a call to the function and recursively calls the function with identified schemas as parameters of the recursive function calls.

8. The method of claim 1 , wherein combining the first-node-type schema with the first referenced-schema comprises:

determining that the first-node-type schema replaces the second criterion and augments a third criterion of the first referenced-schema and, in response, validating the record with the first criterion and the third criterion but not the second criterion.

9. The method of claim 1 , wherein forming the polymorphic schema comprises:

determining that the first referenced-schema inherits criteria from a second referenced-schema, wherein the second referenced-schema applies to a set of node types, and wherein the first referenced-schema applies to a subset of the set of nodes types.

10. The method of claim 1 , comprising:

obtaining a third node having the same node type as the first node; and

after validating the first node, assessing validity of the third node by determining whether the third node satisfies criteria of the polymorphic schema.

11. The method of claim 10 , wherein:

the formed polymorphic schema is stored in program state after validating the first node;

the formed polymorphic schema is accessed in program state to assess validity of the third node; and

the polymorphic schema is not re-formed to assess validity of the third node.

12. The method of claim 10 , wherein assessing validity of the third node comprises:

determining that the third node is not valid with the polymorphic schema and, in response, emitting an error indicative of a criterion of the polymorphic schema that is not satisfied by the third node.

13. The method of claim 1 , wherein the polymorphic schema comprises:

a criterion specifying that the record must include a value for a given property of the first node; and

a criterion specifying that the graph database must include the second node with which the first node has the relationship.

14. The method of claim 1 , wherein forming a polymorphic schema comprises steps for forming a polymorphic schema.

15. The method of claim 1 , wherein validating the record with the polymorphic schema comprises steps for validating a record with the polymorphic schema.

16. The method of claim 1 , wherein the first referenced-schema specifies a partial reference indicating that a third criterion applies only if a schema incorporating the first referenced-schema incorporates a specified portion of the first referenced-schema.

17. The method of claim 1 , comprising:

obtaining an indication that a user has a role in an organization;

querying a data repository containing mappings of roles to accounts with the role to obtain an account to be created for the user on a remote application, wherein the first node corresponds to the account; and

sending an instruction to the remote application to create the account.

18. A system, comprising:

one or more processors; and

memory storing instructions that when executed by at least some of the processors effectuate operations comprising:

obtaining a first node to be stored in a graph database, the first node having a relationship to a second node in the graph database, the relationship corresponding to an edge to be added to the graph database;

obtaining a node type of the first node, the node type being one of a plurality of node types of nodes in the graph database, each node type having a respective node-type schema specifying respective criteria to qualify as a valid node of the respective node type;

forming, from a plurality of schemas, a polymorphic schema specifying criteria to qualify as a valid instance of a node type of the first node, wherein forming a polymorphic schema comprises:

accessing a first-node-type schema in memory corresponding to the node type of the first node, the first-node-type schema specifying a first criterion to determine whether the first node qualifies as a valid instance of the node type of the first node,

determining that the first-node-type schema references a first referenced-schema, the first referenced-schema specifying a second criterion to determine whether the first node qualifies as a valid instance of the node type of the first node, and

combining the first-node-type schema with the first referenced-schema in the polymorphic schema by determining whether the first criterion replaces or augments the second criterion;

validating the first node with the polymorphic schema by determining that the first criterion is satisfied by the first node; and

in response to validating the first node, storing the first node and the edge in the graph database.

19. The system of claim 18 , wherein determining that the first-node-type schema references the first referenced-schema comprises:

determining that the first-node-type schema inherits from the first referenced-schema, wherein another node-type schema also inherits from the first referenced-schema.

20. The system of claim 18 , wherein determining that the first-node-type schema references the first referenced-schema comprises:

determining that the first-node-type schema references a plurality of other referenced-schemas of which the first-node-type schema is a composition.

21. The system of claim 18 , wherein combining the first-node-type schema with the first referenced-schema comprises:

determining that the first-node-type schema replaces the second criterion and augments a third criterion of the first referenced-schema and, in response, validating the record with the first criterion and the third criterion but not the second criterion.

22. The system of claim 18 , the operations comprising:

obtaining a third node of the same node type as the first node; and

after validating the first node, assessing validity of the third node by determining whether the third node satisfies criteria of the polymorphic schema, wherein:

the formed polymorphic schema is stored in program state after validating the first node;

the formed polymorphic schema is accessed in program state to assess validity of the third node; and

the polymorphic schema is not re-formed to assess validity of the third node.

23. The system of claim 18 , wherein the polymorphic schema comprises:

a criterion specifying that the record must include a value for a given property of the first node; and

a criterion specifying that the graph database must include the second node with which the first node has the relationship.

24. The system of claim 18 , the operations comprising:

obtaining an indication that a user has a role in an organization;

querying a data repository containing mappings of roles to accounts with the role to obtain an account to be created for the user on a remote application, wherein the first node corresponds to the account; and

sending an instruction to the remote application to create the account.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2017
From: BHATTI, BILAL M.; KIDDER, ANDREW C.; CHOWDHURY, MUBDIU REZA; SRIVASTAV, AVANEESH
To: CA, INC.
Reel/Frame 041503/0201 →
Continuity (1)
Related Publication 20180232402A1 · Aug 16, 2018