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.core.MREData;
25 import java.util.List;
26 import java.util.stream.Stream;
27 import org.apache.jena.query.QuerySolution;
28 import org.apache.jena.rdf.model.Resource;
29
30 /**
31 * MRE Data Service Interface.
32 *
33 * @author Petr Vcelak (vcelak@kiv.zcu.cz)
34 */
35 public interface MREDataService extends DataService<MREData> {
36
37 @Override
38 MREData createInstance(MREData example);
39
40 @Override
41 MREData createInstance(MREData example, Resource uri);
42
43 @Override
44 MREData createInstance(Resource type);
45
46 @Override
47 MREData createInstance(Resource type, Resource uri);
48
49 @Override
50 MREData createInstance(String typeURI);
51
52 @Override
53 MREData createInstance(String typeURI, Resource uri);
54
55 /**
56 * ASK if instance is persistent.
57 *
58 * @param instance MREDatahe MREData instance.
59 * @return true or false.
60 */
61 @Override
62 boolean isPersistent(MREData instance);
63
64 /**
65 * Save MREData instance.
66 *
67 * @param instance MREDatahe instance.
68 * @return status.
69 */
70 @Override
71 boolean save(MREData instance);
72
73 /**
74 * Deeply save MREData instance.
75 *
76 * @param instance MREDatahe MREData instance.
77 * @return status.
78 */
79 @Override
80 boolean saveAll(MREData instance);
81
82 /**
83 * Insert MREData instance.
84 *
85 * @param instance MREDatahe MREData instance.
86 * @return status.
87 */
88 @Override
89 boolean insert(MREData instance);
90
91 /**
92 * Deeply insert MREData instance.
93 *
94 * @param instance MREDatahe MREData instance.
95 * @return status.
96 */
97 @Override
98 boolean insertAll(MREData instance);
99
100 /**
101 * Update MREData instance.
102 *
103 * @param instance MREDatahe instance.
104 * @return status.
105 */
106 @Override
107 boolean update(MREData instance);
108
109 /**
110 * Deeply update MREData instance.
111 *
112 * @param instance MREDatahe instance.
113 * @return status.
114 */
115 @Override
116 boolean updateAll(MREData instance);
117
118 /**
119 * Delete MREData instance.
120 *
121 * @param instance MREDatahe instance.
122 * @return status.
123 */
124 @Override
125 boolean delete(MREData instance);
126
127 /**
128 * Deeply delete MREData instance.
129 *
130 * @param instance MREDatahe instance.
131 * @return status.
132 */
133 @Override
134 boolean deleteAll(MREData instance);
135
136 /**
137 * Get the stream of MREData instances found by rdf:type.
138 *
139 * @param type RDF class as a type for instances.
140 * @return Stream of MREData instances.
141 */
142 @Override
143 Stream<MREData> stream(String type);
144
145 /**
146 * Get the stream of MREData instances found by rdf:type.
147 *
148 * @param type RDF class as a type for instances.
149 * @return Stream of MREData instances.
150 */
151 @Override
152 Stream<MREData> stream(Resource type);
153
154 /**
155 * Get the stream of MREData instances found by example.
156 *
157 * @param example An example.
158 * @return Stream of MREData instances.
159 */
160 @Override
161 Stream<MREData> stream(MREData example);
162
163
164
165 /**
166 * Parse List of QuerySolution instances to build MREData instances as a
167 * stream.
168 *
169 * TODO can be improved when result ordered by resource URI.
170 *
171 * @param result MRE-query result as a List of QuerySolution instances.
172 * @return Stream with MREData instances.
173 */
174 @Override
175 Stream<MREData> asStream(List<QuerySolution> result);
176
177 /**
178 * Get the stream of all MREData instances.
179 *
180 * @param example An example.
181 * @return Stream of MREData instances.
182 */
183 @Override
184 Stream<MREData> streamAll(MREData example);
185
186 /**
187 * Get the list of MREData instances found by rdf:type.
188 *
189 * @param type RDF class as a type for instances.
190 * @return List of MREData instances.
191 */
192 @Override
193 List<MREData> list(String type);
194
195 /**
196 * Get the list of MREData instances found by rdf:type.
197 *
198 * @param type RDF class as a type for instances.
199 * @return List of MREData instances.
200 */
201 @Override
202 List<MREData> list(Resource type);
203
204 /**
205 * Get list of MREData instances found by example.
206 *
207 * @param example An example.
208 * @return List of MREData instances.
209 */
210 @Override
211 List<MREData> list(MREData example);
212
213 /**
214 * Get list of all MREData instances.
215 *
216 * @param example An example class.
217 * @return List of all MREData instances.
218 */
219 @Override
220 List<MREData> listAll(MREData example);
221
222 /**
223 * Get the MREData instance by its URI.
224 *
225 * @param resourceUri MREDatahe URI as a String.
226 * @return Null or MREData instance.
227 */
228 @Override
229 MREData get(String resourceUri);
230
231 /**
232 * Get the MREData instance by its URI and values of all fields with
233 * primitive types.
234 *
235 * @param resourceUri MREDatahe URI as a Resource.
236 * @return Null or MREData instance.
237 */
238 @Override
239 MREData get(Resource resourceUri);
240
241 /**
242 * Get the MREData instance by its URI.
243 *
244 * @param resourceUri The URI as a Resource.
245 * @return Null or MREData instance.
246 */
247 @Override
248 MREData getAll(Resource resourceUri);
249
250 /**
251 * Get one MREData instance by example and values of all fields with
252 * primitive types.
253 *
254 * @param example An example.
255 * @return Null or MREData instance.
256 */
257 @Override
258 MREData get(MREData example);
259
260 /**
261 * Get one MREData instance by example.
262 *
263 * @param example An example.
264 * @return Null or MREData instance.
265 */
266 @Override
267 MREData getAll(MREData example);
268
269 /**
270 * User-defined SELECMREData query.
271 *
272 * @param query SPARQL.
273 * @return Stream of QuerySolution instances.
274 */
275 @Override
276 Stream<QuerySolution> select(String query);
277
278 public MREDataFieldValue[] builderValuesGet(Object instance);
279
280 public boolean isPrimitiveDataType(Object instance);
281 }