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 }