pub enum Term {
Variable(VariableSymbol),
Constant(ConstantSymbol),
TripleTerm(Box<Atom>),
Skolem {
name: ConstantSymbol,
args: Vec<Term>,
},
}Expand description
Datalog term (variable, constant, quoted-triple term,
or SKOLEM(name, args...) function call).
The TripleTerm variant lets rules name quoted-triple
arguments per RDF 1.2 / RDF-star, encoded as a 2-arity
Atom whose predicate is the triple’s predicate IRI and
whose terms slot holds [subject, object]. Nesting is
bounded by MAX_TRIPLE_TERM_NESTING to keep unification
cost finite — programs that exceed the limit are rejected at
Program::validate time.
The Skolem variant (extension) is a deterministic fresh-IRI
minting operator: given a label and a tuple of argument terms,
the evaluator produces a stable
urn:example:skolem:<label>:<hash> IRI that’s content-addressed
from the argument bindings. SKOLEM is only meaningful in head
positions — body atoms that carry a Skolem term are rejected
at validation time as
super::error::ProgramValidationError::SkolemInBodyAtom
because a SKOLEM term has no pattern semantics (it’s a
function, not a wildcard).
Variants§
Variable(VariableSymbol)
Variable term.
Constant(ConstantSymbol)
Constant term.
TripleTerm(Box<Atom>)
Quoted-triple term: an inner Atom used as a value in
the enclosing atom. Conceptually represents << s p o >>
per RDF 1.2 N-Triples-star syntax.
Skolem
SKOLEM(name, arg_1, …, arg_n) — a deterministic fresh-IRI
minting function (extension). Permitted in rule heads only;
arguments must be Self::Variable or Self::Constant
(no nested SKOLEM, no quoted-triple terms).
Fields
name: ConstantSymbolLabel that namespaces the skolemized IRI — typically a
short ASCII tag like "example-key" so collisions across
independent rule sets stay scoped per author.
Implementations§
Trait Implementations§
Source§impl Display for Term
Display a Term: variables as ?<name>, constants as their
raw symbol, and triple terms as << s p o >> per
N-Triples-star syntax.
impl Display for Term
Display a Term: variables as ?<name>, constants as their
raw symbol, and triple terms as << s p o >> per
N-Triples-star syntax.