Graph database query handling method and apparatus
First Claim
1. A querying method for a database of graph data encoded as triples, the triples each comprising values of three triple elements and being stored on a plurality of storage servers, the method comprising:
- at a centralized database controller, a dividing step comprising dividing a query into a plurality of result criteria, the result criteria being a triple pattern which some or all query results must match, each triple pattern is composed of three triple pattern elements each corresponding to a different one of the three triple elements;
each triple pattern element being either one of;
a single value triple pattern element specifying a single value of the corresponding triple element which triples must have to match the triple pattern;
ora variable value triple pattern element specifying an ID of a variable, the ID being attributed to values of the corresponding triple elements of triples matching the triple pattern;
at the centralized database controller, a sub-query forming step comprising, forming one or more sub-queries each comprising two or more triple patterns having the same single value triple pattern element or specifying the same ID of a variable as a variable value triple pattern element;
at the centralized database controller, a sub-query issuing step comprising issuing each formed sub-query to each of the plurality of storage servers;
at each storage server;
receiving the formed sub-queries,scanning the triples stored on the storage server for triples satisfying the result criteria of each of the received sub-queries, and,for each received sub-query, transferring a copy of any triple satisfying the result criteria of the sub-query to the other storage servers and/or the centralized database controller as a sub-query result of the sub-query, wherein the scanning comprises;
identifying each different triple pattern from among the received formed sub queries;
prioritizing the identified different triple patterns with triple patterns having more variable value triple pattern elements being prioritized below triple patterns having fewer variable value triple pattern elements;
in order of priority, for each of the triple patterns, scanning the triples stored on the storage server for triples matching the triple pattern to obtain an intermediate result set of triples; and
obtaining sub-query results by combining the intermediate result set of triples foreach of the triple patterns in sub-queries having more than one triple pattern, and by applying filtering conditions to the intermediate result set of triples for each of the triple patterns in sub-queries having filtering conditions;
the method further comprising;
at the centralized database controller, a query result preparing step comprisingreceiving the sub-query results from the plurality of storage servers and using the sub-query results to prepare query results as a response to the query.
1 Assignment
0 Petitions
Accused Products
Abstract
A querying method for a database of graph data encoded as triples being stored on storage servers. The method including dividing a query into a plurality of result criteria triple patterns which query results match, each triple pattern element being either: a single value triple pattern element; or a variable value triple pattern element specifying an ID of a variable. The method includes forming one or more sub-queries each having triple patterns having the same single value triple pattern element or specifying the same ID of a variable as a variable value triple pattern element, issuing each formed sub-query to each of the servers, and receiving triples satisfying a sub-query as results from the servers and using the sub-query results in as a response to the query.
3 Citations
11 Claims
-
1. A querying method for a database of graph data encoded as triples, the triples each comprising values of three triple elements and being stored on a plurality of storage servers, the method comprising:
-
at a centralized database controller, a dividing step comprising dividing a query into a plurality of result criteria, the result criteria being a triple pattern which some or all query results must match, each triple pattern is composed of three triple pattern elements each corresponding to a different one of the three triple elements; each triple pattern element being either one of; a single value triple pattern element specifying a single value of the corresponding triple element which triples must have to match the triple pattern;
ora variable value triple pattern element specifying an ID of a variable, the ID being attributed to values of the corresponding triple elements of triples matching the triple pattern; at the centralized database controller, a sub-query forming step comprising, forming one or more sub-queries each comprising two or more triple patterns having the same single value triple pattern element or specifying the same ID of a variable as a variable value triple pattern element; at the centralized database controller, a sub-query issuing step comprising issuing each formed sub-query to each of the plurality of storage servers; at each storage server; receiving the formed sub-queries, scanning the triples stored on the storage server for triples satisfying the result criteria of each of the received sub-queries, and, for each received sub-query, transferring a copy of any triple satisfying the result criteria of the sub-query to the other storage servers and/or the centralized database controller as a sub-query result of the sub-query, wherein the scanning comprises; identifying each different triple pattern from among the received formed sub queries; prioritizing the identified different triple patterns with triple patterns having more variable value triple pattern elements being prioritized below triple patterns having fewer variable value triple pattern elements; in order of priority, for each of the triple patterns, scanning the triples stored on the storage server for triples matching the triple pattern to obtain an intermediate result set of triples; and obtaining sub-query results by combining the intermediate result set of triples for each of the triple patterns in sub-queries having more than one triple pattern, and by applying filtering conditions to the intermediate result set of triples for each of the triple patterns in sub-queries having filtering conditions; the method further comprising; at the centralized database controller, a query result preparing step comprising receiving the sub-query results from the plurality of storage servers and using the sub-query results to prepare query results as a response to the query. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A system comprising a database controller for a database of graph data encoded as triples, and a plurality of storage servers for storing the database, the triples each comprising values of three triple elements and being stored on the plurality of storage servers, the database controller comprising:
-
a processor; and a memory which stores a plurality of instructions, which when executed by the processor, cause the processor to execute, dividing a query into a plurality of result criteria, the result criteria comprising a plurality of triple patterns which query results must match, each triple pattern being composed of three triple pattern elements each corresponding to a different one of the three triple elements; each triple pattern element being either one of; a single value triple pattern element specifying a single value of the corresponding triple element which triples must have to match the triple pattern; and a variable value triple pattern element specifying an ID of a variable, the ID being attributed to values of the corresponding triple elements of triples matching the triple pattern forming one or more sub-queries each comprising two or more triple patterns having the same single value triple pattern element or specifying the same ID of a variable as a variable value triple pattern element; and issuing each formed sub-query to each of the plurality of storage servers; each of the storage servers being configured to;
receive the formed sub-queries, scan the triples stored on the storage server for triples satisfying the result criteria of each of the received sub-queries, and, for each received sub-query, transfer a copy of any triple satisfying the result criteria of the sub-query to the other storage servers and/or the centralized database controller as a sub-query result of the sub-query, wherein the scanning comprises;identifying each different triple pattern from among the received formed sub-queries; prioritizing the identified different triple patterns with triple patterns having more variable value triple pattern elements being prioritized below triple patterns having fewer variable value triple pattern elements; in order of priority, for each of the triple patterns, scanning the triples stored on the storage server for triples matching the triple pattern to obtain an intermediate result set of triples; and obtaining sub-query results by combining the intermediate result set of triples for each of the triple patterns in sub-queries having more than one triple pattern, and by applying filtering conditions to the intermediate result set of triples for each of the triple patterns in sub-queries having filtering conditions; the processor triples satisfying at least one formed sub-query as sub-query results from the plurality of storage servers and use the sub-query results to prepare query results as a response to the query. - View Dependent Claims (11)
-
Specification