1 /*
2 * Copyright 2018-2022 Medical Information Systems Research Group (https://medical.zcu.cz),
3 * Department of Computer Science and Engineering, University of West Bohemia.
4 * Address: Univerzitni 8, 306 14 Plzen, Czech Republic.
5 *
6 * Author Petr Vcelak (vcelak@kiv.zcu.cz).
7 *
8 * This file is part of MRECore project.
9 *
10 * MRECore is free software: you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation, either version 3 of the License.
13 *
14 * MRECore is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with MRECore. If not, see <http://www.gnu.org/licenses/>.
21 */
22 package cz.zcu.mre.service.data;
23
24 import cz.zcu.mre.data.rdf.VocabularyWrapper;
25 import java.util.List;
26 import org.apache.jena.rdf.model.Resource;
27 import org.springframework.beans.factory.InitializingBean;
28
29 /**
30 * Vocabulary Service interface. Implementation should take care of providing
31 * vocabulary items.
32 *
33 * @author Petr Vcelak (vcelak@kiv.zcu.cz)
34 */
35 public interface VocabularyService extends InitializingBean {
36
37 /**
38 * Get all vocabulary items.
39 *
40 * @param rdfClass Vocabulary class as a String.
41 * @return List of items as NamedIndividual instances.
42 */
43 List<VocabularyWrapper> itemsList(String rdfClass);
44
45 /**
46 * Get all vocabulary items.
47 *
48 * @param rdfClass Vocabulary class.
49 * @return List of items as NamedIndividual instances.
50 */
51 List<VocabularyWrapper> itemsList(Resource rdfClass);
52
53 /**
54 * Check whether any item exists.
55 *
56 * @param ontClass Vocabulary class.
57 * @return true if exist, false if no item exist.
58 */
59 boolean itemExist(final Resource ontClass);
60
61 /**
62 * Get the item of the vocabulary by its code.
63 *
64 * @param ontClass Vocabulary class.
65 * @param itemCode Item code.
66 * @return Instance of the NamedIndividual.
67 */
68 VocabularyWrapper itemByCode(final Resource ontClass, final String itemCode);
69
70 /**
71 * Check whether item with the code exist in the specified vocabulary.
72 *
73 * @param ontClass Vocabulary class.
74 * @param itemCode Item code.
75 * @return True it item exist, false otherwise.
76 */
77 boolean itemByCodeExist(Resource ontClass, String itemCode);
78
79 /**
80 * Get the item of the vocabulary by its number.
81 *
82 * @param ontClass Vocabulary class.
83 * @param number Item number.
84 * @return Instance of the NamedIndividual.
85 */
86 VocabularyWrapper itemByNumber(final Resource ontClass, final int number);
87
88 /**
89 * Check whether an item with the number exists.
90 *
91 * @param ontClass Vocabulary class.
92 * @param number Item number.
93 * @return True if exist, false otherwise.
94 */
95 boolean itemByNumberExist(final Resource ontClass, final int number);
96
97 /**
98 * List items filtered by age and sex of patient.
99 *
100 * @param ontClass Vocabulary class.
101 * @param age Patient's age.
102 * @param sex Patient's sex.
103 * @return List of individuals for the Vocabulary class.
104 */
105 List<VocabularyWrapper> itemsFilteredByAgeSex(Resource ontClass, int age, String sex);
106
107 /**
108 * Get default item. The default item has number 1 or has flagged as
109 * default.
110 *
111 * @param ontClass Type of class as a String.
112 * @return NamedIndividual of the class. Null on no instance.
113 */
114 VocabularyWrapper itemDefault(String ontClass);
115
116 /**
117 * Get default item. The default item has number 1 or has flagged as
118 * default.
119 *
120 * @param ontClass Type of class.
121 * @return NamedIndividual of the class. Null on no instance.
122 */
123 VocabularyWrapper itemDefault(final Resource ontClass);
124
125 /**
126 * Get the first item.
127 *
128 * @param ontClass Type of class.
129 * @return NamedIndividual of the class. Null on no instance.
130 */
131 VocabularyWrapper itemFirst(final Resource ontClass);
132
133 /**
134 * Get the last item.
135 *
136 * @param ontClass Type of class.
137 * @return NamedIndividual of the class. Null on no instance.
138 */
139 VocabularyWrapper itemLast(final Resource ontClass);
140
141 /**
142 * Get the number of available vocabulary items.
143 *
144 * @param ontClass Type of class.
145 * @return Zero or positive integer number.
146 */
147 int itemCount(final Resource ontClass);
148
149 /**
150 * Get VocabularyWrapper for specified uri.
151 *
152 * @param uri URI of the vocabulary item (Individual).
153 * @return VocabularyWrapper instance or null.
154 */
155 VocabularyWrapper item(String uri);
156
157 /**
158 * Get the resource label.
159 *
160 * @param resource The resource.
161 * @return The label.
162 */
163 String label(Resource resource);
164
165 /**
166 * Get the resource code.
167 *
168 * @param resource The resource.
169 * @return The label.
170 */
171 String code(Resource resource);
172
173 }