Did you know ... Search Documentation:
Pack logtalk -- logtalk-3.98.0/docs/apis/_sources/datalog_protocol_0.rst.txt

.. index:: single: datalog_protocol .. _datalog_protocol/0:

.. rst-class:: right

protocol

datalog_protocol

Datalog and incremental rule engine protocol (stratified negation subset).

| Availability: | logtalk_load(datalog(loader))

| Author: Paulo Moura | Version: 0:1:0 | Date: 2026-02-13

| Compilation flags: | static

| Dependencies: | (none)

| Remarks:

  • Rules: Rules are represented as rule(Id, Head, Body) where Body is a list of literals using Term for positive, neg(Term) for negative, and agg(Op, Template, Goals, Result) for aggregates where Op is one of count, sum, min, or max.
  • Facts: EDB facts are represented by callable and ground terms.
  • Limitations: Current version requires aggregate dependencies to be in lower strata.

| Inherited public predicates: | (none)

.. contents:: :local: :backlinks: top

Public predicates

.. index:: clear/0 .. _datalog_protocol/0::clear/0:

clear/0 ^^^^^^^^^^^

Clears all loaded rules, base facts, derived facts, and explanation supports.

| Compilation flags: | static

| Mode and number of proofs: | clear - one


.. index:: load_program/1 .. _datalog_protocol/0::load_program/1:

load_program/1 ^^^^^^^^^^^^^^^^^^

Loads a full program represented as a list of rule(Id,Head,Body) and fact(Fact) terms, replacing current engine state.

| Compilation flags: | static

| Template: | load_program(Program) | Mode and number of proofs: | load_program(+list) - one


.. index:: add_rule/3 .. _datalog_protocol/0::add_rule/3:

add_rule/3 ^^^^^^^^^^^^^^

Adds or replaces a rule. Rule safety is checked.

| Compilation flags: | static

| Template: | add_rule(Id,Head,Body) | Mode and number of proofs: | add_rule(+nonvar,+callable,+list(callable)) - one


.. index:: remove_rule/1 .. _datalog_protocol/0::remove_rule/1:

remove_rule/1 ^^^^^^^^^^^^^^^^^

Removes all rules matching a rule identifier.

| Compilation flags: | static

| Template: | remove_rule(Id) | Mode and number of proofs: | remove_rule(+nonvar) - one


.. index:: begin/0 .. _datalog_protocol/0::begin/0:

begin/0 ^^^^^^^^^^^

Starts a transaction by saving the current engine state snapshot.

| Compilation flags: | static

| Mode and number of proofs: | begin - one


.. index:: commit/0 .. _datalog_protocol/0::commit/0:

commit/0 ^^^^^^^^^^^^

Commits a transaction by discarding the saved state snapshot.

| Compilation flags: | static

| Mode and number of proofs: | commit - one


.. index:: rollback/0 .. _datalog_protocol/0::rollback/0:

rollback/0 ^^^^^^^^^^^^^^

Rolls back a transaction by restoring the saved state snapshot.

| Compilation flags: | static

| Mode and number of proofs: | rollback - one


.. index:: assert_fact/1 .. _datalog_protocol/0::assert_fact/1:

assert_fact/1 ^^^^^^^^^^^^^^^^^

Asserts a ground EDB fact if not already present.

| Compilation flags: | static

| Template: | assert_fact(Fact) | Mode and number of proofs: | assert_fact(+callable) - one


.. index:: retract_fact/1 .. _datalog_protocol/0::retract_fact/1:

retract_fact/1 ^^^^^^^^^^^^^^^^^^

Retracts an EDB fact if present.

| Compilation flags: | static

| Template: | retract_fact(Fact) | Mode and number of proofs: | retract_fact(+callable) - one


.. index:: materialize/0 .. _datalog_protocol/0::materialize/0:

materialize/0 ^^^^^^^^^^^^^^^^^

Computes rule closure from current EDB facts and loaded rules using a fixpoint algorithm.

| Compilation flags: | static

| Mode and number of proofs: | materialize - one


.. index:: update/3 .. _datalog_protocol/0::update/3:

update/3 ^^^^^^^^^^^^

Applies incremental EDB updates and propagates derivation additions/removals; returns the resulting truth delta.

| Compilation flags: | static

| Template: | update(Inserts,Deletes,Delta) | Mode and number of proofs: | update(+list(callable),+list(callable),-compound) - one


.. index:: query/1 .. _datalog_protocol/0::query/1:

query/1 ^^^^^^^^^^^

Enumerates currently true facts (EDB + IDB).

| Compilation flags: | static

| Template: | query(Goal) | Mode and number of proofs: | query(?callable) - zero_or_more


.. index:: query/2 .. _datalog_protocol/0::query/2:

query/2 ^^^^^^^^^^^

Same as query/1 while returning the unified goal as the second argument.

| Compilation flags: | static

| Template: | query(Goal,Bindings) | Mode and number of proofs: | query(?callable,?callable) - zero_or_more


.. index:: explain/2 .. _datalog_protocol/0::explain/2:

explain/2 ^^^^^^^^^^^^^

Returns one explanation for a currently true fact.

| Compilation flags: | static

| Template: | explain(Fact,Explanation) | Mode and number of proofs: | explain(+callable,-nonvar) - zero_or_more


.. index:: (rules)/1 .. _datalog_protocol/0::(rules)/1:

(rules)/1 ^^^^^^^^^^^^^

Returns the loaded rules.

| Compilation flags: | static

| Template: | rules Rules | Mode and number of proofs: | rules-list - one


.. index:: facts/1 .. _datalog_protocol/0::facts/1:

facts/1 ^^^^^^^^^^^

Returns all currently true facts as a sorted list.

| Compilation flags: | static

| Template: | facts(Facts) | Mode and number of proofs: | facts(-list(callable)) - one


.. index:: predicate_stratum/3 .. _datalog_protocol/0::predicate_stratum/3:

predicate_stratum/3 ^^^^^^^^^^^^^^^^^^^^^^^

Enumerates predicate strata as functor, arity, and stratum number.

| Compilation flags: | static

| Template: | predicate_stratum(Functor,Arity,Stratum) | Mode and number of proofs: | predicate_stratum(?atom,?integer,?integer) - zero_or_more


.. index:: strata/1 .. _datalog_protocol/0::strata/1:

strata/1 ^^^^^^^^^^^^

Returns all strata grouped by stratum number and contained predicates.

| Compilation flags: | static

| Template: | strata(Strata) | Mode and number of proofs: | strata(-list) - one


Protected predicates

(none)

Private predicates

(none)

Operators

(none)