diff --git a/backend/pom.xml b/backend/pom.xml
index 2e5db3aab1..7073256276 100644
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -68,6 +68,11 @@
jetty-server
${jetty.server.version}
+
+ com.fasterxml.jackson.core
+ jackson-core
+ 2.8.3
+
diff --git a/commons-app/src/main/java/cz/cuni/mff/xrg/odcs/commons/app/rdf/RepositoryManager.java b/commons-app/src/main/java/cz/cuni/mff/xrg/odcs/commons/app/rdf/RepositoryManager.java
index 838aafe532..83ee34d1ef 100644
--- a/commons-app/src/main/java/cz/cuni/mff/xrg/odcs/commons/app/rdf/RepositoryManager.java
+++ b/commons-app/src/main/java/cz/cuni/mff/xrg/odcs/commons/app/rdf/RepositoryManager.java
@@ -1,22 +1,21 @@
package cz.cuni.mff.xrg.odcs.commons.app.rdf;
-import java.io.File;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.annotation.PostConstruct;
+import cz.cuni.mff.xrg.odcs.commons.app.resource.MissingResourceException;
+import cz.cuni.mff.xrg.odcs.commons.app.resource.ResourceManager;
+import eu.unifiedviews.commons.rdf.repository.ManagableRepository;
+import eu.unifiedviews.commons.rdf.repository.RDFException;
+import eu.unifiedviews.commons.rdf.repository.RepositoryFactory;
import org.openrdf.repository.Repository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import cz.cuni.mff.xrg.odcs.commons.app.resource.MissingResourceException;
-import cz.cuni.mff.xrg.odcs.commons.app.resource.ResourceManager;
-import eu.unifiedviews.commons.rdf.repository.ManagableRepository;
-import eu.unifiedviews.commons.rdf.repository.RDFException;
-import eu.unifiedviews.commons.rdf.repository.RepositoryFactory;
+import javax.annotation.PostConstruct;
+import java.io.File;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
/**
* Provide access to repositories.
@@ -87,6 +86,9 @@ protected void init() {
case "remoteRDF":
repositoryType = ManagableRepository.Type.REMOTE_RDF;
break;
+ case "marklogic":
+ repositoryType = ManagableRepository.Type.MARKLOGIC;
+ break;
default:
throw new RuntimeException("Unknown repository type.");
}
diff --git a/dataunit/pom.xml b/dataunit/pom.xml
index 3e6df52232..72fbc9968d 100644
--- a/dataunit/pom.xml
+++ b/dataunit/pom.xml
@@ -264,6 +264,16 @@
com.openlinksw.virtuoso.virtjdbc4_1
${virtuoso.jdbc.version}
+
+ com.marklogic
+ marklogic-sesame
+ 1.0.2
+
+
+ com.marklogic
+ java-client-api
+ 3.0.6
+
diff --git a/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/ConnectionSourceImpl.java b/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/ConnectionSourceImpl.java
index 8740901e76..730336b6ca 100644
--- a/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/ConnectionSourceImpl.java
+++ b/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/ConnectionSourceImpl.java
@@ -36,6 +36,16 @@ public ConnectionSourceImpl(Repository repository, boolean retryOnFailure) {
this.retryOnFailure = retryOnFailure;
}
+ /**
+ * Used repository.
+ *
+ * @param repository
+ */
+ public ConnectionSourceImpl(Repository repository) {
+ this.repository = repository;
+ this.retryOnFailure = false;
+ }
+
@Override
public RepositoryConnection getConnection() throws RepositoryException {
return repository.getConnection();
diff --git a/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/InMemoryRDF.java b/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/InMemoryRDF.java
index e5c0fb3aa6..fbb2163edc 100644
--- a/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/InMemoryRDF.java
+++ b/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/InMemoryRDF.java
@@ -1,6 +1,7 @@
package eu.unifiedviews.commons.rdf.repository;
-import java.io.File;
+import eu.unifiedviews.commons.dataunit.core.ConnectionSource;
+import eu.unifiedviews.dataunit.DataUnitException;
import org.openrdf.repository.Repository;
import org.openrdf.repository.RepositoryException;
import org.openrdf.repository.config.RepositoryConfig;
@@ -10,8 +11,7 @@
import org.openrdf.repository.sail.config.SailRepositoryConfig;
import org.openrdf.sail.memory.config.MemoryStoreConfig;
-import eu.unifiedviews.commons.dataunit.core.ConnectionSource;
-import eu.unifiedviews.dataunit.DataUnitException;
+import java.io.File;
/**
*
@@ -53,7 +53,7 @@ public InMemoryRDF(String repositoryPath) throws RDFException {
@Override
public ConnectionSource getConnectionSource() {
- return new ConnectionSourceImpl(repository, false);
+ return new ConnectionSourceImpl(repository);
}
@Override
diff --git a/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/LocalRDF.java b/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/LocalRDF.java
index bb11804f47..720b781424 100644
--- a/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/LocalRDF.java
+++ b/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/LocalRDF.java
@@ -1,15 +1,14 @@
package eu.unifiedviews.commons.rdf.repository;
-import java.io.File;
-
+import eu.unifiedviews.commons.dataunit.core.ConnectionSource;
+import eu.unifiedviews.dataunit.DataUnitException;
import org.apache.commons.io.FileUtils;
import org.openrdf.repository.Repository;
import org.openrdf.repository.RepositoryException;
import org.openrdf.repository.sail.SailRepository;
import org.openrdf.sail.nativerdf.NativeStore;
-import eu.unifiedviews.commons.dataunit.core.ConnectionSource;
-import eu.unifiedviews.dataunit.DataUnitException;
+import java.io.File;
/**
*
@@ -41,7 +40,7 @@ public LocalRDF(String repositoryPath) throws RDFException {
@Override
public ConnectionSource getConnectionSource() {
- return new ConnectionSourceImpl(repository, false);
+ return new ConnectionSourceImpl(repository);
}
@Override
diff --git a/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/ManagableRepository.java b/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/ManagableRepository.java
index 01da3499aa..b7bfcfb1b6 100644
--- a/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/ManagableRepository.java
+++ b/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/ManagableRepository.java
@@ -15,7 +15,8 @@ public static enum Type {
LOCAL_RDF,
INMEMORY_RDF,
REMOTE_RDF,
- VIRTUOSO
+ VIRTUOSO,
+ MARKLOGIC
}
/**
diff --git a/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/MarkLogic.java b/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/MarkLogic.java
new file mode 100644
index 0000000000..06091fdf61
--- /dev/null
+++ b/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/MarkLogic.java
@@ -0,0 +1,67 @@
+package eu.unifiedviews.commons.rdf.repository;
+
+import com.marklogic.client.DatabaseClient;
+import com.marklogic.client.DatabaseClientFactory;
+import com.marklogic.semantics.sesame.MarkLogicRepository;
+import eu.unifiedviews.commons.dataunit.core.ConnectionSource;
+import org.openrdf.repository.Repository;
+import org.openrdf.repository.RepositoryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created by tomasknap on 18/10/16.
+ */
+public class MarkLogic implements ManagableRepository {
+
+ private static final Logger log = LoggerFactory.getLogger(RepositoryFactory.class);
+
+ private final Repository repository;
+
+
+ public MarkLogic(String url, String user, String password) throws RDFException {
+
+ String port = url.substring(url.lastIndexOf(":")+1);
+ int portNumber = Integer.valueOf(port);
+ log.info("Port number: {}", portNumber);
+
+ String host = url.substring(0,url.lastIndexOf(":"));
+ log.info("Host: {}", host);
+
+ DatabaseClient adminClient =
+ DatabaseClientFactory.newClient(host, portNumber,
+ user, password, DatabaseClientFactory.Authentication.DIGEST);
+
+ // create repo and init
+ repository = new MarkLogicRepository(adminClient);
+
+ try {
+ repository.initialize();
+ } catch (RepositoryException ex) {
+ throw new RDFException("Could not initialize repository", ex);
+ }
+ }
+
+
+ @Override
+ public ConnectionSource getConnectionSource() {
+ return new ConnectionSourceImpl(repository);
+ }
+
+
+ @Override
+ public void release() throws RDFException {
+ try {
+ repository.shutDown();
+ } catch (RepositoryException ex) {
+ throw new RDFException("Can't shutDown repository.", ex);
+ }
+ }
+
+ @Override
+ public void delete() throws RDFException {
+ // Do nothing here.
+ }
+
+
+}
diff --git a/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/RemoteRDF.java b/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/RemoteRDF.java
index 3d9f9cc0f9..dfc254f030 100644
--- a/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/RemoteRDF.java
+++ b/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/RemoteRDF.java
@@ -74,7 +74,7 @@ public RemoteRDF(String url, String user, String password, Long executionId) thr
@Override
public ConnectionSource getConnectionSource() {
- return new ConnectionSourceImpl(repository, false);
+ return new ConnectionSourceImpl(repository);
}
@Override
diff --git a/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/RepositoryFactory.java b/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/RepositoryFactory.java
index 121b7c0c76..c53cbf49ee 100644
--- a/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/RepositoryFactory.java
+++ b/dataunit/src/main/java/eu/unifiedviews/commons/rdf/repository/RepositoryFactory.java
@@ -55,6 +55,9 @@ public ManagableRepository create(Long executionId, ManagableRepository.Type typ
case VIRTUOSO:
repository = new Virtuoso(uri, user, password);
break;
+ case MARKLOGIC:
+ repository = new MarkLogic(uri, user, password);
+ break;
default:
throw new RDFException("Unknown repository type: " + type.toString());
}
diff --git a/lib/lib-core/pom.xml b/lib/lib-core/pom.xml
index bb65b65994..4e8af144e9 100644
--- a/lib/lib-core/pom.xml
+++ b/lib/lib-core/pom.xml
@@ -49,17 +49,17 @@
com.fasterxml.jackson.core
jackson-annotations
- 2.6.0
+ 2.8.3
com.fasterxml.jackson.core
jackson-databind
- 2.6.0
+ 2.8.3
com.fasterxml.jackson.core
jackson-core
- 2.6.0
+ 2.8.3
org.apache.jena