-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprovenancedb-rules.datalog
45 lines (32 loc) · 1.43 KB
/
provenancedb-rules.datalog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
isArtifact(X) :- isDataset(X).
%% used(Process, Dataset, Role).
%% wasGeneratedBy(Dataset, Process, Role).
isProcess(X) :- used(X,_,_).
isProcess(Y) :- wasGeneratedBy(_,Y,_).
isDataset(Y) :- used(_,Y,_).
isDataset(X) :- wasGeneratedBy(X,_,_).
:- table isAncestor/2.
isAncestor(X,Y) :- used(Y,X,_).
isAncestor(X,Y) :- used(Y,Z,_),isAncestor(X,Z).
isAncestor(X,Y) :- wasGeneratedBy(Y,X,_).
isAncestor(X,Y) :- wasGeneratedBy(Y,Z,_),isAncestor(X,Z).
%%isAncestor(X,Y) :- isContainedIn(X,Y).
%%isAncestor(X,Y) :- isContainedIn(Z,Y),isAncestor(X,Z).
:- table wasDerivedFrom/2.
wasDerivedFrom(X,Y) :- used(Z,Y,_),wasGeneratedBy(X,Z,_).
:- table wasTriggeredBy/2.
wasTriggeredBy(X,Y) :- wasGeneratedBy(Z,Y,_),used(X,Z,_).
:- table isContainedInTC/2.
isContainedInTC(X,Y) :- isContainedIn(X,Y).
isContainedInTC(X,Y) :- isContainedIn(X,Z),isContainedInTC(Z,Y).
:- table wasDerivedFromTC/2.
wasDerivedFromTC(X,Y) :- wasDerivedFrom(X,Y).
wasDerivedFromTC(X,Y) :- wasDerivedFrom(X,Z),wasDerivedFromTC(Z,Y).
:- table wasTriggeredByTC/2.
wasTriggeredByTC(X,Y) :- wasTriggeredBy(X,Y).
wasTriggeredByTC(X,Y) :- wasTriggeredBy(X,Z),wasTriggeredByTC(Z,Y).
isInRun(D,X) :- wasGeneratedBy(D,P,_),isInRun(P,X).
isInRun(D,X) :- used(P,D,_),isInRun(P,X).
runCorrelation(R,D,[N|L],V) :- isRun(R),isDataset(D),isInRun(D,R),hasAnnotation(D,N,V).
runCorrelation(R,P,[N|L],V) :- isRun(R),isProcess(P),isInRun(P,R),hasAnnotation(P,N,V).
runCorrelation(R,P,[N|L],V) :- isRun(R),isPro