You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by ri...@apache.org on 2020/12/30 12:45:25 UTC

[incubator-streampipes] 02/04: [STREAMPIPES-269] Split streampipes-serializers into separate modules for JSON and JSON-LD serialization

This is an automated email from the ASF dual-hosted git repository.

riemer pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git

commit 3914cf4b6c44f2b83e80ca6e9fdceea7bb4a8067
Author: Dominik Riemer <ri...@fzi.de>
AuthorDate: Tue Dec 29 20:55:28 2020 +0100

    [STREAMPIPES-269] Split streampipes-serializers into separate modules for JSON and JSON-LD serialization
---
 pom.xml                                            |  3 +-
 streampipes-code-generation/pom.xml                |  5 ++
 .../connect/container/worker/utils/Utils.java      | 38 ++-------------
 streampipes-connect-container/pom.xml              |  2 +-
 streampipes-connect/pom.xml                        |  2 +-
 streampipes-container/pom.xml                      |  2 +-
 .../api/DataSourcePipelineElementResource.java     |  9 ++--
 .../container/transform/Transformer.java           | 49 --------------------
 .../streampipes/container/util/DeclarerUtils.java  | 46 ------------------
 .../org/streampipes/container/util/UtilTest.java   | 46 ------------------
 .../org/apache/streampipes/model/ResponseTest.java | 45 ------------------
 streampipes-pipeline-management/pom.xml            |  5 ++
 streampipes-rest-shared/pom.xml                    |  7 ++-
 streampipes-rest/pom.xml                           | 10 ++++
 .../rest/impl/AbstractRestInterface.java           | 10 ----
 streampipes-serializers-json/pom.xml               | 34 ++++++++++++++
 .../serializers/json/AdapterSerializer.java        |  0
 .../serializers/json/AdapterTypeAdapter.java       |  0
 .../serializers/json/EcTypeAdapter.java            |  0
 .../serializers/json/EpaTypeAdapter.java           |  0
 .../serializers/json/GsonSerializer.java           |  0
 .../serializers/json/JacksonSerializer.java        |  0
 .../serializers/json/JsonLdSerializer.java         |  0
 .../serializers/json/PeTypeAdapter.java            |  0
 .../json/ProcessingElementSerializer.java          |  0
 .../serializers/json/RangeSerializer.java          | 34 +++++++-------
 .../json/RuntimeTypeAdapterFactory.java            |  0
 .../json/TransformationRuleSerializer.java         |  0
 .../serializers/json/UriSerializer.java            |  0
 .../apache/streampipes/serializers/json/Utils.java |  0
 streampipes-serializers-jsonld/pom.xml             | 35 ++++++++++++++
 .../jsonld/CustomAnnotationProvider.java           |  0
 .../serializers/jsonld/JsonLdTransformer.java      |  0
 .../serializers/jsonld/RdfTransformer.java         |  0
 streampipes-serializers/pom.xml                    | 54 ----------------------
 streampipes-storage-couchdb/pom.xml                |  2 +-
 streampipes-storage-rdf4j/pom.xml                  |  2 +-
 37 files changed, 127 insertions(+), 313 deletions(-)

diff --git a/pom.xml b/pom.xml
index a37efc4..ea8dd23 100644
--- a/pom.xml
+++ b/pom.xml
@@ -870,7 +870,6 @@
         <module>streampipes-rest</module>
         <module>streampipes-rest-shared</module>
         <module>streampipes-sdk</module>
-        <module>streampipes-serializers</module>
         <module>streampipes-storage-api</module>
         <module>streampipes-storage-management</module>
         <module>streampipes-storage-couchdb</module>
@@ -893,6 +892,8 @@
         <module>streampipes-maven-plugin</module>
         <module>streampipes-model-shared</module>
         <module>streampipes-container-extensions</module>
+        <module>streampipes-serializers-jsonld</module>
+        <module>streampipes-serializers-json</module>
     </modules>
 
     <profiles>
diff --git a/streampipes-code-generation/pom.xml b/streampipes-code-generation/pom.xml
index 86c7c65..c595808 100644
--- a/streampipes-code-generation/pom.xml
+++ b/streampipes-code-generation/pom.xml
@@ -52,6 +52,11 @@
             <artifactId>streampipes-sdk</artifactId>
             <version>0.68.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.streampipes</groupId>
+            <artifactId>streampipes-serializers-json</artifactId>
+            <version>0.68.0-SNAPSHOT</version>
+        </dependency>
 
         <!-- External dependencies -->
         <dependency>
diff --git a/streampipes-connect-container-worker/src/test/java/org/apache/streampipes/connect/container/worker/utils/Utils.java b/streampipes-connect-container-worker/src/test/java/org/apache/streampipes/connect/container/worker/utils/Utils.java
index b995a31..2b2b467 100644
--- a/streampipes-connect-container-worker/src/test/java/org/apache/streampipes/connect/container/worker/utils/Utils.java
+++ b/streampipes-connect-container-worker/src/test/java/org/apache/streampipes/connect/container/worker/utils/Utils.java
@@ -18,44 +18,15 @@
 
 package org.apache.streampipes.connect.container.worker.utils;
 
-import io.fogsy.empire.core.empire.annotation.InvalidRdfException;
-import org.apache.streampipes.model.connect.adapter.*;
-import org.apache.streampipes.serializers.jsonld.JsonLdTransformer;
-import org.apache.streampipes.vocabulary.StreamPipes;
+import org.apache.streampipes.model.connect.adapter.AdapterSetDescription;
+import org.apache.streampipes.model.connect.adapter.AdapterStreamDescription;
+import org.apache.streampipes.model.connect.adapter.GenericAdapterSetDescription;
+import org.apache.streampipes.model.connect.adapter.GenericAdapterStreamDescription;
 
-import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 
 public class Utils {
 
-    public static String getMinimalStreamAdapterJsonLD() {
-        return getMinimalAdapterJsonLD(new GenericAdapterStreamDescription(), StreamPipes.GENERIC_ADAPTER_SET_DESCRIPTION);
-    }
-
-    public static String getMinimalSetAdapterJsonLD() {
-        return getMinimalAdapterJsonLD(new GenericAdapterSetDescription(), StreamPipes.GENERIC_ADAPTER_SET_DESCRIPTION);
-    }
-
-    private static String getMinimalAdapterJsonLD(AdapterDescription asd, String rootElement) {
-        String id = "http://t.de/";
-        asd.setUri(id);
-        asd.setId(id);
-
-        JsonLdTransformer jsonLdTransformer = new JsonLdTransformer(rootElement);
-
-        try {
-            return org.apache.streampipes.commons.Utils.asString(jsonLdTransformer.toJsonLd(asd));
-        } catch (IllegalAccessException | InvocationTargetException | ClassNotFoundException e) {
-            e.printStackTrace();
-        }
-        catch (InvalidRdfException e) {
-            e.printStackTrace();
-        }
-
-        return "";
-    }
-
-
     public static AdapterStreamDescription getMinimalStreamAdapter() {
         AdapterStreamDescription result = new GenericAdapterStreamDescription();
         String id = "http://t.de/";
@@ -74,5 +45,4 @@ public class Utils {
 
         return result;
     }
-
 }
diff --git a/streampipes-connect-container/pom.xml b/streampipes-connect-container/pom.xml
index ec1bd33..3e01d2f 100644
--- a/streampipes-connect-container/pom.xml
+++ b/streampipes-connect-container/pom.xml
@@ -51,7 +51,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.streampipes</groupId>
-            <artifactId>streampipes-serializers</artifactId>
+            <artifactId>streampipes-serializers-json</artifactId>
             <version>0.68.0-SNAPSHOT</version>
         </dependency>
 
diff --git a/streampipes-connect/pom.xml b/streampipes-connect/pom.xml
index d3a9c6d..cf12739 100755
--- a/streampipes-connect/pom.xml
+++ b/streampipes-connect/pom.xml
@@ -96,7 +96,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.streampipes</groupId>
-            <artifactId>streampipes-serializers</artifactId>
+            <artifactId>streampipes-serializers-json</artifactId>
             <version>0.68.0-SNAPSHOT</version>
         </dependency>
 
diff --git a/streampipes-container/pom.xml b/streampipes-container/pom.xml
index eeea910..be63f52 100644
--- a/streampipes-container/pom.xml
+++ b/streampipes-container/pom.xml
@@ -47,7 +47,7 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.streampipes</groupId>
-			<artifactId>streampipes-serializers</artifactId>
+			<artifactId>streampipes-serializers-json</artifactId>
 			<version>0.68.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
diff --git a/streampipes-container/src/main/java/org/apache/streampipes/container/api/DataSourcePipelineElementResource.java b/streampipes-container/src/main/java/org/apache/streampipes/container/api/DataSourcePipelineElementResource.java
index 8b1722c..549e205 100644
--- a/streampipes-container/src/main/java/org/apache/streampipes/container/api/DataSourcePipelineElementResource.java
+++ b/streampipes-container/src/main/java/org/apache/streampipes/container/api/DataSourcePipelineElementResource.java
@@ -24,13 +24,12 @@ import org.apache.streampipes.container.declarer.DataStreamDeclarer;
 import org.apache.streampipes.container.declarer.SemanticEventProducerDeclarer;
 import org.apache.streampipes.container.init.DeclarersSingleton;
 import org.apache.streampipes.container.init.RunningDatasetInstances;
-import org.apache.streampipes.container.transform.Transformer;
 import org.apache.streampipes.model.Response;
 import org.apache.streampipes.model.SpDataSet;
 import org.apache.streampipes.model.SpDataStream;
 import org.apache.streampipes.model.graph.DataSourceDescription;
 import org.apache.streampipes.rest.shared.util.SpMediaType;
-import org.apache.streampipes.vocabulary.StreamPipes;
+import org.apache.streampipes.serializers.json.JacksonSerializer;
 import org.eclipse.rdf4j.repository.RepositoryException;
 import org.eclipse.rdf4j.rio.RDFParseException;
 
@@ -83,8 +82,8 @@ public class DataSourcePipelineElementResource extends AbstractPipelineElementRe
 
   @POST
   @Path("{sourceId}/{streamId}")
-  @Produces({MediaType.APPLICATION_JSON, SpMediaType.JSONLD})
-  @Consumes({MediaType.APPLICATION_JSON, SpMediaType.JSONLD})
+  @Produces(MediaType.APPLICATION_JSON)
+  @Consumes(MediaType.APPLICATION_JSON)
   public javax.ws.rs.core.Response invokeRuntime(@PathParam("sourceId") String sourceId, @PathParam("streamId") String streamId, String
           payload) {
     SemanticEventProducerDeclarer declarer = getDeclarerById(sourceId);
@@ -100,7 +99,7 @@ public class DataSourcePipelineElementResource extends AbstractPipelineElementRe
 
     if (streamDeclarer.isPresent()) {
       try {
-        SpDataSet dataSet = Transformer.fromJsonLd(SpDataSet.class, payload, StreamPipes.DATA_SET);
+        SpDataSet dataSet = JacksonSerializer.getObjectMapper().readValue(payload, SpDataSet.class);
         String runningInstanceId = dataSet.getDatasetInvocationId();
         RunningDatasetInstances.INSTANCE.add(runningInstanceId, dataSet, (DataSetDeclarer) streamDeclarer.get().getClass().newInstance());
         RunningDatasetInstances.INSTANCE.getInvocation(runningInstanceId).invokeRuntime(dataSet, ()
diff --git a/streampipes-container/src/main/java/org/apache/streampipes/container/transform/Transformer.java b/streampipes-container/src/main/java/org/apache/streampipes/container/transform/Transformer.java
deleted file mode 100644
index 04120fd..0000000
--- a/streampipes-container/src/main/java/org/apache/streampipes/container/transform/Transformer.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.streampipes.container.transform;
-
-import io.fogsy.empire.core.empire.annotation.InvalidRdfException;
-import org.apache.streampipes.serializers.jsonld.JsonLdTransformer;
-import org.eclipse.rdf4j.model.Model;
-import org.eclipse.rdf4j.repository.RepositoryException;
-import org.eclipse.rdf4j.rio.RDFParseException;
-import org.eclipse.rdf4j.rio.UnsupportedRDFormatException;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-
-public class Transformer {
-
-	public static <T> Model toJsonLd(T element) throws IllegalAccessException,
-					IllegalArgumentException, InvocationTargetException, SecurityException, ClassNotFoundException, InvalidRdfException
-	{
-		return new JsonLdTransformer().toJsonLd(element);
-	}
-	
-	public static <T> T fromJsonLd(Class<T> destination, String json) throws RDFParseException, UnsupportedRDFormatException, IOException, RepositoryException
-	{
-		return new JsonLdTransformer().fromJsonLd(json, destination);
-	}
-
-	public static <T> T fromJsonLd(Class<T> destination, String json, String rootElement) throws RDFParseException,
-					UnsupportedRDFormatException, IOException, RepositoryException
-	{
-		return new JsonLdTransformer(rootElement).fromJsonLd(json, destination);
-	}
-}
diff --git a/streampipes-container/src/main/java/org/apache/streampipes/container/util/DeclarerUtils.java b/streampipes-container/src/main/java/org/apache/streampipes/container/util/DeclarerUtils.java
deleted file mode 100644
index 71716df..0000000
--- a/streampipes-container/src/main/java/org/apache/streampipes/container/util/DeclarerUtils.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.streampipes.container.util;
-
-import java.io.IOException;
-import java.net.URL;
-
-import org.eclipse.rdf4j.repository.RepositoryException;
-import org.eclipse.rdf4j.rio.RDFParseException;
-import org.eclipse.rdf4j.rio.UnsupportedRDFormatException;
-
-import com.google.common.base.Charsets;
-import com.google.common.io.Resources;
-
-import org.apache.streampipes.commons.exceptions.SepaParseException;
-import org.apache.streampipes.serializers.jsonld.JsonLdTransformer;
-
-public class DeclarerUtils {
-
-	public static <T> T descriptionFromResources(URL resourceUrl, Class<T> destination) throws SepaParseException
-	{
-		try {
-			return new JsonLdTransformer().fromJsonLd(Resources.toString(resourceUrl, Charsets.UTF_8), destination);
-		} catch (RDFParseException | UnsupportedRDFormatException
-				| RepositoryException | IOException e) {
-			e.printStackTrace();
-			throw new SepaParseException();
-		}
-	}
-}
diff --git a/streampipes-container/src/test/java/org/streampipes/container/util/UtilTest.java b/streampipes-container/src/test/java/org/streampipes/container/util/UtilTest.java
deleted file mode 100644
index 69dcb1e..0000000
--- a/streampipes-container/src/test/java/org/streampipes/container/util/UtilTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.streampipes.container.util;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-import org.junit.Test;
-import org.apache.streampipes.model.Response;
-
-public class UtilTest {
-
-    @Test
-    public void fromResponseStringSuccessTest() {
-        Response expected = new Response("id", true);
-        String dataString = expected.toString();
-
-        Response result = Util.fromResponseString(dataString);
-
-        assertEquals(expected, result);
-    }
-
-    @Test
-    public void fromResponseStringFailTest() {
-        String data = "{\"bl\":1}";
-        Response result = Util.fromResponseString(data);
-
-        assertNull(result);
-    }
-}
\ No newline at end of file
diff --git a/streampipes-model/src/test/java/org/apache/streampipes/model/ResponseTest.java b/streampipes-model/src/test/java/org/apache/streampipes/model/ResponseTest.java
deleted file mode 100644
index 2fb0369..0000000
--- a/streampipes-model/src/test/java/org/apache/streampipes/model/ResponseTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.streampipes.model;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-public class ResponseTest {
-
-    @Test
-    public void toStringWithMessageTest() {
-        Response resp = new Response("id", true);
-
-        String result = resp.toString();
-
-        assertEquals("{\"success\":true,\"elementId\":\"id\",\"optionalMessage\":\"\"}", result);
-    }
-
-    @Test
-    public void toStringWithoutMessageTest() {
-        Response resp = new Response("id", false, "error");
-
-        String result = resp.toString();
-
-        assertEquals("{\"success\":false,\"elementId\":\"id\",\"optionalMessage\":\"error\"}", result);
-
-    }
-}
\ No newline at end of file
diff --git a/streampipes-pipeline-management/pom.xml b/streampipes-pipeline-management/pom.xml
index 9800aa8..d9444f2 100644
--- a/streampipes-pipeline-management/pom.xml
+++ b/streampipes-pipeline-management/pom.xml
@@ -94,6 +94,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.streampipes</groupId>
+            <artifactId>streampipes-serializers-json</artifactId>
+            <version>0.68.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-storage-management</artifactId>
             <version>0.68.0-SNAPSHOT</version>
         </dependency>
diff --git a/streampipes-rest-shared/pom.xml b/streampipes-rest-shared/pom.xml
index 586786b..42d11e7 100644
--- a/streampipes-rest-shared/pom.xml
+++ b/streampipes-rest-shared/pom.xml
@@ -42,7 +42,12 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.streampipes</groupId>
-			<artifactId>streampipes-serializers</artifactId>
+			<artifactId>streampipes-serializers-json</artifactId>
+			<version>0.68.0-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.streampipes</groupId>
+			<artifactId>streampipes-serializers-jsonld</artifactId>
 			<version>0.68.0-SNAPSHOT</version>
 		</dependency>
 
diff --git a/streampipes-rest/pom.xml b/streampipes-rest/pom.xml
index 51441f6..f698cd8 100644
--- a/streampipes-rest/pom.xml
+++ b/streampipes-rest/pom.xml
@@ -72,6 +72,16 @@
         </dependency>
         <dependency>
             <groupId>org.apache.streampipes</groupId>
+            <artifactId>streampipes-serializers-json</artifactId>
+            <version>0.68.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streampipes</groupId>
+            <artifactId>streampipes-serializers-jsonld</artifactId>
+            <version>0.68.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-user-management</artifactId>
             <version>0.68.0-SNAPSHOT</version>
         </dependency>
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AbstractRestInterface.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AbstractRestInterface.java
index 066708f..cbab8c3 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AbstractRestInterface.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AbstractRestInterface.java
@@ -27,7 +27,6 @@ import org.apache.streampipes.manager.endpoint.HttpJsonParser;
 import org.apache.streampipes.manager.storage.UserManagementService;
 import org.apache.streampipes.manager.storage.UserService;
 import org.apache.streampipes.model.base.AbstractStreamPipesEntity;
-import org.apache.streampipes.model.base.NamedStreamPipesEntity;
 import org.apache.streampipes.model.base.StreamPipesJsonLdContainer;
 import org.apache.streampipes.model.message.Notification;
 import org.apache.streampipes.model.message.*;
@@ -36,11 +35,7 @@ import org.apache.streampipes.serializers.jsonld.JsonLdTransformer;
 import org.apache.streampipes.storage.api.*;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 import org.apache.streampipes.storage.management.StorageManager;
-import org.apache.streampipes.storage.rdf4j.util.Transformer;
-import org.eclipse.rdf4j.repository.RepositoryException;
 import org.eclipse.rdf4j.rio.RDFHandlerException;
-import org.eclipse.rdf4j.rio.RDFParseException;
-import org.eclipse.rdf4j.rio.UnsupportedRDFormatException;
 
 import javax.ws.rs.core.Response;
 import java.io.IOException;
@@ -125,11 +120,6 @@ public abstract class AbstractRestInterface {
     return HttpJsonParser.getContentFromUrl(uri, mediaType);
   }
 
-  protected <T extends NamedStreamPipesEntity> T parseObjectContent(Class<T> clazz, String payload)
-          throws RDFParseException, UnsupportedRDFormatException, RepositoryException, IOException {
-    return Transformer.fromJsonLd(clazz, payload);
-  }
-
   protected Response constructSuccessMessage(Notification... notifications) {
     return statusMessage(new SuccessMessage(notifications));
   }
diff --git a/streampipes-serializers-json/pom.xml b/streampipes-serializers-json/pom.xml
new file mode 100644
index 0000000..ad6f919
--- /dev/null
+++ b/streampipes-serializers-json/pom.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>streampipes-parent</artifactId>
+        <groupId>org.apache.streampipes</groupId>
+        <version>0.68.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>streampipes-serializers-json</artifactId>
+
+    <dependencies>
+        <!-- StreamPipes dependencies -->
+        <dependency>
+            <groupId>org.apache.streampipes</groupId>
+            <artifactId>streampipes-model</artifactId>
+            <version>0.68.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streampipes</groupId>
+            <artifactId>streampipes-model-client</artifactId>
+            <version>0.68.0-SNAPSHOT</version>
+        </dependency>
+
+        <!-- External dependencies -->
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/AdapterSerializer.java b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/AdapterSerializer.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/AdapterSerializer.java
rename to streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/AdapterSerializer.java
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/AdapterTypeAdapter.java b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/AdapterTypeAdapter.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/AdapterTypeAdapter.java
rename to streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/AdapterTypeAdapter.java
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/EcTypeAdapter.java b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/EcTypeAdapter.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/EcTypeAdapter.java
rename to streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/EcTypeAdapter.java
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/EpaTypeAdapter.java b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/EpaTypeAdapter.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/EpaTypeAdapter.java
rename to streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/EpaTypeAdapter.java
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/GsonSerializer.java b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/GsonSerializer.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/GsonSerializer.java
rename to streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/GsonSerializer.java
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/JacksonSerializer.java b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/JacksonSerializer.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/JacksonSerializer.java
rename to streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/JacksonSerializer.java
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/JsonLdSerializer.java b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/JsonLdSerializer.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/JsonLdSerializer.java
rename to streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/JsonLdSerializer.java
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/PeTypeAdapter.java b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/PeTypeAdapter.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/PeTypeAdapter.java
rename to streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/PeTypeAdapter.java
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/ProcessingElementSerializer.java b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/ProcessingElementSerializer.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/ProcessingElementSerializer.java
rename to streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/ProcessingElementSerializer.java
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/RangeSerializer.java b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/RangeSerializer.java
similarity index 67%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/RangeSerializer.java
rename to streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/RangeSerializer.java
index 2ffb65f..f6fc5a3 100644
--- a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/RangeSerializer.java
+++ b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/RangeSerializer.java
@@ -35,23 +35,23 @@ import java.lang.reflect.Type;
 
 public class RangeSerializer implements JsonSerializer<Range>, JsonDeserializer<Range> {
 
-	public JsonElement serialize(Range src, Type typeOfSrc, JsonSerializationContext context) {
-        
-    	return context.serialize(src, src.getClass());
-
-    }
- 
-    public Range deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
-        throws JsonParseException {
-       
-    	JsonObject jsonObject = json.getAsJsonObject();
-        String rangeType = jsonObject.get("rangeType").getAsString();
- 
-        RangeType rt = RangeType.valueOf(rangeType);
-		if (rt == RangeType.ENUMERATION) return context.deserialize(jsonObject, EnumeratedRange.class);
-		else if (rt == RangeType.QUANTITATIVE_VALUE) return context.deserialize(jsonObject, QuantitativeValueRange.class);
-		else return context.deserialize(jsonObject, PrimitiveRange.class);
-    }
+  public JsonElement serialize(Range src, Type typeOfSrc, JsonSerializationContext context) {
+
+    return context.serialize(src, src.getClass());
+
+  }
+
+  public Range deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
+          throws JsonParseException {
+
+    JsonObject jsonObject = json.getAsJsonObject();
+    String rangeType = jsonObject.get("rangeType").getAsString();
+
+    RangeType rt = RangeType.valueOf(rangeType);
+    if (rt == RangeType.ENUMERATION) return context.deserialize(jsonObject, EnumeratedRange.class);
+    else if (rt == RangeType.QUANTITATIVE_VALUE) return context.deserialize(jsonObject, QuantitativeValueRange.class);
+    else return context.deserialize(jsonObject, PrimitiveRange.class);
+  }
 
 }
 
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/RuntimeTypeAdapterFactory.java b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/RuntimeTypeAdapterFactory.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/RuntimeTypeAdapterFactory.java
rename to streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/RuntimeTypeAdapterFactory.java
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/TransformationRuleSerializer.java b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/TransformationRuleSerializer.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/TransformationRuleSerializer.java
rename to streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/TransformationRuleSerializer.java
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/UriSerializer.java b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/UriSerializer.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/UriSerializer.java
rename to streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/UriSerializer.java
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/Utils.java b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/Utils.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/Utils.java
rename to streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/Utils.java
diff --git a/streampipes-serializers-jsonld/pom.xml b/streampipes-serializers-jsonld/pom.xml
new file mode 100644
index 0000000..9d4d495
--- /dev/null
+++ b/streampipes-serializers-jsonld/pom.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>streampipes-parent</artifactId>
+        <groupId>org.apache.streampipes</groupId>
+        <version>0.68.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>streampipes-serializers-jsonld</artifactId>
+
+    <dependencies>
+        <!-- StreamPipes dependencies -->
+        <dependency>
+            <groupId>org.apache.streampipes</groupId>
+            <artifactId>streampipes-model</artifactId>
+            <version>0.68.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streampipes</groupId>
+            <artifactId>streampipes-model-client</artifactId>
+            <version>0.68.0-SNAPSHOT</version>
+        </dependency>
+
+        <!-- External dependencies -->
+        <dependency>
+            <groupId>io.fogsy</groupId>
+            <artifactId>empire-pinto</artifactId>
+        </dependency>
+    </dependencies>
+
+
+</project>
\ No newline at end of file
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/jsonld/CustomAnnotationProvider.java b/streampipes-serializers-jsonld/src/main/java/org/apache/streampipes/serializers/jsonld/CustomAnnotationProvider.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/jsonld/CustomAnnotationProvider.java
rename to streampipes-serializers-jsonld/src/main/java/org/apache/streampipes/serializers/jsonld/CustomAnnotationProvider.java
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/jsonld/JsonLdTransformer.java b/streampipes-serializers-jsonld/src/main/java/org/apache/streampipes/serializers/jsonld/JsonLdTransformer.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/jsonld/JsonLdTransformer.java
rename to streampipes-serializers-jsonld/src/main/java/org/apache/streampipes/serializers/jsonld/JsonLdTransformer.java
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/jsonld/RdfTransformer.java b/streampipes-serializers-jsonld/src/main/java/org/apache/streampipes/serializers/jsonld/RdfTransformer.java
similarity index 100%
rename from streampipes-serializers/src/main/java/org/apache/streampipes/serializers/jsonld/RdfTransformer.java
rename to streampipes-serializers-jsonld/src/main/java/org/apache/streampipes/serializers/jsonld/RdfTransformer.java
diff --git a/streampipes-serializers/pom.xml b/streampipes-serializers/pom.xml
deleted file mode 100644
index e2df8de..0000000
--- a/streampipes-serializers/pom.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~    http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  ~
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>streampipes-parent</artifactId>
-        <groupId>org.apache.streampipes</groupId>
-        <version>0.68.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>streampipes-serializers</artifactId>
-    <dependencies>
-        <!-- StreamPipes dependencies -->
-        <dependency>
-            <groupId>org.apache.streampipes</groupId>
-            <artifactId>streampipes-model</artifactId>
-            <version>0.68.0-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streampipes</groupId>
-            <artifactId>streampipes-model-client</artifactId>
-            <version>0.68.0-SNAPSHOT</version>
-        </dependency>
-
-        <!-- External dependencies -->
-        <dependency>
-            <groupId>io.fogsy</groupId>
-            <artifactId>empire-pinto</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
-    </dependencies>
-
-
-</project>
\ No newline at end of file
diff --git a/streampipes-storage-couchdb/pom.xml b/streampipes-storage-couchdb/pom.xml
index 7d19771..1d8124b 100644
--- a/streampipes-storage-couchdb/pom.xml
+++ b/streampipes-storage-couchdb/pom.xml
@@ -46,7 +46,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.streampipes</groupId>
-            <artifactId>streampipes-serializers</artifactId>
+            <artifactId>streampipes-serializers-json</artifactId>
             <version>0.68.0-SNAPSHOT</version>
         </dependency>
         <dependency>
diff --git a/streampipes-storage-rdf4j/pom.xml b/streampipes-storage-rdf4j/pom.xml
index e0b711f..faf15dc 100644
--- a/streampipes-storage-rdf4j/pom.xml
+++ b/streampipes-storage-rdf4j/pom.xml
@@ -46,7 +46,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.streampipes</groupId>
-            <artifactId>streampipes-serializers</artifactId>
+            <artifactId>streampipes-serializers-jsonld</artifactId>
             <version>0.68.0-SNAPSHOT</version>
         </dependency>
         <dependency>