Skip to content

gds_interchange.owl.sparql

SPARQL query templates for GDS analysis.

SPARQL query templates for GDS RDF graphs.

Pre-built queries for common analyses: dependency paths, reachability, loop detection, parameter impact, block grouping, and entity update maps.

SPARQLTemplate dataclass

A named, parameterized SPARQL query template.

Source code in packages/gds-interchange/gds_interchange/owl/sparql.py
@dataclass(frozen=True)
class SPARQLTemplate:
    """A named, parameterized SPARQL query template."""

    name: str
    description: str
    query: str

run_query(graph, template_name, **params)

Run a registered SPARQL template against a graph.

Parameters can be substituted into the query using Python string formatting ({param_name} placeholders).

Returns a list of dicts, one per result row, with variable names as keys.

Source code in packages/gds-interchange/gds_interchange/owl/sparql.py
def run_query(
    graph: Graph,
    template_name: str,
    **params: str,
) -> list[dict[str, Any]]:
    """Run a registered SPARQL template against a graph.

    Parameters can be substituted into the query using Python string
    formatting ({param_name} placeholders).

    Returns a list of dicts, one per result row, with variable names as keys.
    """
    if template_name not in TEMPLATES:
        raise KeyError(
            f"Unknown template '{template_name}'. Available: {sorted(TEMPLATES.keys())}"
        )
    template = TEMPLATES[template_name]
    query = template.query.format(**params) if params else template.query
    results = graph.query(query)
    return [{str(var): row[i] for i, var in enumerate(results.vars)} for row in results]