Entity Query Language (EQL)
EQL is a relational query language that is pythonic, and intuitive.
The interface side of EQL is inspired by euROBIN entity query language white paper.
Installation
pip install entity_query_languageS
If you want to use the visualization feature, you will also need to install rustworkx_utils.
pip install rustworkx_utils
Documentation
Read the documentation here.
Example Usage
An important feature of EQL is that you do not need to do operations like JOIN in SQL, this is performed implicitly.
EQL tries to mirror your intent in a query statement with as less boiler plate code as possiple.
For example an attribute access with an equality check to another value is as simple as using python's dot notation with
the equality operator. For example:
from dataclasses import dataclass
from typing_extensions import List
from entity_query_language import entity, an, contains, symbolic_mode, symbol, From
@symbol
@dataclass
class Body:
name: str
@dataclass
class World:
id_: int
bodies: List[Body]
world = World(1, [Body("Body1"), Body("Body2")])
with symbolic_mode():
body = Body(From(world.bodies))
query = an(entity(body, contains(body.name, "2"),
body.name.startswith("Body"))
)
results = list(query.evaluate())
assert len(results) == 1
assert results[0].name == "Body2"
where this creates a body variable that gets its values from world.bodies, and filters them to have their att "name"
equal to "Body1".
To Cite:
@software{bassiouny2025eql,
author = {Bassiouny, Abdelrhman},
title = {Entity-Query-Language},
url = {https://github.com/AbdelrhmanBassiouny/entity_query_language},
version = {3.1.0}
}