1 /* @include ensontology *******************************************************
2 **
3 ** Ensembl Ontology functions
4 **
5 ** @author Copyright (C) 1999 Ensembl Developers
6 ** @author Copyright (C) 2006 Michael K. Schuster
7 ** @version $Revision: 1.6 $
8 ** @modified 2009 by Alan Bleasby for incorporation into EMBOSS core
9 ** @modified $Date: 2012/08/05 11:16:39 $ by $Author: mks $
10 ** @@
11 **
12 ** This library is free software; you can redistribute it and/or
13 ** modify it under the terms of the GNU Lesser General Public
14 ** License as published by the Free Software Foundation; either
15 ** version 2.1 of the License, or (at your option) any later version.
16 **
17 ** This library is distributed in the hope that it will be useful,
18 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
19 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20 ** Lesser General Public License for more details.
21 **
22 ** You should have received a copy of the GNU Lesser General Public
23 ** License along with this library; if not, write to the Free Software
24 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
25 ** MA  02110-1301,  USA.
26 **
27 ******************************************************************************/
28 
29 #ifndef ENSONTOLOGY_H
30 #define ENSONTOLOGY_H
31 
32 /* ========================================================================= */
33 /* ============================= include files ============================= */
34 /* ========================================================================= */
35 
36 #include "ensbaseadaptor.h"
37 
38 AJ_BEGIN_DECLS
39 
40 
41 
42 
43 /* ========================================================================= */
44 /* =============================== constants =============================== */
45 /* ========================================================================= */
46 
47 /* @const EnsPOntologytermadaptor *********************************************
48 **
49 ** Ensembl Ontology Term Adaptor.
50 ** Defined as an alias in EnsPBaseadaptor
51 **
52 ** #alias EnsPBaseadaptor
53 ** ##
54 ******************************************************************************/
55 
56 #define EnsPOntologytermadaptor EnsPBaseadaptor
57 
58 
59 
60 
61 /* ========================================================================= */
62 /* ============================== public data ============================== */
63 /* ========================================================================= */
64 
65 /* @data EnsPOntologyadaptor **************************************************
66 **
67 ** Ensembl Ontology Adaptor
68 **
69 ** @alias EnsSOntologyadaptor
70 ** @alias EnsOOntologyadaptor
71 **
72 ** @attr Adaptor [EnsPBaseadaptor] Ensembl Base Adaptor
73 ** @attr CacheByIdentifier [AjPTable] Identifier cache
74 ** @attr CacheByNamespace [AjPTable] Name space cache
75 ** @@
76 ******************************************************************************/
77 
78 typedef struct EnsSOntologyadaptor
79 {
80     EnsPBaseadaptor Adaptor;
81     AjPTable CacheByIdentifier;
82     AjPTable CacheByNamespace;
83 } EnsOOntologyadaptor;
84 
85 #define EnsPOntologyadaptor EnsOOntologyadaptor*
86 
87 
88 
89 
90 /* @data EnsPOntology *********************************************************
91 **
92 ** Ensembl Ontology
93 **
94 ** @alias EnsSOntology
95 ** @alias EnsOOntology
96 **
97 ** @attr Use [ajuint] Use counter
98 ** @cc Bio::EnsEMBL::Storable
99 ** @attr Identifier [ajuint] SQL database-internal identifier
100 ** @attr Adaptor [EnsPOntologyadaptor] Ensembl Ontology Adaptor
101 ** @cc Bio::EnsEMBL::OntologyTerm
102 ** @attr Name [AjPStr] Name
103 ** @attr Space [AjPStr] Name space
104 ** @@
105 ******************************************************************************/
106 
107 typedef struct EnsSOntology
108 {
109     ajuint Use;
110     ajuint Identifier;
111     EnsPOntologyadaptor Adaptor;
112     AjPStr Name;
113     AjPStr Space;
114 } EnsOOntology;
115 
116 #define EnsPOntology EnsOOntology*
117 
118 
119 
120 
121 /* @data EnsPOntologysynonym **************************************************
122 **
123 ** Ensembl Ontology Synonym
124 **
125 ** @alias EnsSOntologysynonym
126 ** @alias EnsOOntologysynonym
127 **
128 ** @attr Use [ajuint] Use counter
129 ** @cc Bio::EnsEMBL::Storable
130 ** @attr Identifier [ajuint] SQL database-internal identifier
131 ** @attr Adaptor [EnsPOntologytermadaptor] Ensembl Ontology Term Adaptor
132 ** @cc Bio::EnsEMBL::OntologyTerm
133 ** @attr Name [AjPStr] Name
134 ** @@
135 ******************************************************************************/
136 
137 typedef struct EnsSOntologysynonym
138 {
139     ajuint Use;
140     ajuint Identifier;
141     EnsPOntologytermadaptor Adaptor;
142     AjPStr Name;
143 } EnsOOntologysynonym;
144 
145 #define EnsPOntologysynonym EnsOOntologysynonym*
146 
147 
148 
149 
150 /* @data EnsPOntologyterm *****************************************************
151 **
152 ** Ensembl Ontology Term
153 **
154 ** @alias EnsSOntologyterm
155 ** @alias EnsOOntologyterm
156 **
157 ** @attr Use [ajuint] Use counter
158 ** @cc Bio::EnsEMBL::Storable
159 ** @attr Identifier [ajuint] SQL database-internal identifier
160 ** @attr Adaptor [EnsPOntologytermadaptor] Ensembl Ontology Term Adaptor
161 ** @cc Bio::EnsEMBL::OntologyTerm
162 ** @attr Ontology [EnsPOntology] Ensembl Ontology
163 ** @attr Accession [AjPStr] Accession
164 ** @attr Definition [AjPStr] Definition
165 ** @attr Name [AjPStr] Name
166 ** @attr Subsets [AjPStr] Subsets
167 ** @attr Children [AjPTable] AJAX Table of child Ensembl Ontology Term objects
168 ** @attr Parents [AjPTable] AJAX Table of parent Ensembl Ontology Term objects
169 ** @attr Ontologysynonyms [AjPList]
170 ** AJAX List of Ensembl Ontology Synonym objects
171 ** @@
172 ******************************************************************************/
173 
174 typedef struct EnsSOntologyterm
175 {
176     ajuint Use;
177     ajuint Identifier;
178     EnsPOntologytermadaptor Adaptor;
179     EnsPOntology Ontology;
180     AjPStr Accession;
181     AjPStr Definition;
182     AjPStr Name;
183     AjPStr Subsets;
184     AjPTable Children;
185     AjPTable Parents;
186     AjPList Ontologysynonyms;
187 } EnsOOntologyterm;
188 
189 #define EnsPOntologyterm EnsOOntologyterm*
190 
191 
192 
193 
194 /* ========================================================================= */
195 /* =========================== public functions ============================ */
196 /* ========================================================================= */
197 
198 /*
199 ** Prototype definitions
200 */
201 
202 /* Ensembl Ontology */
203 
204 EnsPOntology ensOntologyNewCpy(const EnsPOntology ontology);
205 
206 EnsPOntology ensOntologyNewIni(EnsPOntologyadaptor oa,
207                                ajuint identifier,
208                                AjPStr name,
209                                AjPStr space);
210 
211 EnsPOntology ensOntologyNewRef(EnsPOntology ontology);
212 
213 void ensOntologyDel(EnsPOntology *Pontology);
214 
215 EnsPOntologyadaptor ensOntologyGetAdaptor(const EnsPOntology ontology);
216 
217 ajuint ensOntologyGetIdentifier(const EnsPOntology ontology);
218 
219 AjPStr ensOntologyGetName(const EnsPOntology ontology);
220 
221 AjPStr ensOntologyGetSpace(const EnsPOntology ontology);
222 
223 AjBool ensOntologySetAdaptor(EnsPOntology ontology,
224                              EnsPOntologyadaptor oa);
225 
226 AjBool ensOntologySetIdentifier(EnsPOntology ontology,
227                                 ajuint identifier);
228 
229 AjBool ensOntologySetName(EnsPOntology ontology,
230                           AjPStr name);
231 
232 AjBool ensOntologySetSpace(EnsPOntology ontology,
233                            AjPStr space);
234 
235 AjBool ensOntologyTrace(const EnsPOntology ontology, ajuint level);
236 
237 size_t ensOntologyCalculateMemsize(const EnsPOntology ontology);
238 
239 /* Ensembl Ontology Adaptor */
240 
241 EnsPOntologyadaptor ensRegistryGetOntologyadaptor(
242     EnsPDatabaseadaptor dba);
243 
244 EnsPOntologyadaptor ensOntologyadaptorNew(
245     EnsPDatabaseadaptor dba);
246 
247 void ensOntologyadaptorDel(EnsPOntologyadaptor *Poa);
248 
249 EnsPBaseadaptor ensOntologyadaptorGetBaseadaptor(
250     EnsPOntologyadaptor oa);
251 
252 EnsPDatabaseadaptor ensOntologyadaptorGetDatabaseadaptor(
253     EnsPOntologyadaptor oa);
254 
255 AjBool ensOntologyadaptorFetchAll(EnsPOntologyadaptor oa,
256                                   AjPList ontologies);
257 
258 AjBool ensOntologyadaptorFetchAllbyName(EnsPOntologyadaptor oa,
259                                         const AjPStr name,
260                                         AjPList ontologies);
261 
262 AjBool ensOntologyadaptorFetchByIdentifier(EnsPOntologyadaptor oa,
263                                            ajuint identifier,
264                                            EnsPOntology *Pontology);
265 
266 AjBool ensOntologyadaptorFetchByName(EnsPOntologyadaptor oa,
267                                      const AjPStr name,
268                                      const AjPStr space,
269                                      EnsPOntology *Pontology);
270 
271 /* Ensembl Ontology Synonym */
272 
273 EnsPOntologysynonym ensOntologysynonymNewCpy(const EnsPOntologysynonym os);
274 
275 EnsPOntologysynonym ensOntologysynonymNewIni(EnsPOntologytermadaptor ota,
276                                              ajuint identifier,
277                                              AjPStr name);
278 
279 EnsPOntologysynonym ensOntologysynonymNewRef(EnsPOntologysynonym os);
280 
281 void ensOntologysynonymDel(EnsPOntologysynonym *Pos);
282 
283 EnsPOntologytermadaptor ensOntologysynonymGetAdaptor(
284     const EnsPOntologysynonym os);
285 
286 ajuint ensOntologysynonymGetIdentifier(
287     const EnsPOntologysynonym os);
288 
289 AjPStr ensOntologysynonymGetName(
290     const EnsPOntologysynonym os);
291 
292 AjBool ensOntologysynonymSetAdaptor(EnsPOntologysynonym os,
293                                     EnsPOntologytermadaptor ota);
294 
295 AjBool ensOntologysynonymSetIdentifier(EnsPOntologysynonym os,
296                                        ajuint identifier);
297 
298 AjBool ensOntologysynonymSetName(EnsPOntologysynonym os,
299                                  AjPStr name);
300 
301 AjBool ensOntologysynonymTrace(const EnsPOntologysynonym os, ajuint level);
302 
303 size_t ensOntologysynonymCalculateMemsize(const EnsPOntologysynonym os);
304 
305 /* Ensembl Ontology Term */
306 
307 EnsPOntologyterm ensOntologytermNewCpy(const EnsPOntologyterm ot);
308 
309 EnsPOntologyterm ensOntologytermNewIni(EnsPOntologytermadaptor ota,
310                                        ajuint identifier,
311                                        EnsPOntology ontology,
312                                        AjPStr accession,
313                                        AjPStr description,
314                                        AjPStr name,
315                                        AjPStr subsets);
316 
317 EnsPOntologyterm ensOntologytermNewRef(EnsPOntologyterm ot);
318 
319 void ensOntologytermDel(EnsPOntologyterm *Pot);
320 
321 AjPStr ensOntologytermGetAccession(const EnsPOntologyterm ot);
322 
323 EnsPOntologytermadaptor ensOntologytermGetAdaptor(const EnsPOntologyterm ot);
324 
325 AjPStr ensOntologytermGetDefinition(const EnsPOntologyterm ot);
326 
327 ajuint ensOntologytermGetIdentifier(const EnsPOntologyterm ot);
328 
329 AjPStr ensOntologytermGetName(const EnsPOntologyterm ot);
330 
331 EnsPOntology ensOntologytermGetOntology(const EnsPOntologyterm ot);
332 
333 AjPStr ensOntologytermGetSubsets(const EnsPOntologyterm ot);
334 
335 const AjPList ensOntologytermLoadOntologysynonyms(EnsPOntologyterm ot);
336 
337 AjBool ensOntologytermSetAccession(EnsPOntologyterm ot,
338                                    AjPStr accession);
339 
340 AjBool ensOntologytermSetAdaptor(EnsPOntologyterm ot,
341                                  EnsPOntologytermadaptor ota);
342 
343 AjBool ensOntologytermSetDefinition(EnsPOntologyterm ot,
344                                     AjPStr description);
345 
346 AjBool ensOntologytermSetIdentifier(EnsPOntologyterm ot,
347                                     ajuint identifier);
348 
349 AjBool ensOntologytermSetName(EnsPOntologyterm ot,
350                               AjPStr name);
351 
352 AjBool ensOntologytermSetOntology(EnsPOntologyterm ot,
353                                   EnsPOntology ontology);
354 
355 AjBool ensOntologytermSetSubsets(EnsPOntologyterm ot,
356                                  AjPStr subsets);
357 
358 AjBool ensOntologytermTrace(const EnsPOntologyterm ot, ajuint level);
359 
360 size_t ensOntologytermCalculateMemsize(const EnsPOntologyterm ot);
361 
362 /* Ensembl Ontology Term Adaptor */
363 
364 EnsPOntologytermadaptor ensRegistryGetOntologytermadaptor(
365     EnsPDatabaseadaptor dba);
366 
367 EnsPOntologytermadaptor ensOntologytermadaptorNew(
368     EnsPDatabaseadaptor dba);
369 
370 void ensOntologytermadaptorDel(EnsPOntologytermadaptor *Pota);
371 
372 EnsPBaseadaptor ensOntologytermadaptorGetBaseadaptor(
373     EnsPOntologytermadaptor ota);
374 
375 EnsPDatabaseadaptor ensOntologytermadaptorGetDatabaseadaptor(
376     EnsPOntologytermadaptor ota);
377 
378 AjBool ensOntologytermadaptorFetchAll(
379     EnsPOntologytermadaptor ota,
380     AjPList ots);
381 
382 AjBool ensOntologytermadaptorFetchAllbyAncestor(
383     EnsPOntologytermadaptor ota,
384     EnsPOntologyterm ot,
385     AjPList ots);
386 
387 AjBool ensOntologytermadaptorFetchAllbyChild(
388     EnsPOntologytermadaptor ota,
389     EnsPOntologyterm ot,
390     AjPList ots);
391 
392 AjBool ensOntologytermadaptorFetchAllbyDescendant(
393     EnsPOntologytermadaptor ota,
394     EnsPOntologyterm ot,
395     const AjPStr subset,
396     AjBool closest,
397     AjBool zerodistance,
398     AjPList ots);
399 
400 AjBool ensOntologytermadaptorFetchAllbyName(
401     EnsPOntologytermadaptor ota,
402     const AjPStr termname,
403     const AjPStr ontologyname,
404     AjPList ots);
405 
406 AjBool ensOntologytermadaptorFetchAllbyParent(
407     EnsPOntologytermadaptor ota,
408     EnsPOntologyterm ot,
409     AjPList ots);
410 
411 AjBool ensOntologytermadaptorFetchByAccession(
412     EnsPOntologytermadaptor ota,
413     const AjPStr accession,
414     EnsPOntologyterm *Pot);
415 
416 AjBool ensOntologytermadaptorFetchByIdentifier(
417     EnsPOntologytermadaptor ota,
418     ajuint identifier,
419     EnsPOntologyterm *Pot);
420 
421 AjBool ensOntologytermadaptorRetrieveAllOntologysynonyms(
422     EnsPOntologytermadaptor ota,
423     const EnsPOntologyterm ot,
424     AjPList oss);
425 
426 /*
427 ** End of prototype definitions
428 */
429 
430 
431 
432 
433 AJ_END_DECLS
434 
435 #endif /* !ENSONTOLOGY_H */
436