danielebarchiesi@4
|
1 <?php
|
danielebarchiesi@4
|
2
|
danielebarchiesi@4
|
3 /**
|
danielebarchiesi@4
|
4 * @file
|
danielebarchiesi@4
|
5 * Install, update and uninstall functions for the rdfx module.
|
danielebarchiesi@4
|
6 */
|
danielebarchiesi@4
|
7
|
danielebarchiesi@4
|
8 /**
|
danielebarchiesi@4
|
9 * Implements hook_schema().
|
danielebarchiesi@4
|
10 */
|
danielebarchiesi@4
|
11 function rdfx_schema() {
|
danielebarchiesi@4
|
12 $schema['rdfx_vocabulary_graphs'] = array(
|
danielebarchiesi@4
|
13 'description' => 'Vocabulary graph, including stubs for any external terms.',
|
danielebarchiesi@4
|
14 'fields' => array(
|
danielebarchiesi@4
|
15 'gid' => array(
|
danielebarchiesi@4
|
16 'description' => 'Graph ID.',
|
danielebarchiesi@4
|
17 'type' => 'serial',
|
danielebarchiesi@4
|
18 'unsigned' => TRUE,
|
danielebarchiesi@4
|
19 'not null' => TRUE,
|
danielebarchiesi@4
|
20 ),
|
danielebarchiesi@4
|
21 'main_ns' => array(
|
danielebarchiesi@4
|
22 'description' => 'The {rdfx_namespaces}.nsid for this vocabulary.',
|
danielebarchiesi@4
|
23 'type' => 'int',
|
danielebarchiesi@4
|
24 'unsigned' => TRUE,
|
danielebarchiesi@4
|
25 'not null' => TRUE,
|
danielebarchiesi@4
|
26 'default' => 0,
|
danielebarchiesi@4
|
27 ),
|
danielebarchiesi@4
|
28 'date_created' => array(
|
danielebarchiesi@4
|
29 'description' => 'The Unix timestamp when the vocabulary was created or imported.',
|
danielebarchiesi@4
|
30 'type' => 'int',
|
danielebarchiesi@4
|
31 'not null' => TRUE,
|
danielebarchiesi@4
|
32 'default' => 0,
|
danielebarchiesi@4
|
33 ),
|
danielebarchiesi@4
|
34 'date_updated' => array(
|
danielebarchiesi@4
|
35 'description' => 'The Unix timestamp when the vocabulary was updated.',
|
danielebarchiesi@4
|
36 'type' => 'int',
|
danielebarchiesi@4
|
37 'not null' => TRUE,
|
danielebarchiesi@4
|
38 'default' => 0,
|
danielebarchiesi@4
|
39 ),
|
danielebarchiesi@4
|
40 ),
|
danielebarchiesi@4
|
41 'primary key' => array('gid'),
|
danielebarchiesi@4
|
42 );
|
danielebarchiesi@4
|
43
|
danielebarchiesi@4
|
44 $schema['rdfx_namespaces'] = array(
|
danielebarchiesi@4
|
45 'description' => 'Namespace mappings defined in the vocabulary graph. Mappings are defined on a per graph basis (i.e. foaf will be defined multiple times, once for each vocabulary graph that uses foaf terms).',
|
danielebarchiesi@4
|
46 'fields' => array(
|
danielebarchiesi@4
|
47 'nsid' => array(
|
danielebarchiesi@4
|
48 'description' => 'Namespace ID.',
|
danielebarchiesi@4
|
49 'type' => 'serial',
|
danielebarchiesi@4
|
50 'unsigned' => TRUE,
|
danielebarchiesi@4
|
51 'not null' => TRUE,
|
danielebarchiesi@4
|
52 ),
|
danielebarchiesi@4
|
53 'gid' => array(
|
danielebarchiesi@4
|
54 'description' => 'The {rdfx_vocabulary_graphs}.gid of the graph that defined this mapping.',
|
danielebarchiesi@4
|
55 'type' => 'int',
|
danielebarchiesi@4
|
56 'unsigned' => TRUE,
|
danielebarchiesi@4
|
57 'not null' => TRUE,
|
danielebarchiesi@4
|
58 'default' => 0,
|
danielebarchiesi@4
|
59 ),
|
danielebarchiesi@4
|
60 'prefix' => array(
|
danielebarchiesi@4
|
61 'description' => 'The prefix as defined by the user for the main namespace, and by the source file for the additional namespaces.',
|
danielebarchiesi@4
|
62 'type' => 'varchar',
|
danielebarchiesi@4
|
63 'length' => '255',
|
danielebarchiesi@4
|
64 'not null' => FALSE,
|
danielebarchiesi@4
|
65 ),
|
danielebarchiesi@4
|
66 'uri' => array(
|
danielebarchiesi@4
|
67 'description' => 'The URI as defined by the user for the main namespace, and by the source file for the additional namespaces.',
|
danielebarchiesi@4
|
68 'type' => 'varchar',
|
danielebarchiesi@4
|
69 'length' => '255',
|
danielebarchiesi@4
|
70 'not null' => TRUE,
|
danielebarchiesi@4
|
71 ),
|
danielebarchiesi@4
|
72 ),
|
danielebarchiesi@4
|
73 'primary key' => array('nsid'),
|
danielebarchiesi@4
|
74 'unique keys' => array(
|
danielebarchiesi@4
|
75 'gid_uri' => array('gid', 'uri'),
|
danielebarchiesi@4
|
76 ),
|
danielebarchiesi@4
|
77 );
|
danielebarchiesi@4
|
78
|
danielebarchiesi@4
|
79 $schema['rdfx_terms'] = array(
|
danielebarchiesi@4
|
80 'description' => 'Terms defined or used in the vocabulary graph. Terms are stored on a per graph basis (i.e. foaf:Person will be stored once for each vocabulary graph that asserts something about it).',
|
danielebarchiesi@4
|
81 'fields' => array(
|
danielebarchiesi@4
|
82 'tid' => array(
|
danielebarchiesi@4
|
83 'description' => 'Term ID.',
|
danielebarchiesi@4
|
84 'type' => 'serial',
|
danielebarchiesi@4
|
85 'unsigned' => TRUE,
|
danielebarchiesi@4
|
86 'not null' => TRUE,
|
danielebarchiesi@4
|
87 ),
|
danielebarchiesi@4
|
88 'nsid' => array(
|
danielebarchiesi@4
|
89 'description' => 'The {rdfx_namespaces}.nsid for this term.',
|
danielebarchiesi@4
|
90 'type' => 'int',
|
danielebarchiesi@4
|
91 'unsigned' => TRUE,
|
danielebarchiesi@4
|
92 'not null' => TRUE,
|
danielebarchiesi@4
|
93 'default' => 0,
|
danielebarchiesi@4
|
94 ),
|
danielebarchiesi@4
|
95 'local_name' => array(
|
danielebarchiesi@4
|
96 'description' => 'The local name of this term.',
|
danielebarchiesi@4
|
97 'type' => 'varchar',
|
danielebarchiesi@4
|
98 'length' => '255',
|
danielebarchiesi@4
|
99 'not null' => FALSE,
|
danielebarchiesi@4
|
100 'default' => '',
|
danielebarchiesi@4
|
101 ),
|
danielebarchiesi@4
|
102 ),
|
danielebarchiesi@4
|
103 'primary key' => array('tid'),
|
danielebarchiesi@4
|
104 'unique keys' => array(
|
danielebarchiesi@4
|
105 'nsid_ln' => array('nsid', 'local_name'),
|
danielebarchiesi@4
|
106 ),
|
danielebarchiesi@4
|
107 );
|
danielebarchiesi@4
|
108
|
danielebarchiesi@4
|
109 $schema['rdfx_term_types'] = array(
|
danielebarchiesi@4
|
110 'description' => 'The RDFS and OWL types that apply to the term. Only terms within the main_ns of a vocabulary graph should have term types.',
|
danielebarchiesi@4
|
111 'fields' => array(
|
danielebarchiesi@4
|
112 'tid' => array(
|
danielebarchiesi@4
|
113 'description' => 'The {rdfx_terms}.tid of the term.',
|
danielebarchiesi@4
|
114 'type' => 'int',
|
danielebarchiesi@4
|
115 'unsigned' => TRUE,
|
danielebarchiesi@4
|
116 'not null' => TRUE,
|
danielebarchiesi@4
|
117 ),
|
danielebarchiesi@4
|
118 'type' => array(
|
danielebarchiesi@4
|
119 'description' => 'The term type. Types should use defined constants.',
|
danielebarchiesi@4
|
120 'type' => 'varchar',
|
danielebarchiesi@4
|
121 'length' => '32',
|
danielebarchiesi@4
|
122 'not null' => TRUE,
|
danielebarchiesi@4
|
123 ),
|
danielebarchiesi@4
|
124 ),
|
danielebarchiesi@4
|
125 'primary key' => array('tid', 'type'),
|
danielebarchiesi@4
|
126 );
|
danielebarchiesi@4
|
127
|
danielebarchiesi@4
|
128 $schema['rdfx_vocabulary_details'] = array(
|
danielebarchiesi@4
|
129 'description' => 'Additional information about a vocabulary.',
|
danielebarchiesi@4
|
130 'fields' => array(
|
danielebarchiesi@4
|
131 'gid' => array(
|
danielebarchiesi@4
|
132 'description' => 'The {rdfx_vocabulary_graphs}.gid of the vocabulary graph.',
|
danielebarchiesi@4
|
133 'type' => 'int',
|
danielebarchiesi@4
|
134 'unsigned' => TRUE,
|
danielebarchiesi@4
|
135 'not null' => TRUE,
|
danielebarchiesi@4
|
136 ),
|
danielebarchiesi@4
|
137 'language' => array(
|
danielebarchiesi@4
|
138 'description' => 'The language code. Language codes should follow the format in _locale_get_predefined_list() in includes/iso.inc.',
|
danielebarchiesi@4
|
139 'type' => 'varchar',
|
danielebarchiesi@4
|
140 'length' => '12',
|
danielebarchiesi@4
|
141 'not null' => TRUE,
|
danielebarchiesi@4
|
142 ),
|
danielebarchiesi@4
|
143 'label' => array(
|
danielebarchiesi@4
|
144 'description' => 'The name of the vocabulary in language.',
|
danielebarchiesi@4
|
145 'type' => 'varchar',
|
danielebarchiesi@4
|
146 'length' => '255',
|
danielebarchiesi@4
|
147 'not null' => FALSE,
|
danielebarchiesi@4
|
148 ),
|
danielebarchiesi@4
|
149 'description' => array(
|
danielebarchiesi@4
|
150 'description' => 'The description of the vocabulary in language',
|
danielebarchiesi@4
|
151 'type' => 'varchar',
|
danielebarchiesi@4
|
152 'length' => '4095',
|
danielebarchiesi@4
|
153 'not null' => FALSE,
|
danielebarchiesi@4
|
154 ),
|
danielebarchiesi@4
|
155 ),
|
danielebarchiesi@4
|
156 'primary key' => array('gid', 'language'),
|
danielebarchiesi@4
|
157 );
|
danielebarchiesi@4
|
158
|
danielebarchiesi@4
|
159 $schema['rdfx_term_details'] = array(
|
danielebarchiesi@4
|
160 'description' => 'Additional information about a term. Only terms within the main_ns of a vocabulary graph should have term details.',
|
danielebarchiesi@4
|
161 'fields' => array(
|
danielebarchiesi@4
|
162 'tid' => array(
|
danielebarchiesi@4
|
163 'description' => 'The {rdfx_terms}.tid of the term.',
|
danielebarchiesi@4
|
164 'type' => 'int',
|
danielebarchiesi@4
|
165 'unsigned' => TRUE,
|
danielebarchiesi@4
|
166 'not null' => TRUE,
|
danielebarchiesi@4
|
167 ),
|
danielebarchiesi@4
|
168 'language' => array(
|
danielebarchiesi@4
|
169 'description' => 'The language code. Language codes should follow the format in _locale_get_predefined_list() in includes/iso.inc.',
|
danielebarchiesi@4
|
170 'type' => 'varchar',
|
danielebarchiesi@4
|
171 'length' => '12',
|
danielebarchiesi@4
|
172 'not null' => TRUE,
|
danielebarchiesi@4
|
173 ),
|
danielebarchiesi@4
|
174 'label' => array(
|
danielebarchiesi@4
|
175 'description' => 'The label for term tid in language.',
|
danielebarchiesi@4
|
176 'type' => 'varchar',
|
danielebarchiesi@4
|
177 'length' => '255',
|
danielebarchiesi@4
|
178 'not null' => FALSE,
|
danielebarchiesi@4
|
179 ),
|
danielebarchiesi@4
|
180 'comment' => array(
|
danielebarchiesi@4
|
181 'description' => 'The comment for term tid in language',
|
danielebarchiesi@4
|
182 'type' => 'varchar',
|
danielebarchiesi@4
|
183 'length' => '4095',
|
danielebarchiesi@4
|
184 'not null' => FALSE,
|
danielebarchiesi@4
|
185 ),
|
danielebarchiesi@4
|
186 ),
|
danielebarchiesi@4
|
187 'primary key' => array('tid', 'language'),
|
danielebarchiesi@4
|
188 );
|
danielebarchiesi@4
|
189
|
danielebarchiesi@4
|
190 $schema['rdfx_term_domains'] = array(
|
danielebarchiesi@4
|
191 'description' => 'Domains of properties. Properties within the main_ns can declare classes outside of the main_ns as domains, but not vice versa.',
|
danielebarchiesi@4
|
192 'fields' => array(
|
danielebarchiesi@4
|
193 'tid' => array(
|
danielebarchiesi@4
|
194 'description' => 'The {rdfx_terms}.tid of the property.',
|
danielebarchiesi@4
|
195 'type' => 'int',
|
danielebarchiesi@4
|
196 'unsigned' => TRUE,
|
danielebarchiesi@4
|
197 'not null' => TRUE,
|
danielebarchiesi@4
|
198 ),
|
danielebarchiesi@4
|
199 'domain_tid' => array(
|
danielebarchiesi@4
|
200 'description' => 'The {rdfx_terms}.tid of the domain class.',
|
danielebarchiesi@4
|
201 'type' => 'int',
|
danielebarchiesi@4
|
202 'unsigned' => TRUE,
|
danielebarchiesi@4
|
203 'not null' => TRUE,
|
danielebarchiesi@4
|
204 ),
|
danielebarchiesi@4
|
205 ),
|
danielebarchiesi@4
|
206 'primary key' => array('tid', 'domain_tid'),
|
danielebarchiesi@4
|
207 );
|
danielebarchiesi@4
|
208
|
danielebarchiesi@4
|
209 $schema['rdfx_term_inverses'] = array(
|
danielebarchiesi@4
|
210 'description' => 'Inverse properties.',
|
danielebarchiesi@4
|
211 'fields' => array(
|
danielebarchiesi@4
|
212 'tid' => array(
|
danielebarchiesi@4
|
213 'description' => 'The {rdfx_terms}.tid of the property.',
|
danielebarchiesi@4
|
214 'type' => 'int',
|
danielebarchiesi@4
|
215 'unsigned' => TRUE,
|
danielebarchiesi@4
|
216 'not null' => TRUE,
|
danielebarchiesi@4
|
217 ),
|
danielebarchiesi@4
|
218 'inverse_tid' => array(
|
danielebarchiesi@4
|
219 'description' => 'The {rdfx_terms}.tid of the inverse property.',
|
danielebarchiesi@4
|
220 'type' => 'int',
|
danielebarchiesi@4
|
221 'unsigned' => TRUE,
|
danielebarchiesi@4
|
222 'not null' => TRUE,
|
danielebarchiesi@4
|
223 ),
|
danielebarchiesi@4
|
224 ),
|
danielebarchiesi@4
|
225 'primary key' => array('tid', 'inverse_tid'),
|
danielebarchiesi@4
|
226 );
|
danielebarchiesi@4
|
227
|
danielebarchiesi@4
|
228 $schema['rdfx_term_ranges'] = array(
|
danielebarchiesi@4
|
229 'description' => 'Ranges of properties. Properties within the main_ns can declare classes outside of the main_ns as ranges, but not vice versa.',
|
danielebarchiesi@4
|
230 'fields' => array(
|
danielebarchiesi@4
|
231 'tid' => array(
|
danielebarchiesi@4
|
232 'description' => 'The {rdfx_terms}.tid of the property.',
|
danielebarchiesi@4
|
233 'type' => 'int',
|
danielebarchiesi@4
|
234 'unsigned' => TRUE,
|
danielebarchiesi@4
|
235 'not null' => TRUE,
|
danielebarchiesi@4
|
236 ),
|
danielebarchiesi@4
|
237 'range_tid' => array(
|
danielebarchiesi@4
|
238 'description' => 'The {rdfx_terms}.tid of the range class.',
|
danielebarchiesi@4
|
239 'type' => 'int',
|
danielebarchiesi@4
|
240 'unsigned' => TRUE,
|
danielebarchiesi@4
|
241 'not null' => TRUE,
|
danielebarchiesi@4
|
242 ),
|
danielebarchiesi@4
|
243 ),
|
danielebarchiesi@4
|
244 'primary key' => array('tid', 'range_tid'),
|
danielebarchiesi@4
|
245 );
|
danielebarchiesi@4
|
246
|
danielebarchiesi@4
|
247 $schema['rdfx_term_superclasses'] = array(
|
danielebarchiesi@4
|
248 'description' => 'Superclasses of classes. Classes within the main_ns can declare classes outside of the main_ns as superclasses, but not as subclasses.',
|
danielebarchiesi@4
|
249 'fields' => array(
|
danielebarchiesi@4
|
250 'tid' => array(
|
danielebarchiesi@4
|
251 'description' => 'The {rdfx_terms}.tid of the subclass.',
|
danielebarchiesi@4
|
252 'type' => 'int',
|
danielebarchiesi@4
|
253 'unsigned' => TRUE,
|
danielebarchiesi@4
|
254 'not null' => TRUE,
|
danielebarchiesi@4
|
255 ),
|
danielebarchiesi@4
|
256 'superclass_tid' => array(
|
danielebarchiesi@4
|
257 'description' => 'The {rdfx_terms}.tid of the superclass.',
|
danielebarchiesi@4
|
258 'type' => 'int',
|
danielebarchiesi@4
|
259 'unsigned' => TRUE,
|
danielebarchiesi@4
|
260 'not null' => TRUE,
|
danielebarchiesi@4
|
261 ),
|
danielebarchiesi@4
|
262 ),
|
danielebarchiesi@4
|
263 'primary key' => array('tid', 'superclass_tid'),
|
danielebarchiesi@4
|
264 );
|
danielebarchiesi@4
|
265
|
danielebarchiesi@4
|
266 $schema['rdfx_term_superproperties'] = array(
|
danielebarchiesi@4
|
267 'description' => 'Superproperties of properties. Properties within the main_ns can declare properties outside of the main_ns as superproperties, but not as subproperties.',
|
danielebarchiesi@4
|
268 'fields' => array(
|
danielebarchiesi@4
|
269 'tid' => array(
|
danielebarchiesi@4
|
270 'description' => 'The {rdfx_terms}.tid of the subproperty.',
|
danielebarchiesi@4
|
271 'type' => 'int',
|
danielebarchiesi@4
|
272 'unsigned' => TRUE,
|
danielebarchiesi@4
|
273 'not null' => TRUE,
|
danielebarchiesi@4
|
274 ),
|
danielebarchiesi@4
|
275 'superproperty_tid' => array(
|
danielebarchiesi@4
|
276 'description' => 'The {rdfx_terms}.tid of the superproperty.',
|
danielebarchiesi@4
|
277 'type' => 'int',
|
danielebarchiesi@4
|
278 'unsigned' => TRUE,
|
danielebarchiesi@4
|
279 'not null' => TRUE,
|
danielebarchiesi@4
|
280 ),
|
danielebarchiesi@4
|
281 ),
|
danielebarchiesi@4
|
282 'primary key' => array('tid', 'superproperty_tid'),
|
danielebarchiesi@4
|
283 );
|
danielebarchiesi@4
|
284
|
danielebarchiesi@4
|
285 return $schema;
|
danielebarchiesi@4
|
286 }
|
danielebarchiesi@4
|
287
|
danielebarchiesi@4
|
288 /**
|
danielebarchiesi@4
|
289 * Enable entity module (new dependency).
|
danielebarchiesi@4
|
290 */
|
danielebarchiesi@4
|
291 function rdfx_update_7001() {
|
danielebarchiesi@4
|
292 module_enable(array(entity));
|
danielebarchiesi@4
|
293 drupal_set_message('The Entity API module is now required by the RDFx module and has been enabled.');
|
danielebarchiesi@4
|
294 }
|
danielebarchiesi@4
|
295
|
danielebarchiesi@4
|
296 /**
|
danielebarchiesi@4
|
297 * Move the ARC2 library to the new location if the libraries module is used.
|
danielebarchiesi@4
|
298 */
|
danielebarchiesi@4
|
299 function rdfx_update_7002() {
|
danielebarchiesi@4
|
300 if (module_exists('libraries') && is_dir(libraries_get_path('arc'))) {
|
danielebarchiesi@4
|
301 if (mkdir(libraries_get_path('ARC2')) && rename(libraries_get_path('arc'), libraries_get_path('ARC2') . '/arc')) {
|
danielebarchiesi@4
|
302 drupal_set_message('The ARC2 library has been moved to its new location.');
|
danielebarchiesi@4
|
303 }
|
danielebarchiesi@4
|
304 else {
|
danielebarchiesi@4
|
305 drupal_set_message('There was a problem while moving the ARC library to its new location.', 'error');
|
danielebarchiesi@4
|
306 }
|
danielebarchiesi@4
|
307 }
|
danielebarchiesi@4
|
308 }
|