${ (query.getPat
<@pageLinks/>
<#else>
- <%= datasource.getTitle() %> contains
+ ${datasource.getTitle()} contains
- no <#if totalEstimate > 0 >more#if>
+ no <#if (totalEstimate > 0) >more#if>
triples that match this pattern.
@@ -52,14 +52,38 @@ Matches in ${datasource.getTitle()} for ${ (query.getPat
<#assign object = triple.getObject().asNode().toString()>
- ${subject?keep_after_last("/")}
+
+ <#if (subject?last_index_of("#") > -1) >
+ ${ subject?keep_after_last("#") }
+ <#elseif (subject?last_index_of("/") > -1)>
+ ${ subject?keep_after_last("/") }
+ <#else>
+ ${ subject }
+ #if>
+
- ${predicate?keep_after_last("/")}
+
+ <#if (predicate?last_index_of("#") > -1) >
+ ${ predicate?keep_after_last("#") }
+ <#elseif (predicate?last_index_of("/") > -1)>
+ ${ predicate?keep_after_last("/") }
+ <#else>
+ ${ predicate }
+ #if>
+
<#if !triple.getObject().isLiteral()>
- ${object?keep_after_last("/")}
+
+ <#if (object?last_index_of("#") > -1) >
+ ${ object?keep_after_last("#") }
+ <#elseif (object?last_index_of("/") > -1)>
+ ${ object?keep_after_last("/") }
+ <#else>
+ ${ object }
+ #if>
+
.
<#else>
${object}.
@@ -80,4 +104,4 @@ Matches in ${datasource.getTitle()} for ${ (query.getPat
next
#if>
-#macro>
\ No newline at end of file
+#macro>
diff --git a/src/test/java/org/linkeddatafragments/test/TestSuite.java b/src/test/java/org/linkeddatafragments/test/TestSuite.java
index 1accb53..94ca45d 100644
--- a/src/test/java/org/linkeddatafragments/test/TestSuite.java
+++ b/src/test/java/org/linkeddatafragments/test/TestSuite.java
@@ -3,7 +3,6 @@
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
-import org.linkeddatafragments.test.datasource.HdtDataSourceTest;
import org.linkeddatafragments.test.datasource.JenaTDBDataSourceTest;
/**
@@ -12,7 +11,6 @@
*/
@RunWith(Suite.class)
@Suite.SuiteClasses({
- HdtDataSourceTest.class,
JenaTDBDataSourceTest.class
})
public class TestSuite {
diff --git a/src/test/java/org/linkeddatafragments/test/datasource/HdtDataSourceTest.java b/src/test/java/org/linkeddatafragments/test/datasource/HdtDataSourceTest.java
deleted file mode 100644
index bd1c52e..0000000
--- a/src/test/java/org/linkeddatafragments/test/datasource/HdtDataSourceTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package org.linkeddatafragments.test.datasource;
-
-import com.google.gson.JsonObject;
-
-import java.io.File;
-import org.apache.jena.rdf.model.RDFNode;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.linkeddatafragments.datasource.DataSourceFactory;
-import org.linkeddatafragments.datasource.DataSourceTypesRegistry;
-import org.linkeddatafragments.datasource.hdt.HdtDataSourceType;
-import org.linkeddatafragments.util.TriplePatternElementParser;
-import org.linkeddatafragments.util.TriplePatternElementParserForJena;
-import org.rdfhdt.hdt.enums.RDFNotation;
-import org.rdfhdt.hdt.hdt.HDT;
-import org.rdfhdt.hdt.hdt.HDTManager;
-import org.rdfhdt.hdt.options.HDTSpecification;
-
-/**
- *
- * @author Bart Hanssens
- */
-public class HdtDataSourceTest extends DataSourceTest {
-
- private static File hdtfile;
-
- /**
- *
- * @return
- */
- @Override
- protected TriplePatternElementParser
- getTriplePatternElementParser()
- {
- return TriplePatternElementParserForJena.getInstance();
- }
-
- /**
- *
- * @throws Exception
- */
- @BeforeClass
- public static void setUpClass() throws Exception {
- final String typeName = "HdtTestSourceType";
- if ( ! DataSourceTypesRegistry.isRegistered(typeName) ) {
- DataSourceTypesRegistry.register( typeName, new HdtDataSourceType() );
- }
-
- // HDT does not seem to support an InputReader, so write to temp file
- File temp = getResourceAsFile();
-
- HDT mgr = HDTManager.generateHDT(temp.getAbsolutePath(),
- "http://linkeddatafragments.org",
- RDFNotation.NTRIPLES, new HDTSpecification(), null);
- hdtfile = File.createTempFile("ldf-hdt-test", ".hdt");
- mgr.saveToHDT(hdtfile.getAbsolutePath(), null);
-
- temp.getAbsoluteFile().delete();
-
- // Everything is in place, now create the LDF datasource
- JsonObject config = createConfig("hdt test", "hdt test", typeName);
-
- JsonObject settings = new JsonObject();
- settings.addProperty("file", hdtfile.getAbsolutePath());
- config.add("settings", settings);
-
- setDatasource(DataSourceFactory.create(config));
- }
-
- /**
- *
- * @throws Exception
- */
- @AfterClass
- public static void tearDownClass() throws Exception {
- if (hdtfile != null) {
- hdtfile.delete();
- }
- }
-
- /**
- *
- * @throws Exception
- */
- @Before
- public void setUp() throws Exception {
-
- }
-
- /**
- *
- * @throws Exception
- */
- @After
- public void tearDown() throws Exception {
- }
-}
diff --git a/src/test/java/org/linkeddatafragments/test/datasource/IndexRequestProcessorForTPFsTest.java b/src/test/java/org/linkeddatafragments/test/datasource/IndexRequestProcessorForTPFsTest.java
new file mode 100644
index 0000000..edc8b5b
--- /dev/null
+++ b/src/test/java/org/linkeddatafragments/test/datasource/IndexRequestProcessorForTPFsTest.java
@@ -0,0 +1,114 @@
+package org.linkeddatafragments.datasource;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+
+import org.apache.jena.rdf.model.Property;
+import org.apache.jena.rdf.model.RDFNode;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.rdf.model.ResourceFactory;
+import org.apache.jena.rdf.model.Statement;
+import org.apache.jena.rdf.model.StmtIterator;
+import org.junit.Assert;
+import org.junit.Test;
+import org.linkeddatafragments.datasource.IDataSource;
+import org.linkeddatafragments.datasource.IFragmentRequestProcessor;
+import org.linkeddatafragments.datasource.index.IndexRequestProcessorForTPFs;
+import org.linkeddatafragments.fragments.IFragmentRequestParser;
+import org.linkeddatafragments.fragments.ILinkedDataFragment;
+import org.linkeddatafragments.fragments.tpf.ITriplePatternFragmentRequest;
+import org.linkeddatafragments.fragments.tpf.TriplePatternElementFactory;
+import org.linkeddatafragments.fragments.tpf.TriplePatternFragmentRequestImpl;
+
+/**
+ * Test cases for the IndexRequestProcessorForTPFs
+ *
+ * @author Lars G. Svensson
+ */
+public class IndexRequestProcessorForTPFsTest {
+
+ static class TestIndexRequestProcessor extends IndexRequestProcessorForTPFs {
+ TestIndexRequestProcessor(final String baseUrl,
+ final HashMap datasources) {
+ super(baseUrl, datasources);
+ }
+
+ @Override
+ protected TestWorker getTPFSpecificWorker(
+ final ITriplePatternFragmentRequest request)
+ throws IllegalArgumentException {
+ return new TestWorker(request);
+ }
+
+ class TestWorker extends IndexRequestProcessorForTPFs.Worker {
+ public TestWorker(
+ final ITriplePatternFragmentRequest req) {
+ super(req);
+ }
+ }
+ }
+
+ /**
+ * Check that the type void:Dataset is returned as a URI and not as a
+ * literal
+ */
+ @Test
+ public void shouldGiveVoidDatasetAsAURI() {
+ final IDataSource datasource = new IDataSource() {
+ @Override
+ public String getDescription() {
+ return "This is a dummy datasource";
+ };
+
+ @Override
+ public IFragmentRequestParser getRequestParser() {
+ return null;
+ }
+
+ @Override
+ public IFragmentRequestProcessor getRequestProcessor() {
+ return null;
+ }
+
+ @Override
+ public String getTitle() {
+ return "Dummy Dataource";
+ }
+
+ @Override
+ public void close() {
+ // does nothing
+ }
+ };
+ final HashMap datasources = new HashMap();
+ datasources.put("dummy", datasource);
+ final String baseUrl = "dummy";
+ final TestIndexRequestProcessor processor = new TestIndexRequestProcessor(
+ baseUrl, datasources);
+ final TriplePatternElementFactory factory = new TriplePatternElementFactory();
+ final ITriplePatternFragmentRequest request = new TriplePatternFragmentRequestImpl(
+ null, "dummy", false, 1, factory.createUnspecifiedVariable(),
+ factory.createUnspecifiedVariable(),
+ factory.createUnspecifiedVariable());
+ final TestIndexRequestProcessor.TestWorker worker = processor
+ .getTPFSpecificWorker(request);
+ final ILinkedDataFragment fragment = worker.createRequestedFragment();
+ final StmtIterator iterator = fragment.getTriples();
+ final Collection statements = new ArrayList();
+ while (iterator.hasNext()) {
+ statements.add(iterator.next());
+ }
+
+ final Resource subject = ResourceFactory.createResource("dummy/dummy");
+ final Property predicate = ResourceFactory
+ .createProperty("http://www.w3.org/1999/02/22-rdf-syntax-ns#type");
+ final Resource object = ResourceFactory
+ .createResource("http://rdfs.org/ns/void#Dataset");
+ final Statement expected = ResourceFactory.createStatement(subject,
+ predicate, object);
+ Assert.assertTrue("triple not contained in model",
+ statements.contains(expected));
+ processor.close();
+ }
+}
diff --git a/src/test/java/org/linkeddatafragments/test/datasource/JenaTDBDataSourceTest.java b/src/test/java/org/linkeddatafragments/test/datasource/JenaTDBDataSourceTest.java
index 1af273d..9e1fbb3 100644
--- a/src/test/java/org/linkeddatafragments/test/datasource/JenaTDBDataSourceTest.java
+++ b/src/test/java/org/linkeddatafragments/test/datasource/JenaTDBDataSourceTest.java
@@ -3,6 +3,7 @@
import com.google.gson.JsonObject;
import org.apache.jena.query.Dataset;
+import org.apache.jena.query.ReadWrite;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.tdb.TDBFactory;
@@ -63,6 +64,7 @@ public static void setUpClass() throws Exception {
dataset = TDBFactory.createDataset(jena.getAbsolutePath());
+ dataset.begin(ReadWrite.WRITE);
Model model = dataset.getDefaultModel();
InputStream in = ClassLoader.getSystemResourceAsStream("demo.nt");
RDFDataMgr.read(model, in, Lang.NTRIPLES);