1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.rdf.rdf4j;
19
20 import java.io.IOException;
21 import java.io.UncheckedIOException;
22 import java.util.Collections;
23 import java.util.Set;
24
25 import org.apache.commons.rdf.api.AbstractGraphTest;
26 import org.apache.commons.rdf.api.BlankNodeOrIRI;
27 import org.apache.commons.rdf.api.Dataset;
28 import org.apache.commons.rdf.api.IRI;
29 import org.apache.commons.rdf.api.Literal;
30 import org.apache.commons.rdf.api.Quad;
31 import org.apache.commons.rdf.api.RDFTerm;
32 import org.apache.commons.rdf.api.RDF;
33 import org.eclipse.rdf4j.repository.RepositoryConnection;
34 import org.eclipse.rdf4j.repository.RepositoryResult;
35 import org.eclipse.rdf4j.repository.sail.SailRepository;
36 import org.eclipse.rdf4j.sail.Sail;
37 import org.eclipse.rdf4j.sail.nativerdf.NativeStore;
38 import org.junit.After;
39 import org.junit.Rule;
40 import org.junit.rules.TemporaryFolder;
41 import org.junit.rules.Timeout;
42
43
44
45
46
47
48
49
50
51 public class NativeStoreGraphTest extends AbstractGraphTest {
52
53 public final class NativeStoreRDF implements RDF {
54
55 RDF4J rdf4jFactory = new RDF4J(getRepository().getValueFactory());
56
57 @Override
58 public RDF4JGraph createGraph() {
59
60
61 final Set<RDF4JBlankNode> context = Collections.singleton(rdf4jFactory.createBlankNode());
62 return rdf4jFactory.asGraph(getRepository(), context);
63 }
64
65 @Override
66 public Dataset createDataset() {
67 throw new UnsupportedOperationException("Can't create more than one Dataset in this test");
68
69
70 }
71
72
73 @Override
74 public RDF4JBlankNode createBlankNode() {
75 return rdf4jFactory.createBlankNode();
76 }
77
78 @Override
79 public RDF4JBlankNode createBlankNode(final String name) {
80 return rdf4jFactory.createBlankNode(name);
81 }
82
83 @Override
84 public RDF4JIRI createIRI(final String iri) throws IllegalArgumentException, UnsupportedOperationException {
85 return rdf4jFactory.createIRI(iri);
86 }
87
88 @Override
89 public RDF4JLiteral createLiteral(final String lexicalForm) {
90 return rdf4jFactory.createLiteral(lexicalForm);
91 }
92
93 @Override
94 public Literal createLiteral(final String lexicalForm, final IRI dataType) {
95 return rdf4jFactory.createLiteral(lexicalForm, dataType);
96 }
97
98 @Override
99 public Literal createLiteral(final String lexicalForm, final String languageTag) {
100 return rdf4jFactory.createLiteral(lexicalForm, languageTag);
101 }
102
103 @Override
104 public RDF4JTriple createTriple(final BlankNodeOrIRI subject, final IRI predicate, final RDFTerm object) {
105 return rdf4jFactory.createTriple(subject, predicate, object);
106 }
107
108 @Override
109 public Quad createQuad(final BlankNodeOrIRI graphName, final BlankNodeOrIRI subject, final IRI predicate, final RDFTerm object)
110 throws IllegalArgumentException {
111 return rdf4jFactory.createQuad(graphName, subject, predicate, object);
112 }
113 }
114
115 @Rule
116 public TemporaryFolder tempDir = new TemporaryFolder();
117
118 private SailRepository repository;
119
120 public void createRepository() throws IOException {
121 final Sail sail = new NativeStore(tempDir.newFolder());
122 repository = new SailRepository(sail);
123 repository.initialize();
124 }
125
126 public synchronized SailRepository getRepository() {
127 if (repository == null) {
128 try {
129 createRepository();
130 } catch (final IOException e) {
131 throw new UncheckedIOException(e);
132 }
133 }
134 return repository;
135 }
136
137 @Rule
138
139
140
141
142 public Timeout globalTimeout = Timeout.seconds(15);
143
144 @After
145 public void shutdownAndDelete() {
146
147 if (repository != null) {
148 System.out.print("Shutting down rdf4j repository " + repository + "...");
149
150
151
152
153
154 repository.shutDown();
155 System.out.println("OK");
156 }
157 }
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177 @Override
178 public RDF createFactory() {
179 return new NativeStoreRDF();
180 }
181
182 }