From 278d3a3a7facc0361f57648fb5aa7836de543f12 Mon Sep 17 00:00:00 2001 From: Chris Beer Date: Wed, 22 Oct 2014 15:27:14 -0700 Subject: [PATCH] Skolemizing triples with a blank node as a subject and object should work --- .../org/fcrepo/kernel/impl/rdf/JcrRdfTools.java | 2 +- .../fcrepo/kernel/impl/rdf/JcrRdfToolsTest.java | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/fcrepo-kernel-impl/src/main/java/org/fcrepo/kernel/impl/rdf/JcrRdfTools.java b/fcrepo-kernel-impl/src/main/java/org/fcrepo/kernel/impl/rdf/JcrRdfTools.java index d970d8daa2..b720686ff3 100644 --- a/fcrepo-kernel-impl/src/main/java/org/fcrepo/kernel/impl/rdf/JcrRdfTools.java +++ b/fcrepo-kernel-impl/src/main/java/org/fcrepo/kernel/impl/rdf/JcrRdfTools.java @@ -344,7 +344,7 @@ public Statement skolemize(final IdentifierConverter i } if (t.getObject().isAnon()) { - skolemized = t.changeObject(getSkolemizedResource(idTranslator, skolemized.getObject())); + skolemized = skolemized.changeObject(getSkolemizedResource(idTranslator, t.getObject())); } else if (t.getObject().isResource() && idTranslator.inDomain(t.getObject().asResource()) && t.getObject().asResource().getURI().contains("#")) { diff --git a/fcrepo-kernel-impl/src/test/java/org/fcrepo/kernel/impl/rdf/JcrRdfToolsTest.java b/fcrepo-kernel-impl/src/test/java/org/fcrepo/kernel/impl/rdf/JcrRdfToolsTest.java index c6dbb9a383..dc6afaff09 100644 --- a/fcrepo-kernel-impl/src/test/java/org/fcrepo/kernel/impl/rdf/JcrRdfToolsTest.java +++ b/fcrepo-kernel-impl/src/test/java/org/fcrepo/kernel/impl/rdf/JcrRdfToolsTest.java @@ -389,6 +389,23 @@ public void shouldSkolemizeBlankNodeObjects() throws RepositoryException { assertEquals("info:fedora/.well-known/x", statement.getObject().toString()); } + @Test + public void shouldSkolemizeBlankNodeSubjectsAndObjects() throws RepositoryException { + final Model m = createDefaultModel(); + final Resource resource = createResource(); + final Statement x = m.createStatement(resource, + createProperty("info:x"), + resource); + testObj.jcrTools = mock(JcrTools.class); + when(testObj.jcrTools.findOrCreateNode(eq(mockSession), anyString())).thenReturn(mockNode); + when(mockNode.getPath()).thenReturn("/.well-known/x"); + final Statement statement = testObj.skolemize(testSubjects, x); + + + assertEquals("info:fedora/.well-known/x", statement.getSubject().toString()); + assertEquals("info:fedora/.well-known/x", statement.getObject().toString()); + } + @Test public void shouldCreateHashUriSubjects() throws RepositoryException { final Model m = createDefaultModel();