Abstract:
Techniques herein are for query editing with semantic analysis of a query based on information extracted from a tuple graph. In an embodiment, a computerized method involves processing a dataset to extract an extracted schema that describes types and relationships that occur within the dataset. The dataset is not associated with a schema that is not contained in the dataset. The dataset has a graph of tuples. During an incremental parse, an abstract syntax tree (AST) that represents a query is modified. The extracted schema and the dataset are used to perform semantic analysis on the AST. In an embodiment, the tuples are resource description framework (RDF) triples. In an embodiment, the RDF triples include RDF schema statements. Extracting an extracted schema involves processing RDF schema statements. In an embodiment, the query is a SPARQL query and semantic analysis includes error alerting and code completion.
Abstract:
Techniques for identifying, in a target graph, subgraphs that match a query graph are provided. Processing a query graph comprises multiple stages, one for each query node in the query graph. In the first stage, a query node is selected, different portions of the target graph are assigned to different threads, each thread identifies nodes that match the selected query node and stores the identities of those nodes in storage that is local to the thread. The results of each thread are then stored in a “global” data structure. In the second stage, a second query node is selected and different portions of the global data structure are assigned to different threads. Each thread identifies nodes that match the second query node and that are connected to a previously-matched node. The second stage repeats until all nodes in the query graph are processed.
Abstract:
Techniques for identifying, in a target graph, subgraphs that match a query graph are provided. Processing a query graph comprises multiple stages, one for each query node in the query graph. In the first stage, a query node is selected, different portions of the target graph are assigned to different threads, each thread identifies nodes that match the selected query node and stores the identities of those nodes in storage that is local to the thread. The results of each thread are then stored in a “global” data structure. In the second stage, a second query node is selected and different portions of the global data structure are assigned to different threads. Each thread identifies nodes that match the second query node and that are connected to a previously-matched node. The second stage repeats until all nodes in the query graph are processed.