Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Atlas Query Language (AQL) #561

Merged
merged 12 commits into from
Nov 13, 2019
Merged

Atlas Query Language (AQL) #561

merged 12 commits into from
Nov 13, 2019

Conversation

yazad3
Copy link
Contributor

@yazad3 yazad3 commented Nov 12, 2019

Description:

Atlas Query Language or AQL is a new feature that allows developers to write queries directly against the Atlas files. This will allow rapid development where developers can write select statements against their Atlas or OSM files locally and then port these queries in their applications (spark or otherwise) to run the same queries at scale.

AQL currently supports using (as in use Atlas/OSM files), select, update, delete, explain (as in explain plan), commit and diff (as in difference between two atlas schemas).

The AQL statements (select, update, delete) support complex where clauses with geospatial and tag querying among other criterion. AQL also supports nested inner queries..

AQL leverages Atlas as the underlying framework and doesn't reinvent the wheels. AQL is efficient in the sense that queries are automatically optimized to benefit from index-ing which can be either atlas id based or geospatial based.

Atlas allows working against all 6 major entities, node, point, edge, line, relation, area, exposed as "tables" in an atlas schema.

Potential Impact:

None expected including for groovy-json as it has no new transitive dependencies.

Unit Test Approach:

173 test cases are included.

Test Results:

Tests successful.


In doubt: Contributing Guidelines

@matthieun matthieun changed the title Atlas query language (AQL) Atlas Query Language (AQL) Nov 13, 2019
Copy link
Collaborator

@matthieun matthieun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very nice, thanks @yazad3!
Just some indentation error and cosmetic requests.
It would be nice to also

  • add a quick Readme in the dsl package, and also link to it in the main readme!
  • Enable Spotless (it says it support groovy) and maybe have a Checkstyle equivalent!

build.gradle Outdated Show resolved Hide resolved
@yazad3
Copy link
Contributor Author

yazad3 commented Nov 13, 2019

Hi @matthieun, addressed your items other than spotless, checkstyle. I have done some investigation in this area in the past and it turns out that a lot of tools we use for code quality for Java are encompassed in one tool named CodeNarc. Currently, however there is some noise in the reporting due to the nature of the DSL being built and used and I will need to spend time to configure it in a way it behaves reasonably against this project. Are you ok with a new PR with CodeNarc support?

lucaspcram
lucaspcram previously approved these changes Nov 13, 2019
Copy link
Contributor

@lucaspcram lucaspcram left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huge!

Copy link
Collaborator

@matthieun matthieun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤪

@matthieun matthieun merged commit 0e422d8 into osmlab:dev Nov 13, 2019
@matthieun matthieun added this to the 5.8.7 milestone Nov 15, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants