GFQL Quick Reference¶
This quick reference page provides short examples of various parameters and usage patterns.
Basic Usage¶
Chaining Operations
g.chain([...], engine=EngineAbstract.AUTO)
`ops`: Sequence of graph node and edge matchers (ASTObject instances).
`engine`: Optional execution engine (‘cudf’ for GPU acceleration).
Node Matchers¶
`n(filter_dict=None, name=None, query=None)`
Filter nodes based on attributes.
Parameters: - filter_dict: {attribute: value} or {attribute: condition_function} - name: Optional label; adds a boolean column in the result. - query: Custom query string (e.g., “age > 30 and country == ‘USA’”).
Examples:
Match nodes where type is ‘person’:
n({"type": "person"})
Match nodes with age greater than 30:
n({"age": lambda x: x > 30})
Use a custom query string:
n(query="age > 30 and country == 'USA'")
Edge Matchers¶
`e_forward(edge_match=None, hops=1, to_fixed_point=False, source_node_match=None, destination_node_match=None, source_node_query=None, destination_node_query=None, edge_query=None, name=None)`
Traverse edges in the forward direction.
Parameters: - edge_match: {attribute: value} or {attribute: condition_function} - edge_query: Custom query string for edge attributes. - hops: int, number of hops to traverse. - to_fixed_point: bool, continue traversal until no more matches. - source_node_match: Filter for source nodes. - destination_node_match: Filter for destination nodes. - source_node_query: Custom query string for source nodes. - destination_node_query: Custom query string for destination nodes. - name: Optional label.
Examples:
Traverse 2 hops forward on edges where status is ‘active’:
e_forward({"status": "active"}, hops=2)
Use custom edge query strings:
e_forward(edge_query="weight > 5 and type == 'connects'")
Filter source and destination nodes with match dictionaries:
e_forward( source_node_match={"status": "active"}, destination_node_match={"age": lambda x: x < 30} )
Filter source and destination nodes with queries:
e_forward( source_node_query="status == 'active'", destination_node_query="age < 30" )
Label matched edges:
e_forward(name="active_edges")
`e_reverse(…)` and `e_undirected(…)`
`e_reverse`: Same as e_forward, but traverses in reverse.
`e_undirected`: Traverses edges regardless of direction.
Utility Functions¶
`is_in(values)`
Matches attribute values within a list.
Example:
Match nodes where category is ‘A’, ‘B’, or ‘C’:
n({"category": is_in(["A", "B", "C"])})
Combined Examples¶
Find people connected to transactions via active relationships:
g.chain([ n({"type": "person"}), e_forward({"status": "active"}), n({"type": "transaction"}) ])
Label nodes and edges during traversal:
g.chain([ n({"id": "start_node"}, name="start"), e_forward(name="edge1"), n({"level": 2}, name="middle"), e_forward(name="edge2"), n({"type": "end_type"}, name="end") ])
Traverse until no more matches (fixed point):
g.chain([ n({"status": "infected"}), e_forward(to_fixed_point=True), n(name="reachable") ])
Filter by multiple conditions:
g.chain([ n({"type": is_in(["server", "database"])}), e_undirected({"protocol": "TCP"}, hops=3), n(query="risk_level >= 8") ])
Use custom queries in matchers:
g.chain([ n(query="age > 30 and country == 'USA'"), e_forward(edge_query="weight > 5"), n(query="status == 'active'") ])
GPU Acceleration¶
Enable GPU mode:
g.chain([...], engine='cudf')
Example with cuDF DataFrames:
import cudf e_gdf = cudf.from_pandas(edge_df) n_gdf = cudf.from_pandas(node_df) g = graphistry.nodes(n_gdf, 'node_id').edges(e_gdf, 'src', 'dst') g.chain([...], engine='cudf')
Advanced Usage¶
Traversal with source and destination node filters and queries:
e_forward( edge_query="type == 'follows' and weight > 2", source_node_match={"status": "active"}, destination_node_query="age < 30", hops=2, name="social_edges" )
Node matcher with all parameters:
n( filter_dict={"department": "sales"}, query="age > 25 and tenure > 2", name="experienced_sales" )
Edge matcher with all parameters:
e_reverse( edge_match={"transaction_type": "refund"}, edge_query="amount > 100", source_node_match={"status": "inactive"}, destination_node_match={"region": "EMEA"}, name="large_refunds" )
Parameter Summary¶
Common Parameters: - filter_dict: Attribute filters (e.g., {“status”: “active”}) - query: Custom query string (e.g., “age > 30”) - hops: Number of steps to traverse (int, default 1) - to_fixed_point: Continue traversal until no more matches (bool, default False) - name: Label for matchers (str) - source_node_match, destination_node_match: Filters for connected nodes - source_node_query, destination_node_query: Queries for connected nodes - edge_match: Filters for edges - edge_query: Query for edges - engine: Execution engine (EngineAbstract.AUTO, ‘cudf’, etc.)
Traversal Directions¶
Forward Traversal: e_forward(…)
Reverse Traversal: e_reverse(…)
Undirected Traversal: e_undirected(…)
Tips and Best Practices¶
Limit hops for performance: Specify hops to control traversal depth.
Use naming for analysis: Apply name to label and filter results.
Combine filters: Use filter_dict and query for precise matching.
Leverage GPU acceleration: Use engine=’cudf’ for large datasets.
Avoid infinite loops: Be cautious with to_fixed_point=True in cyclic graphs.
Examples at a Glance¶
Find all paths between two nodes:
g.chain([ n({g._node: "Alice"}), e_undirected(hops=3), n({g._node: "Bob"}) ])
Match nodes with IDs in a range:
n(query="100 <= id <= 200")
Traverse edges with specific labels:
e_forward({"label": is_in(["knows", "likes"])})
Identify subgraphs based on attributes:
g.chain([ n({"community": "A"}), e_undirected(hops=2), n({"community": "B"}, name="bridge_nodes") ])
Custom edge and node queries:
g.chain([ n(query="age >= 18"), e_forward(edge_query="interaction == 'message'"), n(query="location == 'NYC'") ])