You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by wi...@apache.org on 2014/10/27 09:01:45 UTC

[9/9] git commit: MARMOTTA-556: minor details in the ldf module

MARMOTTA-556: minor details in the ldf module


Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/ec0b8196
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/ec0b8196
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/ec0b8196

Branch: refs/heads/MARMOTTA-556
Commit: ec0b81967b46126035c3edaeebf836557be7b697
Parents: 22d16b3
Author: Sergio Fernández <wi...@apache.org>
Authored: Mon Oct 27 09:01:18 2014 +0100
Committer: Sergio Fernández <wi...@apache.org>
Committed: Mon Oct 27 09:01:18 2014 +0100

----------------------------------------------------------------------
 .../marmotta/platform/ldf/api/LdfService.java   |  8 +--
 .../platform/ldf/services/LdfServiceImpl.java   |  8 +--
 .../platform/ldf/sesame/LdfRDFHandler.java      | 55 +++++++++++---------
 .../src/main/resources/META-INF/beans.xml       | 28 ++++++++++
 .../src/main/resources/kiwi-module.properties   | 28 ++++++++++
 5 files changed, 95 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/ec0b8196/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/api/LdfService.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/api/LdfService.java b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/api/LdfService.java
index a1d2dce..c2d7dff 100644
--- a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/api/LdfService.java
+++ b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/api/LdfService.java
@@ -46,7 +46,7 @@ public interface LdfService {
      * @param format RDF serialization
      * @param out output stream where write the fragment
      */
-    void writeFragment(String subject, String predicate, String object, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException;
+    void writeFragment(String subject, String predicate, String object, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException, IllegalArgumentException;
 
     /**
      * Writes a fragment matching the specified triple fragment pattern
@@ -59,7 +59,7 @@ public interface LdfService {
      * @param format RDF serialization
      * @param out output stream where write the fragment
      */
-    void writeFragment(URI subject, URI predicate, Value object, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException;
+    void writeFragment(URI subject, URI predicate, Value object, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException, IllegalArgumentException;
 
     /**
      * Writes a fragment matching the specified quad fragment pattern
@@ -73,7 +73,7 @@ public interface LdfService {
      * @param format RDF serialization
      * @param out output stream where write the fragment
      */
-    void writeFragment(String subject, String predicate, String object, String context, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException;
+    void writeFragment(String subject, String predicate, String object, String context, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException, IllegalArgumentException;
 
     /**
      * Writes a fragment matching the specified quad fragment pattern
@@ -87,6 +87,6 @@ public interface LdfService {
      * @param format RDF serialization
      * @param out output stream where write the fragment
      */
-    void writeFragment(URI subject, URI predicate, Value object, Resource context, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException;
+    void writeFragment(URI subject, URI predicate, Value object, Resource context, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException, IllegalArgumentException;
 
 }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/ec0b8196/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/services/LdfServiceImpl.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/services/LdfServiceImpl.java b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/services/LdfServiceImpl.java
index 580cb25..4ccdfeb 100644
--- a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/services/LdfServiceImpl.java
+++ b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/services/LdfServiceImpl.java
@@ -48,17 +48,17 @@ public class LdfServiceImpl implements LdfService {
     private SesameService sesameService;
 
     @Override
-    public void writeFragment(String subjectStr, String predicateStr, String objectStr, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException {
+    public void writeFragment(String subjectStr, String predicateStr, String objectStr, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException, IllegalArgumentException {
         writeFragment(subjectStr, predicateStr, objectStr, null, page, format, out);
     }
 
     @Override
-    public void writeFragment(URI subject, URI predicate, Value object, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException {
+    public void writeFragment(URI subject, URI predicate, Value object, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException, IllegalArgumentException {
         writeFragment(subject, predicate, object, null, page, format, out);
     }
 
     @Override
-    public void writeFragment(String subjectStr, String predicateStr, String objectStr, String contextStr, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException {
+    public void writeFragment(String subjectStr, String predicateStr, String objectStr, String contextStr, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException, IllegalArgumentException {
         final ValueFactoryImpl vf = new ValueFactoryImpl();
 
         URI subject = null;
@@ -105,7 +105,7 @@ public class LdfServiceImpl implements LdfService {
     }
 
     @Override
-    public void writeFragment(URI subject, URI predicate, Value object, Resource context, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException {
+    public void writeFragment(URI subject, URI predicate, Value object, Resource context, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException, IllegalArgumentException {
         final RepositoryConnection conn = sesameService.getConnection();
         try {
             conn.begin();

http://git-wip-us.apache.org/repos/asf/marmotta/blob/ec0b8196/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/sesame/LdfRDFHandler.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/sesame/LdfRDFHandler.java b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/sesame/LdfRDFHandler.java
index 5164705..34ed85b 100644
--- a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/sesame/LdfRDFHandler.java
+++ b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/sesame/LdfRDFHandler.java
@@ -29,6 +29,7 @@ import org.openrdf.model.Statement;
 import org.openrdf.model.impl.StatementImpl;
 import org.openrdf.model.impl.ValueFactoryImpl;
 import org.openrdf.model.vocabulary.RDF;
+import org.openrdf.model.vocabulary.RDFS;
 import org.openrdf.rio.RDFHandler;
 import org.openrdf.rio.RDFHandlerException;
 
@@ -104,6 +105,8 @@ public class LdfRDFHandler implements RDFHandler {
 
     @Override
     public void endRDF() throws RDFHandlerException {
+        final ValueFactoryImpl vf = new ValueFactoryImpl();
+
         //first order by a fixed criteria
         Collections.sort(statements, new Comparator<Statement>() {
             @Override
@@ -128,33 +131,37 @@ public class LdfRDFHandler implements RDFHandler {
         final int size = statements.size();
         final int offset = LdfService.PAGE_SIZE * (page - 1);
         if (offset > size) {
-            throw new RDFHandlerException("page " + page + " can't be generated");
-        }
-        final int limit = LdfService.PAGE_SIZE < size-offset ? LdfService.PAGE_SIZE : size-offset;
-        List<Statement> filteredStatements = statements.subList(offset, limit);
-
-        //send statements to delegate writer
-        for (Statement statement : filteredStatements) {
-            handler.handleStatement(statement);
-        }
-
-        //add ldf metadata
-        final ValueFactoryImpl vf = new ValueFactoryImpl();
+            //throw new RDFHandlerException("page " + page + " can't be generated");
+            Resource error = this.context != null ? this.context : vf.createBNode();
+            handler.handleStatement(new StatementImpl(error, RDF.TYPE, HYDRA.Error));
+            handler.handleStatement(new StatementImpl(error, RDFS.COMMENT, vf.createLiteral("page " + page + " can't be generated", "en")));
+        } else {
+            final int limit = LdfService.PAGE_SIZE < size - offset ? LdfService.PAGE_SIZE : size - offset;
+            List<Statement> filteredStatements = statements.subList(offset, limit);
+
+            //send statements to delegate writer
+            for (Statement statement : filteredStatements) {
+                handler.handleStatement(statement);
+            }
 
-        Resource dataset = this.context != null ? this.context : vf.createBNode();
-        handler.handleStatement(new StatementImpl(dataset, RDF.TYPE, VOID.Dataset));
-        handler.handleStatement(new StatementImpl(dataset, RDF.TYPE, HYDRA.Collection));
+            //add ldf metadata
+            Resource dataset = this.context != null ? this.context : vf.createBNode();
+            handler.handleStatement(new StatementImpl(dataset, RDF.TYPE, VOID.Dataset));
+            handler.handleStatement(new StatementImpl(dataset, RDF.TYPE, HYDRA.Collection));
 
-        Resource fragment = vf.createBNode(); //TODO
-        handler.handleStatement(new StatementImpl(dataset, VOID.subset, fragment));
-        handler.handleStatement(new StatementImpl(fragment, RDF.TYPE, HYDRA.Collection));
-        if (offset != 0 && limit != size) handler.handleStatement(new StatementImpl(fragment, RDF.TYPE, HYDRA.PagedCollection));
-        handler.handleStatement(new StatementImpl(fragment, VOID.triples, vf.createLiteral(Integer.toString(filteredStatements.size()), XSD.Integer)));
-        handler.handleStatement(new StatementImpl(fragment, HYDRA.totalItems, vf.createLiteral(Integer.toString(filteredStatements.size()), XSD.Integer)));
-        handler.handleStatement(new StatementImpl(fragment, HYDRA.itemsPerPage, vf.createLiteral(Integer.toString(LdfService.PAGE_SIZE), XSD.Integer)));
-        //TODO: HYDRA_FIRSTPAGE, HYDRA_PREVIOUSPAGE, HYDRA_NEXTPAGE
+            Resource fragment = vf.createBNode(); //TODO
+            handler.handleStatement(new StatementImpl(dataset, VOID.subset, fragment));
+            handler.handleStatement(new StatementImpl(fragment, RDF.TYPE, HYDRA.Collection));
+            if (offset != 0 && limit != size) {
+                handler.handleStatement(new StatementImpl(fragment, RDF.TYPE, HYDRA.PagedCollection));
+            }
+            handler.handleStatement(new StatementImpl(fragment, VOID.triples, vf.createLiteral(Integer.toString(filteredStatements.size()), XSD.Integer)));
+            handler.handleStatement(new StatementImpl(fragment, HYDRA.totalItems, vf.createLiteral(Integer.toString(filteredStatements.size()), XSD.Integer)));
+            handler.handleStatement(new StatementImpl(fragment, HYDRA.itemsPerPage, vf.createLiteral(Integer.toString(LdfService.PAGE_SIZE), XSD.Integer)));
+            //TODO: HYDRA_FIRSTPAGE, HYDRA_PREVIOUSPAGE, HYDRA_NEXTPAGE
 
-        //TODO: hydra controls
+            //TODO: hydra controls
+        }
 
         //and actually end the rdf
         handler.endRDF();

http://git-wip-us.apache.org/repos/asf/marmotta/blob/ec0b8196/platform/marmotta-ldf/src/main/resources/META-INF/beans.xml
----------------------------------------------------------------------
diff --git a/platform/marmotta-ldf/src/main/resources/META-INF/beans.xml b/platform/marmotta-ldf/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..6a9575d
--- /dev/null
+++ b/platform/marmotta-ldf/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,28 @@
+<?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.
+
+-->
+<beans
+        xmlns="http://java.sun.com/xml/ns/javaee"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="
+      http://java.sun.com/xml/ns/javaee
+      http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+</beans>

http://git-wip-us.apache.org/repos/asf/marmotta/blob/ec0b8196/platform/marmotta-ldf/src/main/resources/kiwi-module.properties
----------------------------------------------------------------------
diff --git a/platform/marmotta-ldf/src/main/resources/kiwi-module.properties b/platform/marmotta-ldf/src/main/resources/kiwi-module.properties
new file mode 100644
index 0000000..ee47136
--- /dev/null
+++ b/platform/marmotta-ldf/src/main/resources/kiwi-module.properties
@@ -0,0 +1,28 @@
+#
+# 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.
+#
+
+name=LDF
+weight = 60
+container = Query and Update
+container.weight = 12
+
+baseurl=/ldf
+
+subtitle = Linked Data Fragments
+
+webservices=org.apache.marmotta.platform.ldf.webservices.LdfWebService