Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Arangodb | 12,863 | 2 hours ago | 240 | May 23, 2018 | 765 | apache-2.0 | C++ | |||
🥑 ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions. | ||||||||||
Akutan | 1,599 | 4 years ago | 18 | apache-2.0 | Go | |||||
A distributed knowledge graph store | ||||||||||
Joern | 1,269 | 5 | a day ago | 280 | July 12, 2022 | 101 | apache-2.0 | Scala | ||
Open-source code analysis platform for C/C++/Java/Binary/Javascript/Python/Kotlin based on code property graphs. Discord https://discord.gg/vv4MH284Hc | ||||||||||
Eliasdb | 937 | 7 months ago | 6 | March 19, 2022 | 13 | mpl-2.0 | Go | |||
EliasDB a graph-based database. | ||||||||||
Atomspace | 674 | 3 | 10 days ago | 9 | March 30, 2017 | 75 | other | C++ | ||
The OpenCog (hyper-)graph database and graph rewriting system | ||||||||||
Groq | 229 | 7 months ago | 27 | mit | JavaScript | |||||
Specification for GROQ - The Query Language for JSON | ||||||||||
Cog | 222 | 13 days ago | 19 | January 02, 2022 | 4 | mit | Python | |||
Micro Graph Database for Python Applications | ||||||||||
Pgql Lang | 142 | a day ago | 2 | other | Java | |||||
PGQL is an SQL-based query language for the Property Graph data model | ||||||||||
Graphquery | 104 | 3 | 4 | 4 years ago | June 03, 2021 | apache-2.0 | Go | |||
GraphQuery is a query language and execution engine tied to any backend service. | ||||||||||
Socialite | 99 | 7 years ago | 4 | other | Java | |||||
SociaLite: query language for large-scale graph analysis and data mining |
PGQL is an SQL-based query language for the property graph data model, bringing graph pattern matching capabilities to SQL and NoSQL users.
See the website for a language specification and any newsworthy updates:
This Git repository contains a parser for PGQL with the following features:
Easy-to-understand IR: Given a query string, the parser returns an easy-to-understand intermediate representation (IR) of the query as a set of Java objects
Query validation: built-in to the parser is a static query validator that provides meaningful caret-style (e.g. ^^^
) error messages:
Example 1
SELECT n.name, o.name
FROM MATCH (n) -[e]-> (m)
Error(s) in line 1:
SELECT n.name, o.name
^
Unresolved variable
Example 2
SELECT AVG(n.age), n
FROM MATCH (n:Person)
Error(s) in line 1:
SELECT AVG(n.age), n
^
Aggregation expected here since SELECT has other aggregation
Pretty printing: invoking GraphQuery.toString()
will "pretty print" the graph query, which turns unformatted queries into formatted ones:
SELECT n.name FROM MATCH
(n:Person) WHERE n.name = 'Anthony'
OR n.name = 'James'
SELECT n.name
FROM MATCH (n:person)
WHERE n.name = 'Anthony'
OR n.name = 'James'
Code completion: given a (partial) query string and a cursor position, the parser can suggest a set of code completions, including built-in functions, labels and properties. These completions can for example be used by an interactive web editor. By providing the parser with metadata about the graph (existing properties and labels), the completions will also include label and property suggestions.
PGQL's parser can be built on Linux, macOS or Window.
First install JDK 1.8 or higher and Maven 3.5.4 or higher. Then, follow these instructions:
On Linux or macOS:
sh install.sh
On Windows:
JAVA_OPTS
with value -Xms512m -Xmx1024m -Xss16m
install_on_windows.bat
After you have installed the parser like explained above, parse two example queries:
cd example; sh run.sh
cd example
mvn clean package exec:java -Dexec.mainClass="oracle.pgql.lang.example.Main" -Dexec.cleanupDaemonThreads=false
public class Main {
public static void main(String[] args) throws PgqlException {
try (Pgql pgql = new Pgql()) {
// parse query and print graph query
PgqlResult result1 = pgql.parse("SELECT n FROM MATCH (n:Person) -[e:likes]-> (m:Person) WHERE n.name = 'Dave'");
System.out.println(result1.getPgqlStatement());
// parse query with errors and print error messages
PgqlResult result2 = pgql.parse("SELECT x, y, FROM MATCH (n) -[e]-> (m)");
System.out.println(result2.getErrorMessages());
}
}
}
The AST returned by the parser is a GraphQuery object. This would be the input to your query planner.
See the PGQL Specification.
File>Import...>Maven>Existing Maven Projects>Browse...
):
graph-query-ir
: Java representation of graph queriespqgl-spoofax
: Spoofax implementation of PGQL (parser + error checks)pgql-lang
: translation of Spoofax AST into graph-query-ir
This project welcomes contributions from the community. Before submitting a pull request, please review our contribution guide
Please consult the security guide for our responsible security vulnerability disclosure process
Copyright (c) 2023 Oracle and/or its affiliates.
Released under the Apache and the Universal Permissive License (UPL) as shown at https://oss.oracle.com/licenses/upl/.