View Javadoc
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 }