type_bridge.crud.patterns¶
patterns
¶
Match pattern building utilities for TypeQL queries.
build_entity_match_ast
¶
Build an AST EntityPattern for an entity.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_class
|
type[Entity]
|
The entity model class |
required |
var
|
str
|
Variable name to use (default: "$e") |
'$e'
|
filters
|
dict[str, Any] | None
|
Attribute filters as field_name -> value |
None
|
Returns:
| Type | Description |
|---|---|
EntityPattern
|
EntityPattern AST node |
Source code in type_bridge/crud/patterns.py
build_entity_match_pattern
¶
Build a TypeQL match pattern for an entity.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_class
|
type[Entity]
|
The entity model class |
required |
var
|
str
|
Variable name to use (default: "$e") |
'$e'
|
filters
|
dict[str, Any] | None
|
Attribute filters as field_name -> value |
None
|
Returns:
| Type | Description |
|---|---|
str
|
TypeQL match pattern string like "$e isa person, has name "Alice"" |
Examples:
Source code in type_bridge/crud/patterns.py
build_relation_match_ast
¶
Build an AST RelationPattern for a relation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_class
|
type[Relation]
|
The relation model class |
required |
var
|
str
|
Variable name to use (default: "$r") |
'$r'
|
role_players
|
dict[str, str] | None
|
Dict mapping role names to player variable names |
None
|
Returns:
| Type | Description |
|---|---|
RelationPattern
|
RelationPattern AST node |
Raises:
| Type | Description |
|---|---|
ValueError
|
If a role name is not defined in the model |
Source code in type_bridge/crud/patterns.py
build_relation_match_pattern
¶
Build a TypeQL match pattern for a relation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_class
|
type[Relation]
|
The relation model class |
required |
var
|
str
|
Variable name to use (default: "$r") |
'$r'
|
role_players
|
dict[str, str] | None
|
Dict mapping role names to player variable names |
None
|
Returns:
| Type | Description |
|---|---|
str
|
TypeQL match pattern string |
Raises:
| Type | Description |
|---|---|
ValueError
|
If a role name is not defined in the model |
Examples:
>>> build_relation_match_pattern(Employment, role_players={"employee": "$p"})
'$r isa employment, (employee: $p)'
Source code in type_bridge/crud/patterns.py
normalize_role_players
¶
Normalize role players to always be lists for uniform handling.
Handles both single entities and lists of entities (for multi-cardinality roles). Also generates unique variable names for each player in the match clause.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
role_players
|
dict[str, Any]
|
Dict mapping role_name -> entity or list of entities |
required |
Returns:
| Type | Description |
|---|---|
dict[str, list[Any]]
|
Tuple of: |
dict[str, list[str]]
|
|
tuple[dict[str, list[Any]], dict[str, list[str]]]
|
|
Examples:
>>> normalize_role_players({"employee": alice, "employer": company})
({"employee": [alice], "employer": [company]},
{"employee": ["employee"], "employer": ["employer"]})
>>> normalize_role_players({"member": [alice, bob]})
({"member": [alice, bob]},
{"member": ["member_0", "member_1"]})