Skip to main content

terminus_store/storage/
consts.rs

1use std::collections::HashMap;
2
3use num_derive::FromPrimitive;
4
5pub struct Filenames {
6    pub node_dictionary_blocks: &'static str,
7    pub node_dictionary_offsets: &'static str,
8
9    pub predicate_dictionary_blocks: &'static str,
10    pub predicate_dictionary_offsets: &'static str,
11
12    pub value_dictionary_types_present: &'static str,
13    pub value_dictionary_type_offsets: &'static str,
14    pub value_dictionary_blocks: &'static str,
15    pub value_dictionary_offsets: &'static str,
16
17    pub node_value_idmap_bits: &'static str,
18    pub node_value_idmap_bit_index_blocks: &'static str,
19    pub node_value_idmap_bit_index_sblocks: &'static str,
20
21    pub predicate_idmap_bits: &'static str,
22    pub predicate_idmap_bit_index_blocks: &'static str,
23    pub predicate_idmap_bit_index_sblocks: &'static str,
24
25    pub base_subjects: &'static str,
26    pub base_objects: &'static str,
27
28    pub base_s_p_adjacency_list_nums: &'static str,
29    pub base_s_p_adjacency_list_bits: &'static str,
30    pub base_s_p_adjacency_list_bit_index_blocks: &'static str,
31    pub base_s_p_adjacency_list_bit_index_sblocks: &'static str,
32
33    pub base_sp_o_adjacency_list_nums: &'static str,
34    pub base_sp_o_adjacency_list_bits: &'static str,
35    pub base_sp_o_adjacency_list_bit_index_blocks: &'static str,
36    pub base_sp_o_adjacency_list_bit_index_sblocks: &'static str,
37
38    pub base_o_ps_adjacency_list_nums: &'static str,
39    pub base_o_ps_adjacency_list_bits: &'static str,
40    pub base_o_ps_adjacency_list_bit_index_blocks: &'static str,
41    pub base_o_ps_adjacency_list_bit_index_sblocks: &'static str,
42
43    pub pos_subjects: &'static str,
44    pub pos_objects: &'static str,
45
46    pub pos_s_p_adjacency_list_nums: &'static str,
47    pub pos_s_p_adjacency_list_bits: &'static str,
48    pub pos_s_p_adjacency_list_bit_index_blocks: &'static str,
49    pub pos_s_p_adjacency_list_bit_index_sblocks: &'static str,
50
51    pub pos_sp_o_adjacency_list_nums: &'static str,
52    pub pos_sp_o_adjacency_list_bits: &'static str,
53    pub pos_sp_o_adjacency_list_bit_index_blocks: &'static str,
54    pub pos_sp_o_adjacency_list_bit_index_sblocks: &'static str,
55
56    pub pos_o_ps_adjacency_list_nums: &'static str,
57    pub pos_o_ps_adjacency_list_bits: &'static str,
58    pub pos_o_ps_adjacency_list_bit_index_blocks: &'static str,
59    pub pos_o_ps_adjacency_list_bit_index_sblocks: &'static str,
60
61    pub neg_subjects: &'static str,
62    pub neg_objects: &'static str,
63
64    pub neg_s_p_adjacency_list_nums: &'static str,
65    pub neg_s_p_adjacency_list_bits: &'static str,
66    pub neg_s_p_adjacency_list_bit_index_blocks: &'static str,
67    pub neg_s_p_adjacency_list_bit_index_sblocks: &'static str,
68
69    pub neg_sp_o_adjacency_list_nums: &'static str,
70    pub neg_sp_o_adjacency_list_bits: &'static str,
71    pub neg_sp_o_adjacency_list_bit_index_blocks: &'static str,
72    pub neg_sp_o_adjacency_list_bit_index_sblocks: &'static str,
73
74    pub neg_o_ps_adjacency_list_nums: &'static str,
75    pub neg_o_ps_adjacency_list_bits: &'static str,
76    pub neg_o_ps_adjacency_list_bit_index_blocks: &'static str,
77    pub neg_o_ps_adjacency_list_bit_index_sblocks: &'static str,
78
79    pub base_predicate_wavelet_tree_bits: &'static str,
80    pub base_predicate_wavelet_tree_bit_index_blocks: &'static str,
81    pub base_predicate_wavelet_tree_bit_index_sblocks: &'static str,
82
83    pub pos_predicate_wavelet_tree_bits: &'static str,
84    pub pos_predicate_wavelet_tree_bit_index_blocks: &'static str,
85    pub pos_predicate_wavelet_tree_bit_index_sblocks: &'static str,
86
87    pub neg_predicate_wavelet_tree_bits: &'static str,
88    pub neg_predicate_wavelet_tree_bit_index_blocks: &'static str,
89    pub neg_predicate_wavelet_tree_bit_index_sblocks: &'static str,
90
91    pub parent: &'static str,
92    pub rollup: &'static str,
93}
94
95#[derive(Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Debug, FromPrimitive)]
96pub enum LayerFileEnum {
97    NodeDictionaryBlocks = 0,
98    NodeDictionaryOffsets,
99    PredicateDictionaryBlocks,
100    PredicateDictionaryOffsets,
101    ValueDictionaryTypesPresent,
102    ValueDictionaryTypeOffsets,
103    ValueDictionaryBlocks,
104    ValueDictionaryOffsets,
105
106    NodeValueIdMapBits,
107    NodeValueIdMapBitIndexBlocks,
108    NodeValueIdMapBitIndexSBlocks,
109
110    PredicateIdMapBits,
111    PredicateIdMapBitIndexBlocks,
112    PredicateIdMapBitIndexSBlocks,
113
114    PosSubjects,
115    PosObjects,
116    NegSubjects,
117    NegObjects,
118
119    PosSPAdjacencyListNums,
120    PosSPAdjacencyListBits,
121    PosSPAdjacencyListBitIndexBlocks,
122    PosSPAdjacencyListBitIndexSBlocks,
123
124    PosSpOAdjacencyListNums,
125    PosSpOAdjacencyListBits,
126    PosSpOAdjacencyListBitIndexBlocks,
127    PosSpOAdjacencyListBitIndexSBlocks,
128
129    PosOPsAdjacencyListNums,
130    PosOPsAdjacencyListBits,
131    PosOPsAdjacencyListBitIndexBlocks,
132    PosOPsAdjacencyListBitIndexSBlocks,
133
134    PosPredicateWaveletTreeBits,
135    PosPredicateWaveletTreeBitIndexBlocks,
136    PosPredicateWaveletTreeBitIndexSBlocks,
137
138    NegSPAdjacencyListNums,
139    NegSPAdjacencyListBits,
140    NegSPAdjacencyListBitIndexBlocks,
141    NegSPAdjacencyListBitIndexSBlocks,
142
143    NegSpOAdjacencyListNums,
144    NegSpOAdjacencyListBits,
145    NegSpOAdjacencyListBitIndexBlocks,
146    NegSpOAdjacencyListBitIndexSBlocks,
147
148    NegOPsAdjacencyListNums,
149    NegOPsAdjacencyListBits,
150    NegOPsAdjacencyListBitIndexBlocks,
151    NegOPsAdjacencyListBitIndexSBlocks,
152
153    NegPredicateWaveletTreeBits,
154    NegPredicateWaveletTreeBitIndexBlocks,
155    NegPredicateWaveletTreeBitIndexSBlocks,
156
157    Parent,
158    Rollup,
159}
160
161pub const FILENAMES: Filenames = Filenames {
162    node_dictionary_blocks: "node_dictionary_blocks.tfc",
163    node_dictionary_offsets: "node_dictionary_offsets.logarray",
164
165    predicate_dictionary_blocks: "predicate_dictionary_blocks.tfc",
166    predicate_dictionary_offsets: "predicate_dictionary_offsets.logarray",
167
168    value_dictionary_types_present: "value_dictionary_types.logarray",
169    value_dictionary_type_offsets: "value_dictionary_type_offsets.logarray",
170    value_dictionary_blocks: "value_dictionary_blocks.tfc",
171    value_dictionary_offsets: "value_dictionary_offsets.logarray",
172
173    node_value_idmap_bits: "node_value_idmap_bits.bitarray",
174    node_value_idmap_bit_index_blocks: "node_value_idmap_bit_index_blocks.bitarray",
175    node_value_idmap_bit_index_sblocks: "node_value_idmap_bit_index_sblocks.bitarray",
176
177    predicate_idmap_bits: "predicate_idmap_bits.bitarray",
178    predicate_idmap_bit_index_blocks: "predicate_idmap_bit_index_blocks.bitarray",
179    predicate_idmap_bit_index_sblocks: "predicate_idmap_bit_index_sblocks.bitarray",
180
181    base_subjects: "base_subjects.logarray",
182    base_objects: "base_objects.logarray",
183
184    base_s_p_adjacency_list_nums: "base_s_p_adjacency_list_nums.logarray",
185    base_s_p_adjacency_list_bits: "base_s_p_adjacency_list_bits.bitarray",
186    base_s_p_adjacency_list_bit_index_blocks: "base_s_p_adjacency_list_bit_index_blocks.logarray",
187    base_s_p_adjacency_list_bit_index_sblocks: "base_s_p_adjacency_list_bit_index_sblocks.logarray",
188
189    base_sp_o_adjacency_list_nums: "base_sp_o_adjacency_list_nums.logarray",
190    base_sp_o_adjacency_list_bits: "base_sp_o_adjacency_list_bits.bitarray",
191    base_sp_o_adjacency_list_bit_index_blocks: "base_sp_o_adjacency_list_bit_index_blocks.logarray",
192    base_sp_o_adjacency_list_bit_index_sblocks:
193        "base_sp_o_adjacency_list_bit_index_sblocks.logarray",
194
195    base_o_ps_adjacency_list_nums: "base_o_ps_adjacency_list_nums.logarray",
196    base_o_ps_adjacency_list_bits: "base_o_ps_adjacency_list_bits.bitarray",
197    base_o_ps_adjacency_list_bit_index_blocks: "base_o_ps_adjacency_list_bit_index_blocks.logarray",
198    base_o_ps_adjacency_list_bit_index_sblocks:
199        "base_o_ps_adjacency_list_bit_index_sblocks.logarray",
200
201    pos_subjects: "child_pos_subjects.logarray",
202    pos_objects: "child_pos_objects.logarray",
203
204    pos_s_p_adjacency_list_nums: "pos_s_p_adjacency_list_nums.logarray",
205    pos_s_p_adjacency_list_bits: "pos_s_p_adjacency_list_bits.bitarray",
206    pos_s_p_adjacency_list_bit_index_blocks: "pos_s_p_adjacency_list_bit_index_blocks.logarray",
207    pos_s_p_adjacency_list_bit_index_sblocks: "pos_s_p_adjacency_list_bit_index_sblocks.logarray",
208
209    pos_sp_o_adjacency_list_nums: "pos_sp_o_adjacency_list_nums.logarray",
210    pos_sp_o_adjacency_list_bits: "pos_sp_o_adjacency_list_bits.bitarray",
211    pos_sp_o_adjacency_list_bit_index_blocks: "pos_sp_o_adjacency_list_bit_index_blocks.logarray",
212    pos_sp_o_adjacency_list_bit_index_sblocks: "pos_sp_o_adjacency_list_bit_index_sblocks.logarray",
213
214    pos_o_ps_adjacency_list_nums: "pos_o_ps_adjacency_list_nums.logarray",
215    pos_o_ps_adjacency_list_bits: "pos_o_ps_adjacency_list_bits.bitarray",
216    pos_o_ps_adjacency_list_bit_index_blocks: "pos_o_ps_adjacency_list_bit_index_blocks.logarray",
217    pos_o_ps_adjacency_list_bit_index_sblocks: "pos_o_ps_adjacency_list_bit_index_sblocks.logarray",
218
219    neg_subjects: "child_neg_subjects.logarray",
220    neg_objects: "child_neg_objects.logarray",
221
222    neg_s_p_adjacency_list_nums: "neg_s_p_adjacency_list_nums.logarray",
223    neg_s_p_adjacency_list_bits: "neg_s_p_adjacency_list_bits.bitarray",
224    neg_s_p_adjacency_list_bit_index_blocks: "neg_s_p_adjacency_list_bit_index_blocks.logarray",
225    neg_s_p_adjacency_list_bit_index_sblocks: "neg_s_p_adjacency_list_bit_index_sblocks.logarray",
226
227    neg_sp_o_adjacency_list_nums: "neg_sp_o_adjacency_list_nums.logarray",
228    neg_sp_o_adjacency_list_bits: "neg_sp_o_adjacency_list_bits.bitarray",
229    neg_sp_o_adjacency_list_bit_index_blocks: "neg_sp_o_adjacency_list_bit_index_blocks.logarray",
230    neg_sp_o_adjacency_list_bit_index_sblocks: "neg_sp_o_adjacency_list_bit_index_sblocks.logarray",
231
232    neg_o_ps_adjacency_list_nums: "neg_o_ps_adjacency_list_nums.logarray",
233    neg_o_ps_adjacency_list_bits: "neg_o_ps_adjacency_list_bits.bitarray",
234    neg_o_ps_adjacency_list_bit_index_blocks: "neg_o_ps_adjacency_list_bit_index_blocks.logarray",
235    neg_o_ps_adjacency_list_bit_index_sblocks: "neg_o_ps_adjacency_list_bit_index_sblocks.logarray",
236
237    base_predicate_wavelet_tree_bits: "base_predicate_wavelet_tree_bits.bitarray",
238    base_predicate_wavelet_tree_bit_index_blocks:
239        "base_predicate_wavelet_tree_bit_index_blocks.logarray",
240    base_predicate_wavelet_tree_bit_index_sblocks:
241        "base_predicate_wavelet_tree_bit_index_sblocks.logarray",
242
243    pos_predicate_wavelet_tree_bits: "pos_predicate_wavelet_tree_bits.bitarray",
244    pos_predicate_wavelet_tree_bit_index_blocks:
245        "pos_predicate_wavelet_tree_bit_index_blocks.logarray",
246    pos_predicate_wavelet_tree_bit_index_sblocks:
247        "pos_predicate_wavelet_tree_bit_index_sblocks.logarray",
248
249    neg_predicate_wavelet_tree_bits: "neg_predicate_wavelet_tree_bits.bitarray",
250    neg_predicate_wavelet_tree_bit_index_blocks:
251        "neg_predicate_wavelet_tree_bit_index_blocks.logarray",
252    neg_predicate_wavelet_tree_bit_index_sblocks:
253        "neg_predicate_wavelet_tree_bit_index_sblocks.logarray",
254
255    parent: "parent.hex",
256    rollup: "rollup.hex",
257};
258
259lazy_static! {
260    pub static ref FILENAME_ENUM_MAP: HashMap<&'static str, LayerFileEnum> = HashMap::from([
261        (
262            "node_dictionary_blocks.tfc",
263            LayerFileEnum::NodeDictionaryBlocks
264        ),
265        (
266            "node_dictionary_offsets.logarray",
267            LayerFileEnum::NodeDictionaryOffsets
268        ),
269        (
270            "predicate_dictionary_blocks.tfc",
271            LayerFileEnum::PredicateDictionaryBlocks
272        ),
273        (
274            "predicate_dictionary_offsets.logarray",
275            LayerFileEnum::PredicateDictionaryOffsets
276        ),
277        (
278            "value_dictionary_types.logarray",
279            LayerFileEnum::ValueDictionaryTypesPresent
280        ),
281        (
282            "value_dictionary_type_offsets.logarray",
283            LayerFileEnum::ValueDictionaryTypeOffsets
284        ),
285        (
286            "value_dictionary_blocks.tfc",
287            LayerFileEnum::ValueDictionaryBlocks
288        ),
289        (
290            "value_dictionary_offsets.logarray",
291            LayerFileEnum::ValueDictionaryOffsets
292        ),
293        (
294            "node_value_idmap_bits.bitarray",
295            LayerFileEnum::NodeValueIdMapBits
296        ),
297        (
298            "node_value_idmap_bit_index_blocks.bitarray",
299            LayerFileEnum::NodeValueIdMapBitIndexBlocks
300        ),
301        (
302            "node_value_idmap_bit_index_sblocks.bitarray",
303            LayerFileEnum::NodeValueIdMapBitIndexSBlocks
304        ),
305        (
306            "predicate_idmap_bits.bitarray",
307            LayerFileEnum::PredicateIdMapBits
308        ),
309        (
310            "predicate_idmap_bit_index_blocks.bitarray",
311            LayerFileEnum::PredicateIdMapBitIndexBlocks
312        ),
313        (
314            "predicate_idmap_bit_index_sblocks.bitarray",
315            LayerFileEnum::PredicateIdMapBitIndexSBlocks
316        ),
317        ("base_subjects.logarray", LayerFileEnum::PosSubjects),
318        ("base_objects.logarray", LayerFileEnum::PosObjects),
319        ("child_pos_subjects.logarray", LayerFileEnum::PosSubjects),
320        ("child_pos_objects.logarray", LayerFileEnum::PosObjects),
321        ("child_neg_subjects.logarray", LayerFileEnum::NegSubjects),
322        ("child_neg_objects.logarray", LayerFileEnum::NegObjects),
323        (
324            "base_s_p_adjacency_list_nums.logarray",
325            LayerFileEnum::PosSPAdjacencyListNums
326        ),
327        (
328            "base_s_p_adjacency_list_bits.bitarray",
329            LayerFileEnum::PosSPAdjacencyListBits
330        ),
331        (
332            "base_s_p_adjacency_list_bit_index_blocks.logarray",
333            LayerFileEnum::PosSPAdjacencyListBitIndexBlocks
334        ),
335        (
336            "base_s_p_adjacency_list_bit_index_sblocks.logarray",
337            LayerFileEnum::PosSPAdjacencyListBitIndexSBlocks
338        ),
339        (
340            "base_sp_o_adjacency_list_nums.logarray",
341            LayerFileEnum::PosSpOAdjacencyListNums
342        ),
343        (
344            "base_sp_o_adjacency_list_bits.bitarray",
345            LayerFileEnum::PosSpOAdjacencyListBits
346        ),
347        (
348            "base_sp_o_adjacency_list_bit_index_blocks.logarray",
349            LayerFileEnum::PosSpOAdjacencyListBitIndexBlocks
350        ),
351        (
352            "base_sp_o_adjacency_list_bit_index_sblocks.logarray",
353            LayerFileEnum::PosSpOAdjacencyListBitIndexSBlocks
354        ),
355        (
356            "base_o_ps_adjacency_list_nums.logarray",
357            LayerFileEnum::PosOPsAdjacencyListNums
358        ),
359        (
360            "base_o_ps_adjacency_list_bits.bitarray",
361            LayerFileEnum::PosOPsAdjacencyListBits
362        ),
363        (
364            "base_o_ps_adjacency_list_bit_index_blocks.logarray",
365            LayerFileEnum::PosOPsAdjacencyListBitIndexBlocks
366        ),
367        (
368            "base_o_ps_adjacency_list_bit_index_sblocks.logarray",
369            LayerFileEnum::PosOPsAdjacencyListBitIndexSBlocks
370        ),
371        (
372            "base_predicate_wavelet_tree_bits.bitarray",
373            LayerFileEnum::PosPredicateWaveletTreeBits
374        ),
375        (
376            "base_predicate_wavelet_tree_bit_index_blocks.logarray",
377            LayerFileEnum::PosPredicateWaveletTreeBitIndexBlocks
378        ),
379        (
380            "base_predicate_wavelet_tree_bit_index_sblocks.logarray",
381            LayerFileEnum::PosPredicateWaveletTreeBitIndexSBlocks
382        ),
383        (
384            "pos_s_p_adjacency_list_nums.logarray",
385            LayerFileEnum::PosSPAdjacencyListNums
386        ),
387        (
388            "pos_s_p_adjacency_list_bits.bitarray",
389            LayerFileEnum::PosSPAdjacencyListBits
390        ),
391        (
392            "pos_s_p_adjacency_list_bit_index_blocks.logarray",
393            LayerFileEnum::PosSPAdjacencyListBitIndexBlocks
394        ),
395        (
396            "pos_s_p_adjacency_list_bit_index_sblocks.logarray",
397            LayerFileEnum::PosSPAdjacencyListBitIndexSBlocks
398        ),
399        (
400            "pos_sp_o_adjacency_list_nums.logarray",
401            LayerFileEnum::PosSpOAdjacencyListNums
402        ),
403        (
404            "pos_sp_o_adjacency_list_bits.bitarray",
405            LayerFileEnum::PosSpOAdjacencyListBits
406        ),
407        (
408            "pos_sp_o_adjacency_list_bit_index_blocks.logarray",
409            LayerFileEnum::PosSpOAdjacencyListBitIndexBlocks
410        ),
411        (
412            "pos_sp_o_adjacency_list_bit_index_sblocks.logarray",
413            LayerFileEnum::PosSpOAdjacencyListBitIndexSBlocks
414        ),
415        (
416            "pos_o_ps_adjacency_list_nums.logarray",
417            LayerFileEnum::PosOPsAdjacencyListNums
418        ),
419        (
420            "pos_o_ps_adjacency_list_bits.bitarray",
421            LayerFileEnum::PosOPsAdjacencyListBits
422        ),
423        (
424            "pos_o_ps_adjacency_list_bit_index_blocks.logarray",
425            LayerFileEnum::PosOPsAdjacencyListBitIndexBlocks
426        ),
427        (
428            "pos_o_ps_adjacency_list_bit_index_sblocks.logarray",
429            LayerFileEnum::PosOPsAdjacencyListBitIndexSBlocks
430        ),
431        (
432            "pos_predicate_wavelet_tree_bits.bitarray",
433            LayerFileEnum::PosPredicateWaveletTreeBits
434        ),
435        (
436            "pos_predicate_wavelet_tree_bit_index_blocks.logarray",
437            LayerFileEnum::PosPredicateWaveletTreeBitIndexBlocks
438        ),
439        (
440            "pos_predicate_wavelet_tree_bit_index_sblocks.logarray",
441            LayerFileEnum::PosPredicateWaveletTreeBitIndexSBlocks
442        ),
443        (
444            "neg_s_p_adjacency_list_nums.logarray",
445            LayerFileEnum::NegSPAdjacencyListNums
446        ),
447        (
448            "neg_s_p_adjacency_list_bits.bitarray",
449            LayerFileEnum::NegSPAdjacencyListBits
450        ),
451        (
452            "neg_s_p_adjacency_list_bit_index_blocks.logarray",
453            LayerFileEnum::NegSPAdjacencyListBitIndexBlocks
454        ),
455        (
456            "neg_s_p_adjacency_list_bit_index_sblocks.logarray",
457            LayerFileEnum::NegSPAdjacencyListBitIndexSBlocks
458        ),
459        (
460            "neg_sp_o_adjacency_list_nums.logarray",
461            LayerFileEnum::NegSpOAdjacencyListNums
462        ),
463        (
464            "neg_sp_o_adjacency_list_bits.bitarray",
465            LayerFileEnum::NegSpOAdjacencyListBits
466        ),
467        (
468            "neg_sp_o_adjacency_list_bit_index_blocks.logarray",
469            LayerFileEnum::NegSpOAdjacencyListBitIndexBlocks
470        ),
471        (
472            "neg_sp_o_adjacency_list_bit_index_sblocks.logarray",
473            LayerFileEnum::NegSpOAdjacencyListBitIndexSBlocks
474        ),
475        (
476            "neg_o_ps_adjacency_list_nums.logarray",
477            LayerFileEnum::NegOPsAdjacencyListNums
478        ),
479        (
480            "neg_o_ps_adjacency_list_bits.bitarray",
481            LayerFileEnum::NegOPsAdjacencyListBits
482        ),
483        (
484            "neg_o_ps_adjacency_list_bit_index_blocks.logarray",
485            LayerFileEnum::NegOPsAdjacencyListBitIndexBlocks
486        ),
487        (
488            "neg_o_ps_adjacency_list_bit_index_sblocks.logarray",
489            LayerFileEnum::NegOPsAdjacencyListBitIndexSBlocks
490        ),
491        (
492            "neg_predicate_wavelet_tree_bits.bitarray",
493            LayerFileEnum::NegPredicateWaveletTreeBits
494        ),
495        (
496            "neg_predicate_wavelet_tree_bit_index_blocks.logarray",
497            LayerFileEnum::NegPredicateWaveletTreeBitIndexBlocks
498        ),
499        (
500            "neg_predicate_wavelet_tree_bit_index_sblocks.logarray",
501            LayerFileEnum::NegPredicateWaveletTreeBitIndexSBlocks
502        ),
503        ("parent.hex", LayerFileEnum::Parent),
504        ("rollup.hex", LayerFileEnum::Rollup),
505    ]);
506}
507
508pub const SHARED_REQUIRED_FILES: [&'static str; 8] = [
509    FILENAMES.node_dictionary_blocks,
510    FILENAMES.node_dictionary_offsets,
511    FILENAMES.predicate_dictionary_blocks,
512    FILENAMES.predicate_dictionary_offsets,
513    FILENAMES.value_dictionary_types_present,
514    FILENAMES.value_dictionary_type_offsets,
515    FILENAMES.value_dictionary_blocks,
516    FILENAMES.value_dictionary_offsets,
517];
518
519pub const SHARED_OPTIONAL_FILES: [&'static str; 7] = [
520    FILENAMES.node_value_idmap_bits,
521    FILENAMES.node_value_idmap_bit_index_blocks,
522    FILENAMES.node_value_idmap_bit_index_sblocks,
523    FILENAMES.predicate_idmap_bits,
524    FILENAMES.predicate_idmap_bit_index_blocks,
525    FILENAMES.predicate_idmap_bit_index_sblocks,
526    FILENAMES.rollup,
527];
528
529pub const BASE_LAYER_REQUIRED_FILES: [&'static str; 15] = [
530    FILENAMES.base_s_p_adjacency_list_nums,
531    FILENAMES.base_s_p_adjacency_list_bits,
532    FILENAMES.base_s_p_adjacency_list_bit_index_blocks,
533    FILENAMES.base_s_p_adjacency_list_bit_index_sblocks,
534    FILENAMES.base_sp_o_adjacency_list_nums,
535    FILENAMES.base_sp_o_adjacency_list_bits,
536    FILENAMES.base_sp_o_adjacency_list_bit_index_blocks,
537    FILENAMES.base_sp_o_adjacency_list_bit_index_sblocks,
538    FILENAMES.base_o_ps_adjacency_list_nums,
539    FILENAMES.base_o_ps_adjacency_list_bits,
540    FILENAMES.base_o_ps_adjacency_list_bit_index_blocks,
541    FILENAMES.base_o_ps_adjacency_list_bit_index_sblocks,
542    FILENAMES.base_predicate_wavelet_tree_bits,
543    FILENAMES.base_predicate_wavelet_tree_bit_index_blocks,
544    FILENAMES.base_predicate_wavelet_tree_bit_index_sblocks,
545];
546
547pub const BASE_LAYER_OPTIONAL_FILES: [&'static str; 2] =
548    [FILENAMES.base_subjects, FILENAMES.base_objects];
549
550pub const CHILD_LAYER_REQUIRED_FILES: [&'static str; 31] = [
551    FILENAMES.parent,
552    FILENAMES.pos_s_p_adjacency_list_nums,
553    FILENAMES.pos_s_p_adjacency_list_bits,
554    FILENAMES.pos_s_p_adjacency_list_bit_index_blocks,
555    FILENAMES.pos_s_p_adjacency_list_bit_index_sblocks,
556    FILENAMES.pos_sp_o_adjacency_list_nums,
557    FILENAMES.pos_sp_o_adjacency_list_bits,
558    FILENAMES.pos_sp_o_adjacency_list_bit_index_blocks,
559    FILENAMES.pos_sp_o_adjacency_list_bit_index_sblocks,
560    FILENAMES.pos_o_ps_adjacency_list_nums,
561    FILENAMES.pos_o_ps_adjacency_list_bits,
562    FILENAMES.pos_o_ps_adjacency_list_bit_index_blocks,
563    FILENAMES.pos_o_ps_adjacency_list_bit_index_sblocks,
564    FILENAMES.pos_predicate_wavelet_tree_bits,
565    FILENAMES.pos_predicate_wavelet_tree_bit_index_blocks,
566    FILENAMES.pos_predicate_wavelet_tree_bit_index_sblocks,
567    FILENAMES.neg_s_p_adjacency_list_nums,
568    FILENAMES.neg_s_p_adjacency_list_bits,
569    FILENAMES.neg_s_p_adjacency_list_bit_index_blocks,
570    FILENAMES.neg_s_p_adjacency_list_bit_index_sblocks,
571    FILENAMES.neg_sp_o_adjacency_list_nums,
572    FILENAMES.neg_sp_o_adjacency_list_bits,
573    FILENAMES.neg_sp_o_adjacency_list_bit_index_blocks,
574    FILENAMES.neg_sp_o_adjacency_list_bit_index_sblocks,
575    FILENAMES.neg_o_ps_adjacency_list_nums,
576    FILENAMES.neg_o_ps_adjacency_list_bits,
577    FILENAMES.neg_o_ps_adjacency_list_bit_index_blocks,
578    FILENAMES.neg_o_ps_adjacency_list_bit_index_sblocks,
579    FILENAMES.neg_predicate_wavelet_tree_bits,
580    FILENAMES.neg_predicate_wavelet_tree_bit_index_blocks,
581    FILENAMES.neg_predicate_wavelet_tree_bit_index_sblocks,
582];
583
584pub const CHILD_LAYER_OPTIONAL_FILES: [&'static str; 4] = [
585    FILENAMES.pos_subjects,
586    FILENAMES.pos_objects,
587    FILENAMES.neg_subjects,
588    FILENAMES.neg_objects,
589];