Delta queries
Delta queries compute the net difference between entity versions, returning added and removed triples along with creation and deletion timestamps.
Only SELECT queries are allowed.
Single-delta structured query
Section titled “Single-delta structured query”A single-delta query computes the net delta between two versions of the dataset, identified by a time interval.
Instantiate DeltaQuery with the SPARQL query string, the time of interest, an optional set of properties, and either a configuration file path or a configuration dictionary:
from time_agnostic_library.agnostic_query import DeltaQuery
delta = DeltaQuery( query=QUERY_STRING, on_time=(START, END), changed_properties=PROPERTIES_SET, config_path=CONFIG_PATH)delta.run_agnostic_query()Parameters
Section titled “Parameters”query(str): a SPARQL SELECT query that identifies the entities whose changes you want to investigateon_time(tuple[str | None, str | None], optional): the time interval(START, END). If one value isNone, only the other is considered. Dates must be in ISO 8601 format (e.g.,2023-01-01,2023-01-01T00:00:00+00:00)changed_properties(set[str], optional): narrows results to entities where the specified properties changed. If empty orNone, any changes are consideredconfig_path(str, default"./config.json"): path to a JSON configuration fileconfig_dict(dict, optional): pass a configuration dictionary directly instead of usingconfig_path
The output reports, for each entity, the net triples added and removed between the two versions. The delta is computed by composing the stored SPARQL UPDATE queries in the interval, without materializing any version state:
{ RES_URI_1: { "created": TIMESTAMP_CREATION, "deleted": TIMESTAMP_DELETION, "additions": {(subject, predicate, object, graph), ...}, "deletions": {(subject, predicate, object, graph), ...} }, RES_URI_2: { "created": TIMESTAMP_CREATION, "deleted": TIMESTAMP_DELETION, "additions": {(subject, predicate, object, graph), ...}, "deletions": {(subject, predicate, object, graph), ...} }}Each element of additions and deletions is a tuple of N3-encoded strings representing a quad (subject, predicate, object, graph).
Cross-delta structured query
Section titled “Cross-delta structured query”A cross-delta query computes the net delta across the entire history of the dataset.
Instantiate DeltaQuery without the on_time parameter:
from time_agnostic_library.agnostic_query import DeltaQuery
delta = DeltaQuery( query=QUERY_STRING, changed_properties=PROPERTIES_SET, config_path=CONFIG_PATH)delta.run_agnostic_query()The output follows the same format. If the entity was not created or deleted within the indicated range, the created or deleted value is None. If no triples changed for a given property filter, additions and deletions are empty sets:
{ RES_URI_1: { "created": TIMESTAMP_CREATION, "deleted": TIMESTAMP_DELETION, "additions": {(subject, predicate, object, graph), ...}, "deletions": {(subject, predicate, object, graph), ...} }}