Pgql Lang

PGQL is an SQL-based query language for the Property Graph data model
Alternatives To Pgql Lang
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Arangodb12,863
2 hours ago240May 23, 2018765apache-2.0C++
🥑 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.
Akutan1,599
4 years ago18apache-2.0Go
A distributed knowledge graph store
Joern1,2695a day ago280July 12, 2022101apache-2.0Scala
Open-source code analysis platform for C/C++/Java/Binary/Javascript/Python/Kotlin based on code property graphs. Discord https://discord.gg/vv4MH284Hc
Eliasdb937
7 months ago6March 19, 202213mpl-2.0Go
EliasDB a graph-based database.
Atomspace674
310 days ago9March 30, 201775otherC++
The OpenCog (hyper-)graph database and graph rewriting system
Groq229
7 months ago27mitJavaScript
Specification for GROQ - The Query Language for JSON
Cog222
13 days ago19January 02, 20224mitPython
Micro Graph Database for Python Applications
Pgql Lang142
a day ago2otherJava
PGQL is an SQL-based query language for the Property Graph data model
Graphquery104344 years agoJune 03, 2021apache-2.0Go
GraphQuery is a query language and execution engine tied to any backend service.
Socialite99
7 years ago4otherJava
SociaLite: query language for large-scale graph analysis and data mining
Alternatives To Pgql Lang
Select To Compare


Alternative Project Comparisons
Readme

PGQL - Property Graph Query Language

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:

PGQL Home

PGQL Parser and Static Query Validator

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.

Build and Install the Parser

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:

  • Build and install to your local Maven repository by running sh install.sh

On Windows:

  • Open System Properties and add a new variable JAVA_OPTS with value -Xms512m -Xmx1024m -Xss16m
  • Build and install to your local Maven repository by running install_on_windows.bat

Getting Started

After you have installed the parser like explained above, parse two example queries:

  • On Linux or macOS execute cd example; sh run.sh
  • On Windows execute:
    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.

Documentation

See the PGQL Specification.

Development

  • Download Eclipse with Spoofax 2.5.18 pre-installed here
  • Import the following projects into Eclipse (File>Import...>Maven>Existing Maven Projects>Browse...):
    • graph-query-ir: Java representation of graph queries
    • pqgl-spoofax: Spoofax implementation of PGQL (parser + error checks)
    • pgql-lang: translation of Spoofax AST into graph-query-ir

Contributing

This project welcomes contributions from the community. Before submitting a pull request, please review our contribution guide

Security

Please consult the security guide for our responsible security vulnerability disclosure process

License

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/.

Popular Graph Projects
Popular Query Language Projects
Popular Computer Science Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Java
Language
Graph
Sql
Graphql
Oracle
Completion
Ast
Graph Database
Query Language