This invention relates to a technology for efficiently accessing data stored in a graph database by using a relational database interface.
A big advantage of a graph database is a capability to store data for expressing complex relationships as is, such as human relationships in a social network or a delivery state across a logistics network, and flexibility in not needing a schema design before storage unlike a relational database.
In a relational database, complex search and analysis processing can be carried out on data stored in a database by using query requests called Structured Query Language (SQL) (e.g., “SQL Super Text”, by Kosaku Yamahira, Masashi Tsuchida, and Takashi Kotera, published by Gijutsu-Hyohron Co., Ltd., March 2004). Also in a graph database, complex processing can be carried out by using query requests called SPARQL Protocol and RDF Query Language (SPARQL) (e.g., “Programming the Semantic Web”, by Toby Segaran, Colin Evans, and Jamie Taylor, published by O'Reilly 86 Associates Inc, July 2009).
However, current business systems are typically built by using a relational database, and the data of a large number of business systems is stored and utilized in relational databases. Consequently, there has been a problem in that it has not been possible to search or analyze the data stored in a graph database together with the data stored in a relational database.
To solve this problem, the data stored in a relational database (RDB) and the data stored in a graph database may be combined by a higher level program that accesses the databases. Alternatively, a table for storing the data stored in the graph database may be separately prepared on the relational database side, the data stored in the graph database may be extracted based on the prepared table by using SPARQL, and the extracted data may be re-stored in the relational database.
However, there has been a problem in that the higher level program needs to be redeveloped each time the method of combining the graph database with the relational database is changed. Further, there has also been a problem in that time and cost is required to prepare a SPARQL query for extracting the data stored in the graph database and to migrate the data.
In view of those problems, it is an object of this invention to efficiently search and analyze data stored in a graph database together with data stored in a relational database.
A representative aspect of this invention is as follows. A database management method for managing a graph database and a relational database in a computer comprising a processor and a memory, the database management method comprising: a first step of acquiring, by the computer, a reference frequency for each type of node in the graph database; a second step of extracting, by the computer, the types of nodes having a reference frequency equal to or more than a threshold; a third step of converting, by the computer, the extracted nodes into a table structure and storing the table structure as an intermediate table; and a fourth step of referencing, by the computer, the intermediate table based on a received query to the relational database.
Therefore, according to the one embodiment of this invention, by defining a correspondence between the data stored in the graph database and the data stored in the relational database, combined search and analysis of both sets of data can be executed using an interface for the relational database. Further, by generating intermediate table data by referencing reference statistical information about the data stored in the relational database and the data stored in the graph database, both the relational database and the graph database can be efficiently searched.
An embodiment of this invention is now described with reference to the attached drawings.
In
The back-end computer (#1) 200 includes a processor 201, a memory 202, a storage device 203, and a network adapter 204. A graph database processing module 210 is loaded in the memory 202 and executed by the processor 201.
The graph database 220 is stored in the storage device 203. The graph database 220 may include log data, media data such as video, images, and documents, unstructured data such as sensing data from a sensor, and the like.
The graph database processing module 210 includes a graph query request reception module 211 configured to receive a query from the front-end computer 100 and a graph query processing execution module 212 configured to execute the received query request and output the query result to the front-end computer 100. Queries to the graph database may employ, for example, SPARQL Protocol and RDF Query Language (SPARQL).
In this case, the processor 201 operates as a function module for realizing a predetermined function by operating based on a program of each function module. For example, by operating based on a graph database processing program, the processor 201 functions as the graph database processing module 210. This is the same for the other programs as well. Further, the processor 201 also operates as a function module for realizing each of a plurality of processes executed by each program. The computer and the computer system are an apparatus and a system including those function modules.
Information about the programs for realizing each function of the graph database processing module 210, tables, and the like may be stored in the storage device 203, a storage device such as a non-volatile semiconductor memory, a hard disk drive, and a solid state drive (SSD), or a computer-readable non-transitory data storage medium such as an IC card, an SD card, and a DVD.
The back-end computer (#2) 300 includes a processor 301, a memory 302, a storage device 303, and a network adapter 304. A relational database processing module 310 is loaded in the memory 302 and executed by the processor 301.
The relational database 320 is stored in the storage device 303. The relational database 320 may include structured data such as a table.
The relational database processing module 310 includes a relational query request reception module 311 configured to receive a query from the front-end computer 100 and a relational query processing execution module 312 configured to execute the received query and output the query result to the front-end computer 100. Queries to the relational database may employ, for example, Structured Query Language (SQL).
In this case, the processor 301 operates as a function module for realizing a predetermined function by operating based on a program of each function module. For example, by operating based on a relational database processing program, the processor 301 functions as the graph database processing module 310. This is the same for the other programs as well. Further, the processor 301 also operates as a function module for realizing each of a plurality of processes executed by each program. The computer and the computer system are an apparatus and a system including those function modules.
Information about the programs for realizing each function of the relational database processing module 310, tables, and the like may be stored in the storage device 303, a storage device such as a non-volatile semiconductor memory, a hard disk drive, and an SSD, or a computer-readable non-transitory data storage medium such as an IC card, an SD card, and a DVD.
The front-end computer 100 includes a processor 101, a memory 102, a storage device 103, and a network adapter 104. A query request reception module 110 and a query processing execution module 120 are loaded in the memory 102 and executed by the processor 101.
The storage device 103 stores, as described below, reference statistical information 130 storing an access state, and an intermediate table (intermediate data) 140 obtained by extracting a part of the graph database processing module 210. It should be noted that the intermediate table 140 may be stored in both the memory 102 and the storage device 103.
The query request reception module 110 includes a query reception module 111 configured to receive a query from a computer (not shown) or a terminal (not shown) via the network 400, a schema information management module 112 configured to manage definitions of structured data, a high-frequency reference range determination module 113 configured to store a range of data having a high access frequency in the graph database 220, and a query request conversion module 114 configured to convert a query to the relational database 320 (e.g., in SQL) into a query to the graph database 220 (e.g., in SPARQL).
The query request reception module 110 is configured to receive queries to the relational database 320 (in SQL etc.) and queries to the graph database 220 (in SPARQL etc.), and command the query processing execution module 120 to execute the queries. Further, if a received query is written in SQL and is to the graph database 220, the query request reception module 110 converts the query into a query to the graph database 220 in SQARQL and the like with the query request conversion module 114, and commands the query processing execution module 120 to execute the query.
The query processing execution module 120 is configured to execute a query to the graph database 220 of the back-end computer 200, to the relational database 320 of the back-end computer 300, or to the intermediate table 140, based on a command from the query request reception module 110.
The query processing execution module 120 includes a statistical information management module 121 configured to generate statistical information about the data on which query processing has been performed as the reference statistical information 130, and update a value relating to the query, and a storage data management module 122 configured to manage the location of data for which the query has been received.
The query processing execution module 120 executes a query to the intermediate table 140 or to the back-end computers 200 and 300 in the manner described below based on the query from the query request reception module 110. The storage data management module 122 manages whether the data to be processed based on the received query is stored in the relational database 320, the graph database 220, or the intermediate table 140.
In this case, the processor 101 operates as a function module for realizing a predetermined function by operating based on a program of each function module. For example, by operating based on a query request reception program, the processor 101 functions as the query request reception module 110. This is the same for the other programs as well. Further, the processor 101 also operates as a function module for realizing each of a plurality of processes executed by each program. The computer and the computer system are an apparatus and a system including those function modules.
Information about the programs for realizing each function of the query request reception module 110 and the query processing execution module 120, tables, and the like may be stored in the storage device 103, a storage device such as a non-volatile semiconductor memory, a hard disk drive, and an SSD, or a computer-readable non-transitory data storage medium such as an IC card, an SD card, and a DVD.
The reference statistical information 130 records the access target and frequency each time the query processing execution module 120 issues a query to the back-end computers 200 and 300. The high-frequency reference range determination module 113 of the query request reception module 110 reads the reference statistical information 130, specifies a range having a high access frequency (high-frequency reference range) in the graph database 220, and extracts the nodes of the high-frequency reference range. Further, after acquiring a correspondence between the graph database 220 and the relational database 320, the high-frequency reference range determination module 113 generates the intermediate table 140 by joining the extracted nodes with the relational database 320 and converting into a table structure. This intermediate table 140 is formed as a table structure, and can be accessed by a relational database query.
Generation of the intermediate table 140 is carried out by, for example, the high-frequency reference range determination module 113. The high-frequency reference range determination module 113 specifies a range having a high access frequency in the graph database 220. Further, the high-frequency reference range determination module 113 extracts the nodes (or the types of nodes) of the graph database 220 in the range specified as having a high access frequency, extracts the relational database 320 corresponding to this range, joins those extracted pieces of data, and converts the joined data into a table structure to be generated as the intermediate table 140. It should be noted that the reference frequency can be calculated from a ratio between the number of times (or the reference frequency) each type of node in the graph database 220 has been referenced and the total number of times the graph database 220 has been accessed. Further, in addition to the storage device 103, the intermediate table 140 can also be stored in a part of the memory 102.
In this case, the high-frequency reference range determination module 113 acquires a correspondence between the relational database 320 and the graph database 220 to be searched, generates a schema (RDB schema 1) having a table structure, and stores the generated schema in the schema information management module 112. It should be noted that a schema (RDB schema 2) for the relational database 320 having a table structure is stored in the schema information management module 112. The schema (RDB schema 2) for the relational database 320 is set when defining or updating the relational database 320.
Further, the front-end computer 100 generates the intermediate table 140 that has been converted into a table structure by joining a part of the relational database 320 with a part of the graph database 220 based on the reference statistical information 130.
Regarding access of the intermediate table 140, because the intermediate table 140 has a table structure, the elements of the graph database 220 can be accessed by utilizing a query to the relational database 320. Further, because the intermediate table 140 is a table obtained by joining the graph database 220 and the relational database 320, the intermediate table 140 can also be realized by referencing the graph database 220 and the relational database 320 in parallel.
In addition, for data not present in the intermediate table 140, queries are divided into queries to the graph database 220 and queries to the relational database 320, and the queries to the graph database 220 of the back-end computer 200 and the queries to the relational database 320 of the back-end computer 300 are executed in parallel.
In this case, regarding queries to the graph database 220, the query request conversion module 114 can query the back-end computer 200 by converting a query having table structure into a query to the graph database 220. For example, the query request conversion module 114 executes a query to the back-end computer 200 by converting a query (e.g., in SQL) to the relational database (RDB schema 1) into a query to the graph database 220 in SPARQL and the like.
Thus, the front-end computer 100 associates a part of the graph database 220 having a high reference frequency with the relational database 320, and extracts the resultant as the intermediate table 140. When a query is received via the network 400, the intermediate table 140 is accessed based on the schema 1. Only in cases in which the queried data is not present in the intermediate table 140, the query request conversion module 114 accesses the graph database 220 by converting SQL into SPARQL and the like. Further, the relational database 320 can also be accessed in parallel by SQL.
Therefore, when the queried data is in the intermediate table 140, processing can be executed rapidly because the back-end computer 200 and the back-end computer 300 are not accessed.
It should be noted that in
Next, the databases of the back-end computers 200 and 300 are described.
The university organization graph shown in
The syllabus graph shown in
The evaluation table 320A shown in
First, in Step S1, the front-end computer 100 defines a correspondence between the graph database 220 and the relational database 320 to be searched. For example, the schema information management module 112 of the front-end computer 100 defines the RDB schema 1 by extracting a key associating the values stored in the nodes of the graph database 220 with the values stored in the fields of the relational database 320.
In the examples shown in
The schema information management module 112 of the front-end computer 100 stores this correspondence as the RDB schema 1.
Thus, as one example, the fields of the relational database 320 can be defined as having a correspondence with the nodes of the graph database 220 when the field name matches the type of node. As another example, a correspondence may be defined when the name of the field includes a word common to the type of node.
Next, in Step S2, the front-end computer 100 receives a query to a database stored in the back-end computer 200 or 300, and executes access to that database.
When the front-end computer 100 receives a query from a computer (a client etc., not shown) coupled to the network 400, the front-end computer 100 accesses the back-end computer 200 or 300 and executes the query. At this stage, the statistical information management module 121 of the front-end computer 100 accumulates a query history of the nodes of the graph database 220 as reference statistical information 130.
Further, at a predetermined timing, the front-end computer 100 generates the intermediate table 140 by extracting the nodes of the graph database 220 having a high access frequency. Generation of the intermediate table 140 is described later. It should be noted that examples of the predetermined timing include when the front-end computer 100 has received a command to generate the intermediate table 140, at a predetermined cycle, and the like.
Next, in Step S3, when the front-end computer 100 receives a query including access to the graph database 220, such as illustrated in
First, in Step S11, the schema information management module 112 acquires a list of the types of nodes included in the graph from the graph database 220 of the back-end computer 200 to be searched.
Next, in Step S12, the schema information management module 112 acquires a list of the types of columns (names of the fields) from the relational database 320 of the back-end computer 300 to be searched.
Then, in Step S13, as described above, the schema information management module 112 defines that the fields of the relational database 320 have a correspondence with the nodes of the graph database 220 for the types of column (the field name) that match the types of node.
Based on the above-mentioned subroutine, the elements included in the RDB schema 1 are generated by extracting a correspondence between the nodes of the graph database 220 and the fields (columns) of the relational database 320.
In
Further,
On the other hand, the join condition C2 joins the graph representation of
In such a manner, in this invention, by temporarily representing the types of columns in the relational database 320 graphically, the correspondence between the graph database 220 and the relational database 320 can be extracted.
The administrator and the like using the setting screen 220A operates the input device to input “+” in the projection 2204 when projection is required. It should be noted that “+” only needs to be set for the nodes or columns utilizing projection. Further, “+” is set in the connection 2205 for the nodes to be joined with another database. In the example shown in
The administrator and the like using the setting screen 220B operates the input device to input “+” in the projection 2204 when projection is required. Further, “+” is set in the connection 2205 for the nodes to be joined with another database. In the example shown in
The administrator and the like using the setting screen 220C operates the input device to input “+” in the projection 2204C when projection is required. Further, “+” is set in the connection 2205C for the nodes to be joined with another database. In the example shown in
This setting screen 220D has a table structure, for example. In the setting screen 220D, one entry includes a number (#) 2201D storing the number of the join condition, an endpoint 1 (2202D) storing one of the nodes to be joined, an endpoint 2 (2203D) storing another of the nodes to be joined, and a join condition 2204D storing the join condition.
In
Similarly, for a join condition number “C2” in
Thus, the front-end computer 100 can define the correspondence between the graph database 220 and the relational database 320 can be defined by extracting the types of nodes and the types of columns of the graph database 220 and the relational database 320, and setting the condition of the graph representation of the nodes and the columns to be joined from the terminal and the like operated by the administrator.
Next, in Step S22, the high-frequency reference range determination module 113 calculates a range of the graph database 220 referenced at a high frequency based on the statistical information relating to the nodes and edges. This processing is described later with reference to
In Step S23, the storage data management module 122 extracts the data from the determined high-frequency reference range, and generates the intermediate table 140. This processing is described later with reference to
In Step S31, the statistical information management module 121 performs a predetermined initialization on the reference statistical information 130. Next, in Step S32, the query request reception module 110 receives a query or another request via the network 400.
In Step S33, the query reception module 111 determines whether or not a finish request has been received via the network 400. When a finish request has been received, the processing is finished. On the other hand, when a query has been received, the processing proceeds to Step S34.
In Step S34, the query reception module 111 determines whether or not the received query is a query to the graph database 220 (in SPARQL etc.). When the received query is a query to the graph database 220, the processing proceeds to Step S35. When the received query is a query to the relational database 320, the processing proceeds to Step S37. In this case, the query reception module 111 transmits a query to the statistical information management module 121 and commands that the reference statistical information 130 be updated.
When the query to the graph database 220 is in SPARQL, in Step S35, the statistical information management module 121 specifies the type of each node referenced by the WHERE clause in the SPARQL query from the reference statistical information 130, and adds 1 to the reference count of that node type. It should be noted that when the relevant node type is not present in the reference statistical information 130, the statistical information management module 121 adds this node type to the reference statistical information 130 and adds 1 to the reference count.
Next, in Step S36, the statistical information management module 121 specifies the type of each edge referenced by the WHERE clause in the SPARQL query from the reference statistical information 130, and adds 1 to the reference count of that edge type. It should be noted that when the relevant edge type is not present in the reference statistical information 130, the statistical information management module 121 adds this edge type to the reference statistical information 130 and adds 1 to the reference count. Then, the processing returns to Step S32, and the query request reception module 110 receives the next query.
When the query to the relational database 320 is in SQL, in Step S37, the statistical information management module 121 specifies the type of each column referenced by the SELECT clause, the WHERE clause, and the GROUP BY clause in the SQL query from the reference statistical information 130, and adds 1 to the reference count of that column type. It should be noted that when the relevant column type is not present in the reference statistical information 130, the statistical information management module 121 adds this column type to the reference statistical information 130 and adds 1 to the reference count.
Next, in Step S38, the statistical information management module 121 specifies each table referenced by the FROM clause in the SQL query from the reference statistical information 130, and adds 1 to the reference count of that table. It should be noted that when the relevant table is not present in the reference statistical information 130, the statistical information management module 121 adds this table type to the reference statistical information 130 and adds 1 to the reference count. Then, the processing returns to Step S32, and the query request reception module 110 receives the next query.
In this case,
In the reference statistical information 130A shown in
In the reference statistical information 130B shown in
It should be noted that the reference statistical information 130A and the reference statistical information 130B may also be generated by the statistical information management module 121 acquiring the type of node and the like from the graph database 220 during initialization of the statistical information management module 121. Further, as the reference statistical information 130B relating to the edges, reference statistical information 130B in which the edge type names are set in advance may be prepared.
As a result of repeating the above-mentioned processing of
In Step S41, the high-frequency reference range determination module 113 sets an upper limit value U of a total of the reference frequencies as a value for determining the high-frequency reference range. The upper limit value U is a value set in advance.
In Step S42, the high-frequency reference range determination module 113 acquires the reference count and the reference frequency from the reference statistical information 130, and applies a weighting to the edges of the graph representation of the overall relational diagram of the graph database 220 and the relational database 320 shown in
Next, in Step S43, the high-frequency reference range determination module 113 initializes an edge group E, which stores the edges to be extracted, by setting the edge group E as an empty group.
In Step S44, the high-frequency reference range determination module 113 sorts the edges included in a graph G formed by joining the relational database 320 with the graph database 220 shown in
Next, in Step S45, the high-frequency reference range determination module 113 selects an edge e having the smallest weighting from among the edge candidates C.
In Step S46, the high-frequency reference range determination module 113 determines whether or not a closed-path is formed when the edge e is added to the edge group E. When a closed-path is not formed, the processing returns to Step S45, and the high-frequency reference range determination module 113 selects the next edge e.
On the other hand, when a closed-path is formed in the edge group E, the processing proceeds to Step S47. In Step S47, the high-frequency reference range determination module 113 determines that the currently selected edge e is not a selection target, and deletes the edge e from the edge candidates C. In this case, the term “closed-path” refers to a path on the graph that returns to the same node as the starting node, with every edge being passed through only once.
In Step S48, the high-frequency reference range determination module 113 calculates a total T of the reference frequencies of the edges included in the edge group E and the selected edge e.
In Step S49, the high-frequency reference range determination module 113 determines whether or not the total T does not exceed the upper limit value U. When the total T is equal to or less than the upper limit value U, the processing proceeds to Step S50. When the total T exceeds the upper limit value U, the processing proceeds to Step S51.
In Step S50, the high-frequency reference range determination module 113 adds the currently selected edge e to the edge group E. Then, the processing returns to Step S45, and the high-frequency reference range determination module 113 processes the next edge e.
On the other hand, in Step S51, because the total T exceeds the upper limit value U, the high-frequency reference range determination module 113 specifies the group of nodes coupled to the edge e included in the edge group E as the high-frequency reference range. In other words, the group of nodes positioned at both ends of the edge e included in the edge group E are specified as the high-frequency reference range.
As a result of the above-mentioned processing, the edge candidates C are obtained by sorting the reference statistical information 130B shown in
Based on the above-mentioned processing, for example, the edges E5, E7, and E8 shown in
It should be noted that in the above-mentioned example, although the upper limit value U is compared with the total T of the reference frequencies, data having a reference count for each type of each node equal to or more than a threshold may also be set as the high-frequency reference range. Alternatively, data having a reference frequency for each type of each node equal to or more than a threshold may also be set as the high-frequency reference range.
First, in Step S51, the high-frequency reference range determination module 113 references the reference statistical information 130, and keeps the nodes included in the high-frequency reference range but deletes the other nodes from the overall graph G shown in
The graph shown in
Next, in Step S52, when a plurality of edges are coupled from one node to a node of the same type, the high-frequency reference range determination module 113 duplicates a number of nodes equal to that number of edges.
In Step S53, the high-frequency reference range determination module 113 defines a table having the types of nodes included in the high-frequency reference range as column names as the intermediate table 140. In other words, as shown in
In Step S54, the high-frequency reference range determination module 113 matches the column names 1401 to 1403 of the intermediate table 140 to the names of the types of nodes in the graphs of
The intermediate table 140 obtained in this manner has a table structure, which allows a query to the graph database 220 to be accessed with a query to the relational database 320 in SQL and the like by joining the lecture and the student of the graph database 220 with the grade of the relational database 320 having a table structure.
In Step S61, the query reception module 111 of the query request reception module 110 receives a query or another request via the network 400.
In Step S62, the query reception module 111 determines whether or not a finish request has been received via the network 400. When a finish request has been received, the processing is finished. On the other hand, when a query has been received, the processing proceeds to Step S64.
In Step S63, the query reception module 111 determines whether or not the received query is a query capable of utilizing the intermediate table 140. In other words, the act of determining whether or not to reference the type of node in a different format from that of the received query is equivalent to determining whether or not to access the graph database 220 with a query to a database having a table structure, and means determining whether or not to reference the intermediate table 140 obtained by joining the relational database 320 with the graph database 220.
In this determination, when a column of the intermediate table 140 is included in the received query, for example, the processing proceeds to Step S64. In other words, the query reception module 111 references the type of nodes that are in a different format from the received query. On the other hand, when a column of the intermediate table 140 is not included in the received query, the processing proceeds to Step S65. Then, the query reception module 111 executes a query to the graph database 220 or the relational database 320 in the same manner as in
In Step S64, the query request conversion module 114 converts queries to the intermediate table 140 into SQL, and queries to the graph database 220 that are not included in the intermediate table 140 into SPARQL. This conversion is performed as shown in
Then, in Step S65, the intermediate table 140 and the graph database 220 can be accessed by commanding the query processing execution module 120 to execute the query converted by the query request conversion module 114. When execution of the query is complete, the processing returns to Step S61, and the query request reception module 110 receives the next query.
Based on the above-mentioned processing, the frequently-accessed graph database 220 can be referenced with a relational database query by extracting the data having a high access frequency in the graph database 220 as the intermediate table 140, which is a database having a table structure obtained by joining with the relational database 320.
Thus, in this invention, in the graph database 220, the edge group E having a total T of the reference frequencies that does not exceed the upper limit value U is extracted as the data having a high reference frequency, and is converted into the intermediate table 140 having a table structure. As a result, the graph database 220 can be referenced using a query to the relational database 320 to access the intermediate table 140. It should be noted that in the above-mentioned embodiment, although the total of the reference frequencies is compared with the upper limit value U, data having a reference count for each type of node of a predetermined value or more may also be used as the high-frequency reference range.
Further, because the intermediate table 140 is obtained by extracting the data in a high-frequency reference range having a reference frequency equal to or more than a threshold, the frequency of converting queries for the relational database 320 into queries for the graph database 220 is reduced, which allows the graph database 220 to be quickly utilized.
Further, the intermediate table 140 is obtained by joining the relational database 320 with a part of the graph database 220 extracted in the intermediate table 140 based on the correspondence between the graph database 220 and the relational database 320. As a result, the graph database 220 and the relational database 320 can be simultaneously accessed with one query having a table structure, enabling different databases to be efficiently utilized.
Further, when generating the intermediate table 140, the data of the relational database 320 is joined after being converted into graph data. This allows different types of databases to be joined while maintaining the relationships from the root of the graph database 220 to the leaves (end points).
In the above-mentioned embodiment, an example is described in which the query request reception module 110 and the query processing execution module 120 for managing the databases are executed by the front-end computer 100, and the graph database 220 and the relational database 320 are provided by the back-end computers 200 and 300. However, although not shown, those functions may be provided by a single computer.
It should be noted that a part or all of the components in the computer and the like, and the processing modules, the processing units, and the like described in this invention may also be realized using dedicated hardware.
Further, the various software (programs) exemplified in the above-mentioned embodiment may be stored on various types of recording media (e.g., non-transitory computer-readable storage media), such as electromagnetic recording media, electronic recording media, and optical recording media, or alternatively, may be downloaded to a computer via a communication network such as the Internet.
This invention is not limited to the embodiments described above, and encompasses various modification examples. For instance, the embodiments are described in detail for easier understanding of this invention, and this invention is not limited to modes that have all of the described components. Some components of one embodiment can be replaced with components of another embodiment, and components of one embodiment may be added to components of another embodiment. In each embodiment, other components may be added to, deleted from, or replace some components of the embodiment, and the addition, deletion, and the replacement may be applied alone or in combination.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/JP2013/050178 | 1/9/2013 | WO | 00 |