pub struct Program {
pub rules: Vec<Rule>,
}Expand description
Datalog program as an ordered set of rules.
Fields§
§rules: Vec<Rule>Program rules.
Implementations§
Source§impl Program
impl Program
Sourcepub fn try_new(rules: Vec<Rule>) -> Result<Self, ProgramValidationError>
pub fn try_new(rules: Vec<Rule>) -> Result<Self, ProgramValidationError>
Construct a program only when all safety and stratification checks pass.
§Errors
Returns the same structural failures as Self::validate.
Sourcepub fn validate(&self) -> Result<(), ProgramValidationError>
pub fn validate(&self) -> Result<(), ProgramValidationError>
Validate all rules in the program for safety and stratifiability.
Runs two checks:
- Safety — every rule must be range-restricted; head variables and variables inside negated body literals must also appear in some positive body literal.
- Stratifiability — the compatible-rule dependency graph must have no
cycle that includes a negation edge (see
Program::stratify).
§Errors
Returns ProgramValidationError::UnsafeRule on a safety
failure, ProgramValidationError::UnsafeNegation when a
negated body literal references a variable that no positive
literal binds, or
ProgramValidationError::UnstratifiableNegation when the
program contains a recursive cycle through negation.
Sourcepub fn validate_with_equality_mode(
&self,
equality_mode: EqualityMode,
) -> Result<(), ProgramValidationError>
pub fn validate_with_equality_mode( &self, equality_mode: EqualityMode, ) -> Result<(), ProgramValidationError>
Validate the program under a specified equality-reasoning mode (extension).
Runs the same safety / stratification / triple-term-nesting
checks as Self::validate and additionally rejects
negation and aggregation when
equality_mode == EqualityMode::SameAs. The two features
interact non-monotonically with owl:sameAs rewriting; see
EqualityMode for the semantic rationale.
§Errors
Returns the same errors as Self::validate plus
ProgramValidationError::NegationUnderEqualityMode or
ProgramValidationError::AggregationUnderEqualityMode
when the corresponding feature is used under
EqualityMode::SameAs.
Sourcepub fn stratify(&self) -> Result<Stratification, ProgramValidationError>
pub fn stratify(&self) -> Result<Stratification, ProgramValidationError>
Compute the program’s stratification.
Connects producers to consumers whose complete tuple patterns can unify, collapses strongly connected components, and assigns each rule to a stratum. Negative and aggregate dependencies require a strictly earlier producer stratum. Pure EDB inputs are available before stratum zero. Rule indices refer to this program’s rule order.
§Errors
Returns ProgramValidationError::UnstratifiableNegation
when a cycle in the dependency graph contains a negation
edge.
Source§impl Program
impl Program
Sourcepub fn validate_for(
&self,
profile: &DatalogProfile,
) -> Result<(), ProfileCheckError>
pub fn validate_for( &self, profile: &DatalogProfile, ) -> Result<(), ProfileCheckError>
Validate safety and reject every feature missing from the selected contract.
§Errors
Returns typed structural failures or the exact unsupported feature set.
Source§impl Program
impl Program
Sourcepub fn required_capabilities(&self) -> DatalogCapabilities
pub fn required_capabilities(&self) -> DatalogCapabilities
Discover every required language feature, including inside aggregate scopes. This inspects authored structure and does not validate or execute it.