|
20 | 20 | import org.eclipse.rdf4j.model.Model; |
21 | 21 | import org.eclipse.rdf4j.model.impl.DynamicModelFactory; |
22 | 22 | import org.eclipse.rdf4j.model.util.Models; |
| 23 | +import org.eclipse.rdf4j.model.vocabulary.RDFS; |
23 | 24 | import org.eclipse.rdf4j.rio.RDFFormat; |
24 | 25 | import org.eclipse.rdf4j.rio.Rio; |
25 | 26 | import org.eclipse.rdf4j.rio.WriterConfig; |
@@ -97,7 +98,6 @@ public void testBlankNodeInlining1() throws Exception { |
97 | 98 | Model actual = Rio.parse(new StringReader(stringWriter.toString()), "", RDFFormat.TURTLE); |
98 | 99 |
|
99 | 100 | assertTrue(Models.isomorphic(expected, actual)); |
100 | | - |
101 | 101 | } |
102 | 102 |
|
103 | 103 | @Test |
@@ -194,6 +194,54 @@ public void testNoBuffering() throws Exception { |
194 | 194 | assertTrue(Models.isomorphic(expected, actual)); |
195 | 195 | } |
196 | 196 |
|
| 197 | + @Test |
| 198 | + public void testUnusualIrisAndPrefixesParseWriteCompare() throws Exception { |
| 199 | + String data = "@prefix server-news: <news:comp.infosystems.www.servers.> .\n" + |
| 200 | + "@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n" + |
| 201 | + "server-news:unix rdfs:label \"News on Unix\" .\n" + |
| 202 | + "server-news:windows rdfs:label \"News on Windows\" .\n"; |
| 203 | + |
| 204 | + var expected = Rio.parse(new StringReader(data), "", RDFFormat.TURTLE); |
| 205 | + |
| 206 | + var stringWriter = new StringWriter(); |
| 207 | + var config = new WriterConfig(); |
| 208 | + config.set(BasicWriterSettings.INLINE_BLANK_NODES, false); |
| 209 | + config.set(BasicWriterSettings.PRETTY_PRINT, false); |
| 210 | + Rio.write(expected, stringWriter, RDFFormat.TURTLE, config); |
| 211 | + |
| 212 | + var actual = Rio.parse(new StringReader(stringWriter.toString()), "", RDFFormat.TURTLE); |
| 213 | + assertThat(Models.isomorphic(expected, actual)).as("isomorphic").isTrue(); |
| 214 | + |
| 215 | + assertThat(stringWriter.toString()).isEqualTo(data); |
| 216 | + } |
| 217 | + |
| 218 | + @Test |
| 219 | + public void testUnusualIrisAndPrefixesWriteParserWriteCompare() throws Exception { |
| 220 | + var prefix = "server-news"; |
| 221 | + var ns = "news:comp.infosystems.www.servers."; |
| 222 | + |
| 223 | + var config = new WriterConfig(); |
| 224 | + config.set(BasicWriterSettings.INLINE_BLANK_NODES, false); |
| 225 | + config.set(BasicWriterSettings.PRETTY_PRINT, false); |
| 226 | + |
| 227 | + var expectedModel = new DynamicModelFactory().createEmptyModel(); |
| 228 | + expectedModel.setNamespace(prefix, ns); |
| 229 | + expectedModel.setNamespace(RDFS.PREFIX, RDFS.NAMESPACE); |
| 230 | + expectedModel.add(vf.createIRI(ns, "unix"), RDFS.LABEL, vf.createLiteral("News on Unix")); |
| 231 | + expectedModel.add(vf.createIRI(ns, "windows"), RDFS.LABEL, vf.createLiteral("News on Windows")); |
| 232 | + |
| 233 | + var turtle1 = new StringWriter(); |
| 234 | + Rio.write(expectedModel, turtle1, RDFFormat.TURTLE, config); |
| 235 | + |
| 236 | + var actualModel = Rio.parse(new StringReader(turtle1.toString()), "", RDFFormat.TURTLE); |
| 237 | + assertThat(Models.isomorphic(expectedModel, actualModel)).as("isomorphic").isTrue(); |
| 238 | + |
| 239 | + var turtle2 = new StringWriter(); |
| 240 | + Rio.write(actualModel, turtle2, RDFFormat.TURTLE, config); |
| 241 | + |
| 242 | + assertThat(turtle2.toString()).isEqualTo(turtle1.toString()); |
| 243 | + } |
| 244 | + |
197 | 245 | @Test |
198 | 246 | @Disabled |
199 | 247 | public void anotherBnodeTest() throws Exception { |
|
0 commit comments