3 type tbl = [ `RefObj| `RefSort| `RefRel| `ObjectName| `Owners| `Count]
7 let sprintf_refObj_format name = [
8 sprintf "CREATE TABLE %s (
9 source varchar(255) binary not null,
10 h_occurrence varchar(255) binary not null,
11 h_position varchar(255) binary not null,
15 let sprintf_refSort_format name = [
16 sprintf "CREATE TABLE %s (
17 source varchar(255) binary not null,
18 h_position varchar(255) binary not null,
19 h_depth integer not null,
20 h_sort varchar(255) binary not null
23 let sprintf_refRel_format name = [
24 sprintf "CREATE TABLE %s (
25 source varchar(255) binary not null,
26 h_position varchar(255) binary not null,
27 h_depth integer not null
30 let sprintf_objectName_format name = [
31 sprintf "CREATE TABLE %s (
32 source varchar(255) binary not null,
33 value varchar(255) binary not null
36 let sprintf_owners_format name = [
37 sprintf "CREATE TABLE %s (
38 source varchar(255) binary not null,
39 owner varchar(255) binary not null
42 let sprintf_count_format name = [
43 sprintf "CREATE TABLE %s (
44 source varchar(255) binary unique not null,
45 conclusion smallint(6) not null,
46 hypothesis smallint(6) not null,
47 statement smallint(6) not null
50 let sprintf_refObj_drop name = [sprintf "DROP TABLE %s;" name]
52 let sprintf_refSort_drop name = [sprintf "DROP TABLE %s;" name]
54 let sprintf_refRel_drop name = [sprintf "DROP TABLE %s;" name]
56 let sprintf_objectName_drop name = [sprintf "DROP TABLE %s;" name]
58 let sprintf_owners_drop name = [sprintf "DROP TABLE %s;" name]
60 let sprintf_count_drop name = [sprintf "DROP TABLE %s;" name]
64 let sprintf_refObj_index name = [
65 sprintf "CREATE INDEX %s_source ON %s (source);" name name ;
66 sprintf "CREATE INDEX %s_target ON %s (h_occurrence);" name name ;
67 sprintf "CREATE INDEX %s_position ON %s (h_position);" name name ]
69 let sprintf_refSort_index name = [sprintf "
70 CREATE INDEX %s_source ON %s (source);
73 let sprintf_objectName_index name = [
74 sprintf " CREATE INDEX %s_value ON %s (value);" name name]
76 let sprintf_owners_index name = [
77 sprintf "CREATE INDEX %s_owner ON %s (owner);" name name ;
78 sprintf "CREATE INDEX %s_source ON %s (source);" name name]
80 let sprintf_count_index name = [
81 sprintf "CREATE INDEX %s_source ON %s (source);" name name;
82 sprintf "CREATE INDEX %s_conclusion ON %s (conclusion);" name name;
83 sprintf "CREATE INDEX %s_hypothesis ON %s (hypothesis);" name name;
84 sprintf "CREATE INDEX %s_statement ON %s (statement);" name name]
86 let sprintf_refRel_index name = []
88 let sprintf_refObj_index_drop name = [
89 sprintf "DROP INDEX %s_source ON %s;" name name ;
90 sprintf "DROP INDEX %s_target ON %s;" name name ;
91 sprintf "DROP INDEX %s_position ON %s;" name name ]
93 let sprintf_refSort_index_drop name = [sprintf "
94 DROP INDEX %s_source ON %s;
97 let sprintf_objectName_index_drop name = [
98 sprintf " DROP INDEX %s_value ON %s;" name name]
100 let sprintf_owners_index_drop name = [
101 sprintf "DROP INDEX %s_owner ON %s;" name name ;
102 sprintf "DROP INDEX %s_source ON %s;" name name]
104 let sprintf_count_index_drop name = [
105 sprintf "DROP INDEX %s_source ON %s;" name name;
106 sprintf "DROP INDEX %s_conclusion ON %s;" name name;
107 sprintf "DROP INDEX %s_hypothesis ON %s;" name name;
108 sprintf "DROP INDEX %s_statement ON %s;" name name]
110 let sprintf_refRel_index_drop name = []
114 let get_table_format t named =
116 | `RefObj -> sprintf_refObj_format named
117 | `RefSort -> sprintf_refSort_format named
118 | `RefRel -> sprintf_refRel_format named
119 | `ObjectName -> sprintf_objectName_format named
120 | `Owners -> sprintf_owners_format named
121 | `Count -> sprintf_count_format named
123 let get_index_format t named =
125 | `RefObj -> sprintf_refObj_index named
126 | `RefSort -> sprintf_refSort_index named
127 | `RefRel -> sprintf_refRel_index named
128 | `ObjectName -> sprintf_objectName_index named
129 | `Owners -> sprintf_owners_index named
130 | `Count -> sprintf_count_index named
132 let get_table_drop t named =
134 | `RefObj -> sprintf_refObj_drop named
135 | `RefSort -> sprintf_refSort_drop named
136 | `RefRel -> sprintf_refRel_drop named
137 | `ObjectName -> sprintf_objectName_drop named
138 | `Owners -> sprintf_owners_drop named
139 | `Count -> sprintf_count_drop named
141 let get_index_drop t named =
143 | `RefObj -> sprintf_refObj_index_drop named
144 | `RefSort -> sprintf_refSort_index_drop named
145 | `RefRel -> sprintf_refRel_index_drop named
146 | `ObjectName -> sprintf_objectName_index_drop named
147 | `Owners -> sprintf_owners_index_drop named
148 | `Count -> sprintf_count_index_drop named
150 let create_tables l =
151 List.fold_left (fun s (name,table) -> s @ get_table_format table name) [] l
153 let create_indexes l =
154 List.fold_left (fun s (name,table) -> s @ get_index_format table name) [] l
157 List.fold_left (fun s (name,table) -> s @ get_table_drop table name) [] l
160 List.fold_left (fun s (name,table) -> s @ get_index_drop table name) [] l