Annotations
Annotations are special facts that allow to inject specific behaviors into Vadalog programs. They can be stand-alone, rule level or fact level.
Stand-alone annotations adopt the following syntax: @annotationName(p1, …, pn).
Rule-level annotations adopt the following syntax: @annotationName(p1, …, pn) a(X) :- b(X,Y),c(Y).
Multiple rule-level annotations are also supported: @annotationName1(p1, …, pm) @annotationName2(p1, …, pn) a(X) :- b(X,Y),c(Y).
The fact-level annotations adopt the following syntax: @annotationName(p1, …, pn) myFact(1,2,"a").
Multiple fact-level annotations are also supported: @annotationName(p1, …, pn) @annotationName2(p1, …, pm) myFact(1,2,"a").
They are all prefixed and whitespace-separated (comma "," denotes conjunction and should not be used here).
In all the syntaxes above, annotationName
indicates the specific annotation and each of them accepts a specific list of parameters. In the following sections we present the supported annotations.
Complete Annotation List
specifies the data source to bind for input/output Bindings |
|
specifies what data to deletes from the data source Bindings |
|
@executionMode |
when |
includes a module |
|
specifies the input predicates |
|
includes external implementation |
|
library import |
|
maps the data source to predicate terms and vice versa Bindings |
|
declares of a module |
|
specifies the output predicates |
|
post-processing annotation |
|
specifies the query to bind for input/output Bindings |
|
relaxed safety |
|
saves the chase graph; see Chase Graph File Creation |
|
specifies how to update the data source Bindings |
To configure merge strategies and merge node placement strategy |
|
The mapping annotation for temporal interval elements from / to a source |
|
A single mapping annotation for all elements of a temporal interval (left boundary bracket, left endpoint, right endpoint, right boundary bracket ) |
|
To define the data type for temporal data (Integer, Double, Date…) |
|
To define the time granularity (days, months, hours…) for the program |
|
To define the temporal window for reasoning |
|
To define the time granularity (days, months, hours…) for the program |