Repository navigation
Expand file tree
/
Copy pathChangeQuery.txt
More file actions
153 lines (144 loc) · 6.01 KB
/
Copy pathChangeQuery.txt
File metadata and controls
153 lines (144 loc) · 6.01 KB
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#browse query
select distinct ?change ?created ?added ?addedSubject ?addedPredicate ?addedObject ?addedGraph ?deleted ?deletedSubject ?deletedPredicate ?deletedObject ?deletedGraph ?reversible
where{
service <http://localhost:8080/rdf4j-server/repositories/northwind>
{
graph <http://inova8.com/odata4sparql/change>{
?change a <http://inova8.com/odata4sparql#Change> ;
<http://inova8.com/odata4sparql#created> ?created .
OPTIONAL{
?change <http://inova8.com/odata4sparql#added> ?added .
?added <http://inova8.com/odata4sparql#subject> ?addedSubject ;
<http://inova8.com/odata4sparql#predicate> ?addedPredicate;
<http://inova8.com/odata4sparql#object> ?addedObject ;
<http://inova8.com/odata4sparql#graph> ?addedGraph .
}
OPTIONAL{
?change <http://inova8.com/odata4sparql#deleted> ?deleted .
?deleted <http://inova8.com/odata4sparql#subject> ?deletedSubject ;
<http://inova8.com/odata4sparql#predicate> ?deletedPredicate ;
<http://inova8.com/odata4sparql#object> ?deletedObject ;
<http://inova8.com/odata4sparql#graph> ?deletedGraph .
}
OPTIONAL{{
?laterChange a <http://inova8.com/odata4sparql#Change> ;
<http://inova8.com/odata4sparql#created> ?laterCreated .
?laterChange <http://inova8.com/odata4sparql#deleted> ?laterDeleted .
?laterDeleted <http://inova8.com/odata4sparql#subject> ?addedSubject ;
<http://inova8.com/odata4sparql#predicate> ?addedPredicate;
<http://inova8.com/odata4sparql#object> ?addedObject ;
<http://inova8.com/odata4sparql#graph> ?laterDeletedGraph .
}
FILTER(?created < ?laterCreated )
}
BIND( COALESCE( (?created > ?laterCreated ), true) as ?reversible)
}
}
} order by ?created
#roll back named change
DELETE{
GRAPH ?addedGraph
{
?addedSubject ?addedPredicate ?addedObject
}
GRAPH <http://inova8.com/odata4sparql/change>
{
?change a <http://inova8.com/odata4sparql#Change> ;
<http://inova8.com/odata4sparql#created> ?created .
?change <http://inova8.com/odata4sparql#added> ?added .
?added <http://inova8.com/odata4sparql#subject> ?addedSubject ;
<http://inova8.com/odata4sparql#predicate> ?addedPredicate;
<http://inova8.com/odata4sparql#object> ?addedObject ;
<http://inova8.com/odata4sparql#graph> ?addedGraph .
?change <http://inova8.com/odata4sparql#deleted> ?deleted .
?deleted <http://inova8.com/odata4sparql#subject> ?deletedSubject ;
<http://inova8.com/odata4sparql#predicate> ?deletedPredicate;
<http://inova8.com/odata4sparql#object> ?deletedObject ;
<http://inova8.com/odata4sparql#graph> ?deletedGraph .
}
}
INSERT{
GRAPH ?addedGraph
{
?deletedSubject ?deletedPredicate ?deletedObject
}
}
where{
BIND(<http://change/b7f577d7a8aacb9241bc0696bd2da2adc9eade29-2020-02-27T16:10:47.102Z> as ?change)
graph <http://inova8.com/odata4sparql/change>{
?change a <http://inova8.com/odata4sparql#Change> ;
<http://inova8.com/odata4sparql#created> ?created .
OPTIONAL{
?change <http://inova8.com/odata4sparql#added> ?added .
?added <http://inova8.com/odata4sparql#subject> ?addedSubject ;
<http://inova8.com/odata4sparql#predicate> ?addedPredicate;
<http://inova8.com/odata4sparql#object> ?addedObject ;
<http://inova8.com/odata4sparql#graph> ?addedGraph .
}
OPTIONAL{
?change <http://inova8.com/odata4sparql#deleted> ?deleted .
?deleted <http://inova8.com/odata4sparql#subject> ?deletedSubject ;
<http://inova8.com/odata4sparql#predicate> ?deletedPredicate;
<http://inova8.com/odata4sparql#object> ?deletedObject ;
<http://inova8.com/odata4sparql#graph> ?deletedGraph .
}
}
}
#rollback all
DELETE{
GRAPH ?addedGraph
{
?addedSubject ?addedPredicate ?addedObject
}
GRAPH <http://inova8.com/odata4sparql/change>
{
?change a <http://inova8.com/odata4sparql#Change> ;
<http://inova8.com/odata4sparql#created> ?created .
?change <http://inova8.com/odata4sparql#added> ?added .
?added <http://inova8.com/odata4sparql#subject> ?addedSubject ;
<http://inova8.com/odata4sparql#predicate> ?addedPredicate;
<http://inova8.com/odata4sparql#object> ?addedObject ;
<http://inova8.com/odata4sparql#graph> ?addedGraph .
?change <http://inova8.com/odata4sparql#deleted> ?deleted .
?deleted <http://inova8.com/odata4sparql#subject> ?deletedSubject ;
<http://inova8.com/odata4sparql#predicate> ?deletedPredicate;
<http://inova8.com/odata4sparql#object> ?deletedObject ;
<http://inova8.com/odata4sparql#graph> ?deletedGraph .
}
}
INSERT{
GRAPH ?addedGraph
{
?deletedSubject ?deletedPredicate ?deletedObject
}
}
where{
select ?change ?created ?added ?addedSubject ?addedPredicate ?addedObject ?addedGraph ?deleted ?deletedSubject ?deletedPredicate ?deletedObject ?deletedGraph {
graph <http://inova8.com/odata4sparql/change>{
?change a <http://inova8.com/odata4sparql#Change> ;
<http://inova8.com/odata4sparql#created> ?created .
OPTIONAL{
?change <http://inova8.com/odata4sparql#added> ?added .
?added <http://inova8.com/odata4sparql#subject> ?addedSubject ;
<http://inova8.com/odata4sparql#predicate> ?addedPredicate;
<http://inova8.com/odata4sparql#object> ?addedObject ;
<http://inova8.com/odata4sparql#graph> ?addedGraph .
}
OPTIONAL{
?change <http://inova8.com/odata4sparql#deleted> ?deleted .
?deleted <http://inova8.com/odata4sparql#subject> ?deletedSubject ;
<http://inova8.com/odata4sparql#predicate> ?deletedPredicate ;
<http://inova8.com/odata4sparql#object> ?deletedObject ;
<http://inova8.com/odata4sparql#graph> ?deletedGraph .
}
}
} order by ?created desc
}
#archive
MOVE SILENT GRAPH <http://inova8.com/odata4sparql/change/1> TO GRAPH <http://inova8.com/odata4sparql/change/2>
CLEAR SILENT GRAPH <http://inova8.com/odata4sparql/change/DT-2020Z> ;
INSERT { GRAPH <http://inova8.com/odata4sparql/change/DT-2020Z> { ?s ?p ?o } }
WHERE { GRAPH <http://inova8.com/odata4sparql/change> { ?s ?p ?o } } ;
CLEAR GRAPH <http://inova8.com/odata4sparql/change> ;
#clear
DROP SILENT GRAPH <http://inova8.com/odata4sparql/change>