Skip to content

Commit 078af89

Browse files
committed
GH-4622 add test
1 parent c0ab946 commit 078af89

File tree

1 file changed

+63
-2
lines changed

1 file changed

+63
-2
lines changed

tools/server/src/test/java/org/eclipse/rdf4j/http/server/TransactionSettingsIT.java

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,34 @@
1212

1313
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
1414

15+
import java.io.IOException;
1516
import java.io.StringReader;
17+
import java.util.List;
18+
import java.util.stream.Collectors;
1619

1720
import org.eclipse.rdf4j.common.transaction.IsolationLevels;
1821
import org.eclipse.rdf4j.http.client.shacl.RemoteShaclValidationException;
1922
import org.eclipse.rdf4j.http.protocol.Protocol;
23+
import org.eclipse.rdf4j.model.BNode;
24+
import org.eclipse.rdf4j.model.Model;
2025
import org.eclipse.rdf4j.model.Resource;
26+
import org.eclipse.rdf4j.model.Statement;
27+
import org.eclipse.rdf4j.model.Value;
2128
import org.eclipse.rdf4j.model.ValueFactory;
2229
import org.eclipse.rdf4j.model.impl.SimpleValueFactory;
30+
import org.eclipse.rdf4j.model.util.Values;
2331
import org.eclipse.rdf4j.model.vocabulary.RDF;
2432
import org.eclipse.rdf4j.model.vocabulary.RDF4J;
2533
import org.eclipse.rdf4j.model.vocabulary.RDFS;
34+
import org.eclipse.rdf4j.model.vocabulary.SHACL;
2635
import org.eclipse.rdf4j.repository.Repository;
2736
import org.eclipse.rdf4j.repository.RepositoryConnection;
2837
import org.eclipse.rdf4j.repository.RepositoryException;
2938
import org.eclipse.rdf4j.repository.http.HTTPRepository;
3039
import org.eclipse.rdf4j.rio.RDFFormat;
3140
import org.eclipse.rdf4j.sail.shacl.ShaclSail;
3241
import org.junit.jupiter.api.AfterAll;
42+
import org.junit.jupiter.api.Assertions;
3343
import org.junit.jupiter.api.BeforeAll;
3444
import org.junit.jupiter.api.BeforeEach;
3545
import org.junit.jupiter.api.Test;
@@ -67,11 +77,12 @@ public static void stopServer() throws Exception {
6777
"ex:PersonShape\n" +
6878
"\ta sh:NodeShape ;\n" +
6979
"\tsh:targetClass rdfs:Resource ;\n" +
70-
"\tsh:property ex:PersonShapeProperty .\n" +
80+
"\tsh:property _:bnode .\n" +
7181
"\n" +
7282
"\n" +
73-
"ex:PersonShapeProperty\n" +
83+
"_:bnode\n" +
7484
" sh:path rdfs:label ;\n" +
85+
" rdfs:label \"abc\" ;\n" +
7586
" sh:minCount 1 .";
7687

7788
@BeforeEach
@@ -231,4 +242,54 @@ public void testValidationDisabledSnapshotSerializableValidation() throws Throwa
231242

232243
}
233244

245+
@Test
246+
public void testBlankNodeIdsPreserved() throws IOException {
247+
248+
Repository repository = new HTTPRepository(
249+
Protocol.getRepositoryLocation(TestServer.SERVER_URL, TestServer.TEST_SHACL_REPO_ID));
250+
251+
try (RepositoryConnection connection = repository.getConnection()) {
252+
connection.begin();
253+
connection.add(new StringReader(shacl), "", RDFFormat.TURTLE, RDF4J.SHACL_SHAPE_GRAPH);
254+
connection.commit();
255+
}
256+
257+
try (RepositoryConnection connection = repository.getConnection()) {
258+
connection.begin();
259+
connection.add(RDFS.RESOURCE, RDF.TYPE, RDFS.RESOURCE);
260+
connection.commit();
261+
} catch (RepositoryException repositoryException) {
262+
263+
Model validationReport = ((RemoteShaclValidationException) repositoryException.getCause())
264+
.validationReportAsModel();
265+
266+
BNode shapeBnode = (BNode) validationReport
267+
.filter(null, SHACL.SOURCE_SHAPE, null)
268+
.objects()
269+
.stream()
270+
.findAny()
271+
.orElseThrow();
272+
273+
try (RepositoryConnection connection = repository.getConnection()) {
274+
List<Statement> collect = connection
275+
.getStatements(shapeBnode, null, null, RDF4J.SHACL_SHAPE_GRAPH)
276+
.stream()
277+
.collect(Collectors.toList());
278+
279+
Assertions.assertEquals(3, collect.size());
280+
281+
Value rdfsLabel = collect
282+
.stream()
283+
.filter(s -> s.getPredicate().equals(RDFS.LABEL))
284+
.map(Statement::getObject)
285+
.findAny()
286+
.orElseThrow();
287+
288+
Assertions.assertEquals(Values.literal("abc"), rdfsLabel);
289+
290+
}
291+
}
292+
293+
}
294+
234295
}

0 commit comments

Comments
 (0)