kapps_triplestore_interface.sparql_query#

class kapps_triplestore_interface.sparql_query.SPARQLQueryType(*values)[source]#

Bases: Enum

Enum for different SPARQL query types.

SELECT = 'SELECT'#
SELECT_DISTINCT = 'SELECT DISTINCT'#
SELECT_REDUCED = 'SELECT REDUCED'#
CONSTRUCT = 'CONSTRUCT'#
DESCRIBE = 'DESCRIBE'#
ASK = 'ASK'#
INSERT_DATA = 'INSERT DATA'#
INSERT_EXISTS = 'INSERT EXISTS'#
DELETE_DATA = 'DELETE DATA'#
DELETE_INSERT = 'DELETE/INSERT'#
class kapps_triplestore_interface.sparql_query.SPARQLQuery(named_graph: str | IRI | None = None, include_explicit: bool | None = True, include_implicit: bool | None = True)[source]#

Bases: object

Helper for composing and validating SPARQL queries.

Builds SELECT/ASK and UPDATE blocks (INSERT/DELETE) with optional default named graph and control over explicit/implicit inference.

classmethod select(variables: List[str], where_clauses: List[str], select_type: SPARQLQueryType | None = SPARQLQueryType.SELECT, **kwargs) → SPARQLQuery[source]#

Create a new SPARQLQuery instance with a SELECT block. Refer to add_select_block for details.

add_select_block(variables: List[str], where_clauses: List[str], select_type: SPARQLQueryType | None = SPARQLQueryType.SELECT) → None[source]#

Add a SELECT block to the query.

Parameters:
  • variables (List[str]) – Variable names to project (e.g., [“?s”, “?p”, “?o”]).

  • where_clauses (List[str]) – WHERE patterns/filters to include.

  • select_type (Optional[SPARQLQueryType]) – SELECT variant (e.g., DISTINCT). Defaults to SELECT.

classmethod ask(where_clauses: List[str], **kwargs) → SPARQLQuery[source]#

Create a new SPARQLQuery instance with a ASK block. Refer to add_ask_block for details.

add_ask_block(where_clauses: List[str]) → None[source]#

Add an ASK block to the query.

Parameters:

where_clauses (List[str]) – WHERE patterns/filters to include.

classmethod insert_data(triples: Set[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | List[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | Tuple[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]], **kwargs) → SPARQLQuery[source]#

Create a new SPARQLQuery instance with an INSERT DATA block. Refer to add_insert_data_block for details.

add_insert_data_block(triples: Set[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | List[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | Tuple[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]]) → None[source]#

Add an INSERT DATA block comprised of triples.

Parameters:

triples (TriplesLike) – Triples to insert.

classmethod insert_exists(triples: Set[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | List[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | Tuple[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]], **kwargs) → SPARQLQuery[source]#

Create a new SPARQLQuery instance with an INSERT … WHERE NOT EXISTS block. Refer to add_insert_exists_block for details.

add_insert_exists_block(triples: Set[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | List[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | Tuple[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]]) → None[source]#

Add an INSERT … WHERE NOT EXISTS block.

Parameters:

triples (TriplesLike) – Triples to insert when they do not already exist.

classmethod delete_data(triples: Set[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | List[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | Tuple[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]], **kwargs) → SPARQLQuery[source]#

Create a new SPARQLQuery instance with a DELETE DATA block. Refer to add_delete_data_block for details.

add_delete_data_block(triples: Set[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | List[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | Tuple[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]]) → None[source]#

Add a DELETE DATA block comprised of triples.

Parameters:

triples (TriplesLike) – Triples to delete.

classmethod delete_insert_data(delete_triples: Set[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | List[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | Tuple[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]], insert_triples: Set[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | List[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | Tuple[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]], where_clauses: List[str], **kwargs) → SPARQLQuery[source]#

Create a new SPARQLQuery instance with a DELETE DATA block. Refer to add_delete_insert_data_block for details.

add_delete_insert_data_block(delete_triples: Set[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | List[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | Tuple[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]], insert_triples: Set[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | List[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]] | Tuple[Tuple[str | IRI | BNode, str | IRI, str | IRI | BNode | Any | Literal]], where_clauses: List[str]) → None[source]#

Add a combined DELETE/INSERT block with WHERE.

Parameters:
  • delete_triples (TriplesLike) – Triples to delete.

  • insert_triples (TriplesLike) – Triples to insert.

  • where_clauses (List[str]) – WHERE patterns selecting the triples to update.

to_string(validate: bool | None = True) → str[source]#

Compose the full SPARQL string and optionally validate it.

Parameters:

validate (Optional[bool]) – If True, validate the query or update structure.

Returns:

The composed query string.

Return type:

str

Raises:

InvalidQueryError – If validation of the composed query fails.