1 /*
2 * #%L
3 * SUMARiS
4 * %%
5 * Copyright (C) 2019 SUMARiS Consortium
6 * %%
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as
9 * published by the Free Software Foundation, either version 3 of the
10 * License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public
18 * License along with this program. If not, see
19 * <http://www.gnu.org/licenses/gpl-3.0.html>.
20 * #L%
21 */
22
23 package net.sumaris.rdf.service;
24
25 import net.sumaris.rdf.dao.cache.RdfCacheNames;
26 import org.apache.jena.ontology.OntModel;
27 import org.apache.jena.rdf.model.Model;
28 import org.springframework.cache.annotation.Cacheable;
29 import org.springframework.transaction.annotation.Transactional;
30
31 import javax.annotation.Nullable;
32
33 @Transactional(readOnly = true)
34 public interface RdfExportService {
35
36 OntModel createOntModel(String uri);
37
38 @Cacheable(cacheNames = RdfCacheNames.ONTOLOGY_BY_NAME, key="#domain + #options.hashCode()", condition = " #options != null", unless = "#result == null")
39 OntModel getOntModelWithClasses(String domain, @Nullable RdfExportOptions options);
40
41 //@Cacheable(cacheNames = RdfCacheNames.ONTOLOGY_BY_NAME, key="#modelSuffix + #options.hashCode()", unless = "#result == null || #options == null")
42 //OntModel getOntologyByDomainAndClass(String modelSuffix, String className, @Nullable RdfModelExportOptions options);
43
44 Model getOntModelWithInstances(String domain, RdfExportOptions options);
45 }