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 19:05:35 UTC

[1/3] git commit: MARMOTTA-556: moved ldf logic out of a RDFHandler to properly manage some errors

Repository: marmotta
Updated Branches:
  refs/heads/MARMOTTA-556 ec0b81967 -> 9f39e3283


MARMOTTA-556: moved ldf logic out of a RDFHandler to properly manage some errors


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

Branch: refs/heads/MARMOTTA-556
Commit: 157e44e2b884db874a08509edf2a801766099fc7
Parents: ec0b819
Author: Sergio Fernández <wi...@apache.org>
Authored: Mon Oct 27 16:56:20 2014 +0100
Committer: Sergio Fernández <wi...@apache.org>
Committed: Mon Oct 27 16:56:20 2014 +0100

----------------------------------------------------------------------
 .../marmotta/platform/ldf/api/LdfService.java   |  33 ++--
 .../platform/ldf/services/LdfServiceImpl.java   |  98 ++++++++--
 .../platform/ldf/sesame/LdfRDFHandler.java      | 185 -------------------
 .../platform/ldf/webservices/LdfWebService.java |  17 +-
 4 files changed, 106 insertions(+), 227 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/157e44e2/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 c2d7dff..e8f84ce 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
@@ -17,14 +17,11 @@
  */
 package org.apache.marmotta.platform.ldf.api;
 
+import org.openrdf.model.Model;
 import org.openrdf.model.Resource;
 import org.openrdf.model.URI;
-import org.openrdf.rio.RDFFormat;
 import org.openrdf.model.Value;
 import org.openrdf.repository.RepositoryException;
-import org.openrdf.rio.RDFHandlerException;
-
-import java.io.OutputStream;
 
 /**
  * Linked Media Fragments service
@@ -36,33 +33,31 @@ public interface LdfService {
     final static int PAGE_SIZE = 100;
 
     /**
-     * Writes a fragment matching the specified triple fragment pattern
+     * Gets a fragment matching the specified triple fragment pattern
      * specified (null values are wildcards).
      *
      * @param subject fragment subject
      * @param predicate fragmnent predicate
      * @param object fragment object
      * @param page number of page (starting with 1)
-     * @param format RDF serialization
-     * @param out output stream where write the fragment
+     * @return fragment
      */
-    void writeFragment(String subject, String predicate, String object, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException, IllegalArgumentException;
+    Model getFragment(String subject, String predicate, String object, int page) throws RepositoryException, IllegalArgumentException;
 
     /**
-     * Writes a fragment matching the specified triple fragment pattern
+     * Gets a fragment matching the specified triple fragment pattern
      * specified (null values are wildcards).
      *
      * @param subject fragment subject
      * @param predicate fragmnent predicate
      * @param object fragment object
      * @param page number of page (starting with 1)
-     * @param format RDF serialization
-     * @param out output stream where write the fragment
+     * @return fragment
      */
-    void writeFragment(URI subject, URI predicate, Value object, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException, IllegalArgumentException;
+    Model getFragment(URI subject, URI predicate, Value object, int page) throws RepositoryException, IllegalArgumentException;
 
     /**
-     * Writes a fragment matching the specified quad fragment pattern
+     * Gets a fragment matching the specified quad fragment pattern
      * specified (null values are wildcards).
      *
      * @param subject fragment subject
@@ -70,13 +65,12 @@ public interface LdfService {
      * @param object fragment object
      * @param context named graph
      * @param page number of page (starting with 1)
-     * @param format RDF serialization
-     * @param out output stream where write the fragment
+     * @return fragment
      */
-    void writeFragment(String subject, String predicate, String object, String context, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException, IllegalArgumentException;
+    Model getFragment(String subject, String predicate, String object, String context, int page) throws RepositoryException, IllegalArgumentException;
 
     /**
-     * Writes a fragment matching the specified quad fragment pattern
+     * Gets a fragment matching the specified quad fragment pattern
      * specified (null values are wildcards).
      *
      * @param subject fragment subject
@@ -84,9 +78,8 @@ public interface LdfService {
      * @param object fragment object
      * @param context named graph
      * @param page number of page (starting with 1)
-     * @param format RDF serialization
-     * @param out output stream where write the fragment
+     * @return fragment
      */
-    void writeFragment(URI subject, URI predicate, Value object, Resource context, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException, IllegalArgumentException;
+    Model getFragment(URI subject, URI predicate, Value object, Resource context, int page) throws RepositoryException, IllegalArgumentException;
 
 }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/157e44e2/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 4ccdfeb..09a4dc8 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
@@ -17,23 +17,30 @@
  */
 package org.apache.marmotta.platform.ldf.services;
 
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableList;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.marmotta.commons.sesame.repository.ResultUtils;
+import org.apache.marmotta.commons.vocabulary.XSD;
 import org.apache.marmotta.platform.core.api.triplestore.SesameService;
 import org.apache.marmotta.platform.ldf.api.LdfService;
-import org.apache.marmotta.platform.ldf.sesame.LdfRDFHandler;
+import org.apache.marmotta.platform.ldf.vocab.HYDRA;
+import org.apache.marmotta.platform.ldf.vocab.VOID;
 import org.openrdf.model.*;
+import org.openrdf.model.impl.TreeModel;
 import org.openrdf.model.impl.ValueFactoryImpl;
+import org.openrdf.model.vocabulary.RDF;
 import org.openrdf.repository.RepositoryConnection;
 import org.openrdf.repository.RepositoryException;
 import org.openrdf.repository.RepositoryResult;
-import org.openrdf.rio.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.inject.Inject;
-import java.io.OutputStream;
 import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
 
 /**
  * Linked Media Fragments service implementation
@@ -48,17 +55,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, IllegalArgumentException {
-        writeFragment(subjectStr, predicateStr, objectStr, null, page, format, out);
+    public Model getFragment(String subjectStr, String predicateStr, String objectStr, int page) throws RepositoryException, IllegalArgumentException {
+        return getFragment(subjectStr, predicateStr, objectStr, null, page);
     }
 
     @Override
-    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);
+    public Model getFragment(URI subject, URI predicate, Value object, int page) throws RepositoryException, IllegalArgumentException {
+        return getFragment(subject, predicate, object, null, page);
     }
 
     @Override
-    public void writeFragment(String subjectStr, String predicateStr, String objectStr, String contextStr, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException, IllegalArgumentException {
+    public Model getFragment(String subjectStr, String predicateStr, String objectStr, String contextStr, int page) throws RepositoryException, IllegalArgumentException {
         final ValueFactoryImpl vf = new ValueFactoryImpl();
 
         URI subject = null;
@@ -101,22 +108,77 @@ public class LdfServiceImpl implements LdfService {
             }
         }
 
-        writeFragment(subject, predicate, object, context, page, format, out);
+        return getFragment(subject, predicate, object, context, page);
     }
 
     @Override
-    public void writeFragment(URI subject, URI predicate, Value object, Resource context, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException, IllegalArgumentException {
+    public Model getFragment(URI subject, URI predicate, Value object, Resource context, int page) throws RepositoryException, IllegalArgumentException {
         final RepositoryConnection conn = sesameService.getConnection();
-        try {
-            conn.begin();
-            RepositoryResult<Statement> statements = conn.getStatements(subject, predicate, object, true, context);
-            RDFHandler handler = new LdfRDFHandler(Rio.createWriter(format, out), context, page);
-            Rio.write(ResultUtils.iterable(statements), handler);
-        } finally {
-            if (conn != null && conn.isOpen()) {
-                conn.close();
+        conn.begin();
+
+        //first get the triple fragment for ordering by a fixed criteria
+        //TODO: do this effectively
+        final RepositoryResult<Statement> results = conn.getStatements(subject, predicate, object, true, context);
+        final List<Statement> statements = FluentIterable.from(ResultUtils.iterable(results)).toSortedList(new Comparator<Statement>() {
+            @Override
+            public int compare(Statement s1, Statement s2) {
+                int subjectComparison = s1.getSubject().stringValue().compareTo(s2.getSubject().stringValue());
+                int predicatedComparison = s1.getPredicate().stringValue().compareTo(s2.getPredicate().stringValue());
+                if (subjectComparison != 0) {
+                    return subjectComparison;
+                } else if (predicatedComparison != 0) {
+                    return predicatedComparison;
+                } else if ((s1.getObject() instanceof Literal) && (s2.getObject() instanceof Resource)) {
+                    return 1;
+                } else if ((s1.getObject() instanceof Resource) && (s2.getObject() instanceof Literal)) {
+                    return -1;
+                } else {
+                    return s1.getObject().stringValue().compareTo(s2.getObject().stringValue());
+                }
             }
+        });
+        //ResultUtils takes care of closing the connection when consuming the RepositoryResult
+
+        //then filter
+        final int size = statements.size();
+        final int offset = LdfService.PAGE_SIZE * (page - 1);
+
+        if (offset > size) {
+            throw new IllegalArgumentException("page " + page + " can't be generated, empty fragment");
+        }
+
+        final Model model = new TreeModel();
+        final ValueFactoryImpl vf = new ValueFactoryImpl();
+
+        final int limit = LdfService.PAGE_SIZE < size - offset ? LdfService.PAGE_SIZE : size - offset;
+        List<Statement> filteredStatements = statements.subList(offset, limit);
+        if (filteredStatements.isEmpty()) {
+            throw new IllegalArgumentException("empty fragment");
         }
+
+        //add the fragment
+        model.addAll(filteredStatements);
+
+        //and add ldf metadata
+        Resource dataset = context != null ? context : vf.createBNode();
+        model.add(dataset, RDF.TYPE, VOID.Dataset);
+        model.add(dataset, RDF.TYPE, HYDRA.Collection);
+
+        Resource fragment = vf.createBNode(); //TODO
+        model.add(dataset, VOID.subset, fragment);
+        model.add(fragment, RDF.TYPE, HYDRA.Collection);
+        if (offset != 0 && limit != size) {
+            model.add(fragment, RDF.TYPE, HYDRA.PagedCollection);
+        }
+        model.add(fragment, VOID.triples, vf.createLiteral(Integer.toString(filteredStatements.size()), XSD.Integer));
+        model.add(fragment, HYDRA.totalItems, vf.createLiteral(Integer.toString(filteredStatements.size()), XSD.Integer));
+        model.add(fragment, HYDRA.itemsPerPage, vf.createLiteral(Integer.toString(LdfService.PAGE_SIZE), XSD.Integer));
+        //TODO: HYDRA_FIRSTPAGE, HYDRA_PREVIOUSPAGE, HYDRA_NEXTPAGE
+
+        //TODO: hydra controls
+
+        return model;
+
     }
 
 }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/157e44e2/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
deleted file mode 100644
index 34ed85b..0000000
--- a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/sesame/LdfRDFHandler.java
+++ /dev/null
@@ -1,185 +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.marmotta.platform.ldf.sesame;
-
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import org.apache.marmotta.commons.vocabulary.XSD;
-import org.apache.marmotta.platform.ldf.api.LdfService;
-import org.apache.marmotta.platform.ldf.vocab.HYDRA;
-import org.apache.marmotta.platform.ldf.vocab.VOID;
-import org.openrdf.model.Literal;
-import org.openrdf.model.Resource;
-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;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-/**
- * Specialized statements handler doing some LDF specific thing,
- * such as paging or metadata generation, before sending them to
- * the delegated RDFHandler.
- *
- * (TODO: find a more performance solution)
- *
- * @author Sergio Fernández
- */
-public class LdfRDFHandler implements RDFHandler {
-
-    private List<Statement> statements;
-    private final RDFHandler handler;
-    private final Resource context;
-    private final int page;
-
-    /**
-     * Constructs a PagedRDFHandler with a delegate handler
-     *
-     * @param handler The handler to delegate the calls to
-     */
-    public LdfRDFHandler(RDFHandler handler) {
-        this(handler, null, 1);
-    }
-
-    /**
-     * Constructs a PagedRDFHandler with a delegate handler
-     *
-     * @param handler The handler to delegate the calls to
-     * @param page number of page (starting with 1)
-     */
-    public LdfRDFHandler(RDFHandler handler, int page) {
-        this(handler, null, page);
-    }
-
-    /**
-     * Constructs a PagedRDFHandler with a delegate handler
-     *
-     * @param handler The handler to delegate the calls to
-     * @param context dataset
-     */
-    public LdfRDFHandler(RDFHandler handler, Resource context) {
-        this(handler, context, 1);
-    }
-
-    /**
-     * Constructs a PagedRDFHandler with a delegate handler
-     *
-     * @param handler The handler to delegate the calls to
-     * @param context dataset
-     * @param page number of page (starting with 1)
-     */
-    public LdfRDFHandler(RDFHandler handler, Resource context, int page) {
-        super();
-        this.statements = new ArrayList<>();
-        this.handler = handler;
-        this.context = context;
-        this.page = page;
-    }
-
-    @Override
-    public void startRDF() throws RDFHandlerException {
-        handler.startRDF();
-    }
-
-    @Override
-    public void endRDF() throws RDFHandlerException {
-        final ValueFactoryImpl vf = new ValueFactoryImpl();
-
-        //first order by a fixed criteria
-        Collections.sort(statements, new Comparator<Statement>() {
-            @Override
-            public int compare(Statement s1, Statement s2) {
-                int subjectComparison = s1.getSubject().stringValue().compareTo(s2.getSubject().stringValue());
-                int predicatedComparison = s1.getPredicate().stringValue().compareTo(s2.getPredicate().stringValue());
-                if (subjectComparison != 0) {
-                    return subjectComparison;
-                } else if (predicatedComparison != 0) {
-                    return predicatedComparison;
-                } else if((s1.getObject() instanceof Literal) && (s2.getObject() instanceof Resource)) {
-                    return 1;
-                } else if((s1.getObject() instanceof Resource) && (s2.getObject() instanceof Literal)) {
-                    return -1;
-                } else {
-                    return s1.getObject().stringValue().compareTo(s2.getObject().stringValue());
-                }
-            }
-        });
-
-        //then filter
-        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");
-            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);
-            }
-
-            //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
-
-            //TODO: hydra controls
-        }
-
-        //and actually end the rdf
-        handler.endRDF();
-    }
-
-    @Override
-    public void handleNamespace(String prefix, String uri) throws RDFHandlerException {
-        handler.handleNamespace(prefix, uri);
-    }
-
-    @Override
-    public void handleStatement(Statement statement) throws RDFHandlerException {
-        statements.add(statement);
-    }
-
-    @Override
-    public void handleComment(String comment) throws RDFHandlerException {
-        handler.handleComment(comment);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/marmotta/blob/157e44e2/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/webservices/LdfWebService.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/webservices/LdfWebService.java b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/webservices/LdfWebService.java
index 0cc1f09..37b554c 100644
--- a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/webservices/LdfWebService.java
+++ b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/webservices/LdfWebService.java
@@ -5,8 +5,8 @@ import org.apache.marmotta.commons.http.ContentType;
 import org.apache.marmotta.commons.http.MarmottaHttpUtils;
 import org.apache.marmotta.platform.core.api.config.ConfigurationService;
 import org.apache.marmotta.platform.core.api.exporter.ExportService;
-import org.apache.marmotta.platform.core.util.WebServiceUtil;
 import org.apache.marmotta.platform.ldf.api.LdfService;
+import org.openrdf.model.Model;
 import org.openrdf.repository.RepositoryException;
 import org.openrdf.rio.RDFFormat;
 import org.openrdf.rio.RDFHandlerException;
@@ -72,14 +72,23 @@ public class LdfWebService {
                                  final String context,
                                  final int page,
                                  final String accept) {
-        final RDFFormat format = getFormat(accept);
 
+        final Model fragment;
+        try {
+            fragment = ldfService.getFragment(subject, predicate, object, context, page);
+        } catch (RepositoryException e) {
+            return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build();
+        } catch (IllegalArgumentException e) {
+            return Response.status(Response.Status.BAD_REQUEST).entity(e.getMessage()).build();
+        }
+
+        final RDFFormat format = getFormat(accept);
         StreamingOutput stream = new StreamingOutput() {
             @Override
             public void write(OutputStream outputStream) throws IOException, WebApplicationException {
                 try {
-                    ldfService.writeFragment(subject, predicate, object, context, page, format, outputStream);
-                } catch (RepositoryException | RDFHandlerException | IllegalArgumentException e) {
+                    Rio.write(fragment, outputStream, format);
+                } catch (RDFHandlerException e) {
                     throw new WebApplicationException(e);
                 }
             }


[2/3] git commit: MARMOTTA-556: added some tests

Posted by wi...@apache.org.
MARMOTTA-556: added some tests


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

Branch: refs/heads/MARMOTTA-556
Commit: b4d41400dc2d5709fc3fe70188458be56fc89f24
Parents: 157e44e
Author: Sergio Fernández <wi...@apache.org>
Authored: Mon Oct 27 18:57:55 2014 +0100
Committer: Sergio Fernández <wi...@apache.org>
Committed: Mon Oct 27 18:57:55 2014 +0100

----------------------------------------------------------------------
 .../triplestore/ContextServiceImpl.java         |  14 +-
 platform/marmotta-ldf/pom.xml                   |   2 +-
 .../ldf/webservices/LdfWebServiceTest.java      | 107 +++
 .../marmotta-ldf/src/test/resources/wikier.rdf  | 899 +++++++++++++++++++
 4 files changed, 1014 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/b4d41400/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/triplestore/ContextServiceImpl.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/triplestore/ContextServiceImpl.java b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/triplestore/ContextServiceImpl.java
index b49c556..f19d268 100644
--- a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/triplestore/ContextServiceImpl.java
+++ b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/triplestore/ContextServiceImpl.java
@@ -179,19 +179,19 @@ public class ContextServiceImpl implements ContextService {
         if(uri == null) {
             return null;
         }
-    	if (!UriUtil.validate(uri)) {
-    		uri = configurationService.getBaseContext() + uri;
-    		if (!UriUtil.validate(uri)) {
-    			throw new URISyntaxException(uri, "not valid context uri");
-    		}
-    	}
+        if (!UriUtil.validate(uri)) {
+            uri = configurationService.getBaseContext() + uri;
+            if (!UriUtil.validate(uri)) {
+                throw new URISyntaxException(uri, "not valid context uri");
+            }
+        }
         try {
             RepositoryConnection conn = sesameService.getConnection();
             try {
                 conn.begin();
                 checkConnectionNamespace(conn);
                 ValueFactory valueFactory = conn.getValueFactory();
-				URI ctx = valueFactory.createURI(uri);
+                URI ctx = valueFactory.createURI(uri);
                 if (StringUtils.isNotBlank(label)) {
                     conn.add(ctx, RDFS.LABEL, Literals.createLiteral(valueFactory, label), ctx);
                 }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b4d41400/platform/marmotta-ldf/pom.xml
----------------------------------------------------------------------
diff --git a/platform/marmotta-ldf/pom.xml b/platform/marmotta-ldf/pom.xml
index de1ae45..9d589ad 100644
--- a/platform/marmotta-ldf/pom.xml
+++ b/platform/marmotta-ldf/pom.xml
@@ -29,7 +29,7 @@
     <packaging>jar</packaging>
 
     <name>Apache Marmotta Platform: Linked Data Fragments</name>
-    <description>Provides support for the Linked Data Fragmets.</description>
+    <description>Provides support for the Linked Data Fragments.</description>
 
     <build>
         <pluginManagement>

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b4d41400/platform/marmotta-ldf/src/test/java/org/apache/marmotta/platform/ldf/webservices/LdfWebServiceTest.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-ldf/src/test/java/org/apache/marmotta/platform/ldf/webservices/LdfWebServiceTest.java b/platform/marmotta-ldf/src/test/java/org/apache/marmotta/platform/ldf/webservices/LdfWebServiceTest.java
new file mode 100644
index 0000000..f1cd661
--- /dev/null
+++ b/platform/marmotta-ldf/src/test/java/org/apache/marmotta/platform/ldf/webservices/LdfWebServiceTest.java
@@ -0,0 +1,107 @@
+package org.apache.marmotta.platform.ldf.webservices;
+
+import com.jayway.restassured.RestAssured;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.marmotta.platform.core.api.config.ConfigurationService;
+import org.apache.marmotta.platform.core.api.importer.ImportService;
+import org.apache.marmotta.platform.core.api.prefix.PrefixService;
+import org.apache.marmotta.platform.core.api.triplestore.ContextService;
+import org.apache.marmotta.platform.core.exception.io.MarmottaImportException;
+import org.apache.marmotta.platform.core.test.base.JettyMarmotta;
+import org.apache.marmotta.platform.core.webservices.io.ImportWebService;
+import org.apache.marmotta.platform.core.webservices.prefix.PrefixWebService;
+import org.apache.marmotta.platform.core.webservices.triplestore.ContextWebService;
+import org.junit.AfterClass;
+import org.junit.Assume;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openrdf.model.URI;
+import org.openrdf.model.impl.ValueFactoryImpl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URISyntaxException;
+
+import static com.jayway.restassured.RestAssured.expect;
+import static org.hamcrest.Matchers.equalTo;
+
+/**
+ * LDF Webservice test
+ *
+ * @author Sergio Fernández
+ */
+public class LdfWebServiceTest {
+
+    private static JettyMarmotta marmotta;
+
+    @BeforeClass
+    public static void setUp() {
+        marmotta = new JettyMarmotta("/marmotta", LdfWebService.class, ContextWebService.class);
+
+        RestAssured.baseURI = "http://localhost";
+        RestAssured.port = marmotta.getPort();
+        RestAssured.basePath = marmotta.getContext();
+
+    }
+
+    @AfterClass
+    public static void tearDown() {
+        marmotta.shutdown();
+    }
+
+    @Test
+    public void testEmptyContext() throws IOException, InterruptedException {
+        expect().
+            statusCode(400).
+        when().
+            get(LdfWebService.PATH + "/empty");
+    }
+
+
+    @Test
+    public void testFragment() throws IOException, InterruptedException, URISyntaxException, MarmottaImportException {
+        final ImportService importService = marmotta.getService(ImportService.class);
+        final ContextService contextService = marmotta.getService(ContextService.class);
+        final ConfigurationService configurationService = marmotta.getService(ConfigurationService.class);
+
+        final String ctx = RandomStringUtils.random(8, true, false);
+        final String uri = "http://www.wikier.org/foaf#wikier";
+
+        // 1. check is empty
+        expect().
+            statusCode(400).
+        when().
+            get(LdfWebService.PATH + "/" + ctx);
+
+        // 2. import some data
+        final InputStream is = this.getClass().getClassLoader().getResourceAsStream("/wikier.rdf");
+        expect().
+            statusCode(200).
+        given().
+            body(IOUtils.toString(is)).
+            header("Content-Type", "application/rdf+xml").
+        when().
+            post(configurationService.getBaseContext() + ctx);
+
+        // 3. request a fragment
+        expect().
+            statusCode(200).
+        given().
+            queryParam("subject", uri).
+        when().
+            get(LdfWebService.PATH + "/" + ctx);
+
+        // 4. test wrong page
+        expect().
+            statusCode(400).
+        given().
+            queryParam("subject", uri).
+            queryParam("page", 100).
+        when().
+            get(LdfWebService.PATH + "/" + ctx);
+
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b4d41400/platform/marmotta-ldf/src/test/resources/wikier.rdf
----------------------------------------------------------------------
diff --git a/platform/marmotta-ldf/src/test/resources/wikier.rdf b/platform/marmotta-ldf/src/test/resources/wikier.rdf
new file mode 100644
index 0000000..6edb4b9
--- /dev/null
+++ b/platform/marmotta-ldf/src/test/resources/wikier.rdf
@@ -0,0 +1,899 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+    xmlns:owl="http://www.w3.org/2002/07/owl#"
+    xmlns:foaf="http://xmlns.com/foaf/0.1/"
+    xmlns:doap="http://usefulinc.com/ns/doap#"
+    xmlns:sioc="http://rdfs.org/sioc/ns#"
+    xmlns:sioct="http://rdfs.org/sioc/types#"
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:dct="http://purl.org/dc/terms/"
+    xmlns:mvcb="http://webns.net/mvcb/"
+    xmlns:rss="http://purl.org/rss/1.0/"
+    xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
+    xmlns:contact="http://www.w3.org/2000/10/swap/pim/contact#"
+    xmlns:air="http://www.daml.org/2001/10/html/airport-ont#"
+    xmlns:wn="http://xmlns.com/wordnet/1.6/"
+    xmlns:uranai="http://kota.s12.xrea.com/vocab/uranai#"
+    xmlns:rel="http://purl.org/vocab/relationship/"
+    xmlns:session="http://redfoot.net/2005/session#"
+    xmlns:cert="http://www.w3.org/ns/auth/cert#"
+    xmlns:wot="http://xmlns.com/wot/0.1/"
+    xml:base="http://www.wikier.org/foaf"
+    xml:lang="en"
+>
+
+  <foaf:Document rdf:about="">
+    <rdfs:label>Wikier's FOAF document</rdfs:label>
+    <rdfs:comment>Document with Friend-of-a-Friend description of Wikier</rdfs:comment>
+    <foaf:maker rdf:resource="http://www.wikier.org/foaf#wikier"/>
+    <dct:license rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" />
+    <foaf:primaryTopic rdf:resource="http://www.wikier.org/foaf#wikier"/>
+    <dct:created>2005-05-14</dct:created>
+    <dct:modified>2014-02-15</dct:modified>
+    <mvcb:generatorAgent rdf:resource="http://rdfohloh.wikier.org/project/emacs"/>
+    <mvcb:errorReportsTo rdf:resource="mailto:sergio@wikier.org" />
+  </foaf:Document>
+
+  <foaf:Person rdf:about="http://www.wikier.org/foaf#wikier">
+    <foaf:name xml:lang="es">Sergio Fernández</foaf:name>
+    <foaf:title>Mr</foaf:title>
+    <foaf:firstName xml:lang="es">Sergio</foaf:firstName>
+    <foaf:surname xml:lang="es">Fernández</foaf:surname>
+    <foaf:gender>male</foaf:gender>
+    <foaf:birthday>1981-10-07</foaf:birthday>
+    <foaf:nick>Wikier</foaf:nick>
+    <session:hexdigest>30e97da6ad2d5be1086a64f3fc44a03a6fecadb3</session:hexdigest>
+    <foaf:phone rdf:resource="tel:+34-667-981919" />
+    <uranai:bloodtype>O-</uranai:bloodtype>
+    <rdfs:comment>This URI indentifies me as a person. Feel free to use it when making statements about me as a person</rdfs:comment>
+    <rdfs:comment xml:lang="es">Esta URI me identifica como persona. Úsala para referirte a mi como persona</rdfs:comment>
+    <foaf:isDescribedIn rdf:resource="http://www.wikier.org/foaf.rdf" />
+
+    <foaf:mbox rdf:resource="mailto:sergio@wikier.org" />
+    <foaf:mbox_sha1sum>d0fd987214f56f70b4c47fb96795f348691f93ab</foaf:mbox_sha1sum>
+
+    <foaf:mbox rdf:resource="mailto:wikier@asturlinux.org" />
+    <foaf:mbox_sha1sum>119222cf3a2893a375cc4f884a0138155c771415</foaf:mbox_sha1sum>
+
+    <foaf:mbox rdf:resource="mailto:sergio.fernandez@salzburgresearch.at" />
+    <foaf:mbox_sha1sum>fe6d23dc07ca84b1c487eb20d816aa4caf12ee84</foaf:mbox_sha1sum>
+
+    <foaf:mbox rdf:resource="mailto:wikier@apache.org" />
+    <foaf:mbox_sha1sum>762842c4b57e9657fe68badcc5439d3053d85f05</foaf:mbox_sha1sum>
+
+    <!-- 
+        some old addresses I don't use anymore... 
+        even some are no longer under my control
+        but identify me at some point
+    -->
+    <foaf:mbox_sha1sum>3bb939b9fe7a4e45ec9d65d64074c3b2a4ce317d</foaf:mbox_sha1sum> <!-- @fundacionctic.org -->
+    <foaf:mbox_sha1sum>749774803c4b05dba1b2401d3f53acd4bbf78b9f</foaf:mbox_sha1sum> <!-- @hotmail.com -->
+    <foaf:mbox_sha1sum>a087165d16083deb201734af4dec2d64a40236fc</foaf:mbox_sha1sum> <!-- @petra.euitio.uniovi.es -->
+
+    <foaf:homepage rdf:resource="http://www.wikier.org" dct:title="Wikier.org" />
+    
+    <foaf:workplaceHomepage rdf:resource="http://www.redlink.co" dct:title="Redlink GmbH" />
+    <foaf:workplaceHomepage rdf:resource="http://www.salzburgresearch.at" dct:title="Salzburg Research" />
+
+    <foaf:schoolHomepage rdf:resource="http://www.uniovi.es" dct:title="University of Oviedo" />
+
+    <foaf:depiction>
+      <foaf:Image rdf:about="http://www.wikier.org/stuff/sergio.jpg">
+        <dct:title>Sergio Fernández</dct:title>
+        <dct:format>image/jpg</dct:format>
+      </foaf:Image>
+    </foaf:depiction>
+    
+    <owl:sameAs rdf:resource="http://rdf.freebase.com/ns/m.07zqbwz" />
+    <owl:sameAs rdf:resource="http://www.wikier.org/foaf.rdf#wikier" />
+    <owl:sameAs rdf:resource="http://www.advogato.org/person/wikier/foaf.rdf#me" />
+    <owl:sameAs rdf:resource="http://apassant.net/home/2007/12/flickrdf/data/people/7787294@N06" />
+    <owl:sameAs rdf:resource="http://www.deri.ie/about/team/member/Sergio_Fernández#me" />
+    <owl:sameAs rdf:resource="http://semanticweb.org/id/Sergio_Fernández" />
+    <owl:sameAs rdf:resource="http://community.linkeddata.org/dataspace/person/Wikier#this" />
+    <owl:sameAs rdf:resource="http://rdfohloh.wikier.org/user/17685#person" />
+    <owl:sameAs rdf:resource="http://data.semanticweb.org/person/sergio-fernandez" />
+    <owl:sameAs rdf:resource="http://identi.ca/user/41516" />
+    <owl:sameAs rdf:resource="http://alpha.libre.fm/user/wikier#me" />
+    <owl:sameAs rdf:resource="http://semantictweet.com/Wikier#me" />
+    <owl:sameAs rdf:resource="http://tagora.ecs.soton.ac.uk/delicious/Wikier" />
+    <owl:sameAs rdf:resource="http://smob.wikier.org/me" />
+    <owl:differentFrom rdf:resource="http://www.eswc2006.org/people/#sergio-fernandez" />
+    <owl:differentFrom rdf:resource="http://dbpedia.org/resource/Sergio_Fernandez" />
+
+    <foaf:openid rdf:resource="http://openid.blogs.es/Wikier" />
+    <cert:key rdf:resource="http://www.wikier.org/foaf#pk" />
+
+    <foaf:based_near rdf:resource="http://dbpedia.org/resource/Salzburg" />
+
+    <contact:nearestAirport>
+      <air:Airport rdf:about="http://dig.csail.mit.edu/2006/wikdt/airports?iata=SZG#item">
+        <air:iataCode>SZG</air:iataCode>
+        <dct:title>W. A. Mozart Airport</dct:title>
+      </air:Airport>
+    </contact:nearestAirport>
+    
+    <foaf:interest rdf:resource="http://www.w3.org/2001/sw/" dct:title="Semantic Web" />
+    <foaf:interest rdf:resource="http://www.w3.org/RDF/" dct:title="Resource Description Framework (RDF)" />
+    <foaf:interest rdf:resource="http://linkeddata.org/" dct:title="Linked Data" />
+    <foaf:interest rdf:resource="http://www.sioc-project.org/" dct:title="SIOC" />
+    <foaf:interest rdf:resource="http://dbpedia.org/resource/Social_web" dct:title="Social Web" />
+    <foaf:interest rdf:resource="http://tools.ietf.org/html/rfc2616" dct:title="HTTP" />
+    <foaf:interest rdf:resource="http://www.w3.org/WAI/" dct:title="Web Accessility" />
+    <foaf:interest rdf:resource="http://www.fsf.org/" dct:title="Free Software" />
+    <foaf:interest rdf:resource="http://www.python.org/" dct:title="Python" />
+
+    <foaf:weblog> 
+      <sioc:Forum rdf:about="http://www.wikier.org/blog">
+        <dct:title>Wikier.org blog</dct:title>
+        <sioc:has_owner rdf:resource="http://www.wikier.org/blog#wikier" />
+        <rss:channel rdf:resource="http://www.wikier.org/blog/rss" />
+        <rdf:type rdf:resource="http://rdfs.org/sioc/types#Weblog" />
+      </sioc:Forum> 
+    </foaf:weblog>
+
+    <foaf:account>
+      <sioc:UserAccount rdf:about="http://www.wikier.org/blog#wikier">
+        <sioc:name>wikier</sioc:name>
+      </sioc:UserAccount>
+    </foaf:account>
+
+    <foaf:account> 
+      <sioc:UserAccount rdf:about="#sourceforge"> 
+        <sioc:name>wikier</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://sourceforge.net/" />
+        <foaf:page rdf:resource="http://sourceforge.net/users/wikier/" />
+      </sioc:UserAccount> 
+    </foaf:account>
+
+    <foaf:account> 
+      <sioc:UserAccount rdf:about="#advogato"> 
+        <sioc:name>wikier</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://www.advogato.org/" />
+        <foaf:page rdf:resource="http://www.advogato.org/person/wikier/" />
+        <rdfs:seeAlso rdf:resource="http://www.advogato.org/person/wikier/foaf.rdf" />
+      </sioc:UserAccount> 
+    </foaf:account>
+
+    <foaf:account> 
+      <sioc:UserAccount rdf:about="#delicious"> 
+        <sioc:name>Wikier</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://delicious.com/" />
+        <foaf:page rdf:resource="http://delicious.com/Wikier" />
+        <owl:sameAs rdf:resource="http://tagora.ecs.soton.ac.uk/account/delicious/Wikier" />
+        <rdfs:seeAlso rdf:resource="http://tagora.ecs.soton.ac.uk/delicious/Wikier/rdf" />
+      </sioc:UserAccount> 
+    </foaf:account>
+
+    <foaf:account>
+      <sioc:UserAccount rdf:about="#flickr"> 
+        <sioc:name>wikier</sioc:name>
+        <sioc:id>7787294@N06</sioc:id>
+        <foaf:accountServiceHomepage rdf:resource="http://www.flickr.com/" />
+        <foaf:page rdf:resource="http://www.flickr.com/people/wikier/" />
+        <rdfs:seeAlso rdf:resource="http://apassant.net/home/2007/12/flickrdf/data/people/7787294@N06" />
+      </sioc:UserAccount> 
+    </foaf:account>
+
+    <foaf:account> 
+      <sioc:UserAccount rdf:about="#linkedin">
+        <sioc:id>12286431</sioc:id>
+        <foaf:accountServiceHomepage rdf:resource="http://www.linkedin.com/" />
+        <foaf:page rdf:resource="http://www.linkedin.com/in/sergiofernandez" />
+      </sioc:UserAccount>
+    </foaf:account>
+
+    <foaf:account>
+      <sioc:UserAccount rdf:about="#freenode">
+        <sioc:name>Wikier</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://www.freenode.net/irc_servers.shtml" />
+        <owl:sameAs rdf:resource="irc://freenode/Wikier,isuser" />
+        <owl:sameAs rdf:resource="http://irc.sioc-project.org/users/Wikier#user" />
+        <rdfs:seeAlso rdf:resource="http://irc.sioc-project.org/users/Wikier" />
+      </sioc:UserAccount>
+    </foaf:account>
+
+    <foaf:account>
+      <sioc:UserAccount rdf:about="#lastfm"> 
+        <sioc:name>Wikier</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://www.last.fm/" />
+        <foaf:page rdf:resource="http://www.last.fm/user/Wikier/" />
+        <owl:sameAs rdf:resource="http://dbtune.org/last-fm/wikier" />
+        <rdfs:seeAlso rdf:resource="http://dbtune.org/last-fm/wikier.rdf" />
+        <rdfs:seeAlso rdf:resource="http://ws.audioscrobbler.com/1.0/user/wikier/profile.xml" />
+      </sioc:UserAccount> 
+    </foaf:account>
+
+    <foaf:account>
+      <sioc:UserAccount rdf:about="#twitter"> 
+        <sioc:name>Wikier</sioc:name>
+        <sioc:id>6417242</sioc:id>
+        <foaf:accountServiceHomepage rdf:resource="http://twitter.com/" />
+        <foaf:page rdf:resource="http://twitter.com/Wikier" />
+        <owl:sameAs rdf:resource="http://rdfohloh.wikier.org/user/17685" />
+        <rdfs:seeAlso rdf:resource="http://rdfohloh.wikier.org/user/17685/rdf" />
+      </sioc:UserAccount> 
+    </foaf:account>
+
+    <foaf:account>
+      <sioc:UserAccount rdf:about="#twine"> 
+        <sioc:name>wikier</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://www.twine.com/" />
+        <foaf:page rdf:resource="http://www.twine.com/user/wikier" />
+        <owl:sameAs rdf:resource="http://www.twine.com/user/wikier" />
+        <rdfs:seeAlso rdf:resource="http://www.twine.com/user/wikier?rdf" />
+      </sioc:UserAccount> 
+    </foaf:account>
+
+    <foaf:account>
+      <sioc:UserAccount rdf:about="#ohloh"> 
+        <sioc:name>wikier</sioc:name>
+        <sioc:id>17685</sioc:id>
+        <foaf:accountServiceHomepage rdf:resource="http://www.ohloh.net/" />
+        <foaf:page rdf:resource="http://www.ohloh.net/accounts/17685" />
+        <owl:sameAs rdf:resource="http://rdfohloh.wikier.org/user/17685" />
+        <rdfs:seeAlso rdf:resource="http://rdfohloh.wikier.org/user/17685/rdf" />
+      </sioc:UserAccount> 
+    </foaf:account>
+
+    <foaf:account>
+      <sioc:UserAccount rdf:about="#facebook">
+        <sioc:name>wikier</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://www.facebook.com/" />
+        <foaf:page rdf:resource="http://www.facebook.com/wikier" />
+        <owl:sameAs rdf:resource="http://sam.tw.rpi.edu/data/face/resource/556663893#me" />
+        <rdfs:seeAlso rdf:resource="http://sam.tw.rpi.edu/data/face/resource/556663893" />
+	<owl:sameAs rdf:resource="http://www.matthew-rowe.com/FoafGeneratorRedux/files/foaf-556663893.rdf#me" />
+	<rdfs:seeAlso rdf:resource="http://www.matthew-rowe.com/FoafGeneratorRedux/files/foaf-556663893.rdf" />
+        <rdfs:seeAlso rdf:resource="http://graph.facebook.com/wikier" />
+      </sioc:UserAccount> 
+    </foaf:account>
+
+    <foaf:jabberID>wikier@jabber.org</foaf:jabberID>
+    <foaf:msnChatID>sergio@wikier.org</foaf:msnChatID>
+
+    <foaf:account> 
+      <sioc:UserAccount rdf:about="#skype">
+        <sioc:name>sergio.fernandez.lopez</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://www.skype.com/" />
+        <rdfs:seeAlso rdf:resource="http://mystatus.skype.com/sergio.fernandez.lopez.xml" />
+        <owl:sameAs rdf:resource="skype://sergio.fernandez.lopez" />
+      </sioc:UserAccount>
+    </foaf:account>
+
+    <foaf:account> 
+      <sioc:UserAccount rdf:about="#friendfeed">
+        <sioc:name>wikier</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://friendfeed.com/" />
+        <foaf:page rdf:resource="http://friendfeed.com/wikier" />
+      </sioc:UserAccount>
+    </foaf:account>
+
+    <foaf:account> 
+      <sioc:UserAccount rdf:about="#slideshare">
+        <sioc:name>Wikier</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://www.slideshare.net/" />
+        <foaf:page rdf:resource="http://www.slideshare.net/Wikier" />
+      </sioc:UserAccount>
+    </foaf:account>
+
+    <foaf:account> 
+      <sioc:UserAccount rdf:about="#rememberthemilk">
+        <sioc:name>wikier</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://www.rememberthemilk.com/" />
+        <foaf:page rdf:resource="http://www.rememberthemilk.com/home/wikier/" />
+      </sioc:UserAccount>
+    </foaf:account>
+
+    <foaf:account> 
+      <sioc:UserAccount rdf:about="#identica">
+        <sioc:name>wikier</sioc:name>
+        <sioc:id>41516</sioc:id>
+        <foaf:accountServiceHomepage rdf:resource="http://identi.ca/" />
+        <foaf:page rdf:resource="http://identi.ca/wikier" />
+        <rdfs:seeAlso rdf:resource="http://identi.ca/wikier/foaf" />
+      </sioc:UserAccount>
+    </foaf:account>
+
+    <foaf:account> 
+      <sioc:UserAccount rdf:about="#tripit">
+        <sioc:name>wikier</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://www.tripit.com/" />
+        <foaf:page rdf:resource="http://www.tripit.com/people/wikier" />
+      </sioc:UserAccount>
+    </foaf:account>
+
+    <foaf:account> 
+      <sioc:UserAccount rdf:about="#librefm">
+        <sioc:name>wikier</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://libre.fm/" />
+        <foaf:page rdf:resource="http://alpha.libre.fm/user/wikier" />
+        <owl:sameAs rdf:resource="http://alpha.libre.fm/user/wikier#acct" />
+	    <rdfs:seeAlso rdf:resource="http://alpha.libre.fm/rdf.php?fmt=xml&amp;page=/user/wikier" />
+      </sioc:UserAccount>
+    </foaf:account>
+
+    <foaf:account> 
+      <sioc:UserAccount rdf:about="#mendeley">
+        <foaf:accountServiceHomepage rdf:resource="http://www.mendeley.com/" />
+        <foaf:page rdf:resource="http://www.mendeley.com/profiles/sergio-fernandez/" />
+      </sioc:UserAccount>
+    </foaf:account>
+
+    <foaf:account> 
+      <sioc:UserAccount rdf:about="#w3c">
+        <sioc:name>fsergio</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://www.w3.org/" />
+        <foaf:page rdf:resource="http://esw.w3.org/User:Fsergio" />
+        <foaf:page rdf:resource="http://www.w3.org/2001/sw/wiki/User:Fsergio" />
+        <owl:sameAs rdf:resource="http://w3.org/2001/sw/wiki/Special:URIResolver/User-3AFsergio" />
+      </sioc:UserAccount>
+    </foaf:account>
+
+    <foaf:account> 
+      <sioc:UserAccount rdf:about="#bitbucket">
+        <sioc:name>wikier</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://bitbucket.org/" />
+        <foaf:page rdf:resource="http://bitbucket.org/wikier" />
+        <foaf:page rdf:resource="http://hg.wikier.org/" />
+      </sioc:UserAccount>
+    </foaf:account>
+
+    <foaf:account> 
+      <sioc:UserAccount rdf:about="#github">
+        <sioc:name>wikier</sioc:name>
+        <foaf:accountServiceHomepage rdf:resource="http://github.com" />
+        <foaf:page rdf:resource="http://github.com/wikier" />
+      </sioc:UserAccount>
+    </foaf:account>
+
+    <!-- knows -->
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://berrueta.net/foaf.rdf#me">
+        <foaf:name>Diego Berrueta</foaf:name>
+        <foaf:mbox_sha1sum>98a99390f2fe9395041bddc41e933f50e59a5ecb</foaf:mbox_sha1sum>
+        <foaf:nick>berrueta</foaf:nick>
+        <rdfs:seeAlso rdf:resource="http://berrueta.net/foaf.rdf" />
+        <foaf:homepage rdf:resource="http://berrueta.net/" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="ttp://www.ifrade.es/#frade">
+        <foaf:name>Iván Frade</foaf:name>
+        <foaf:nick>frade</foaf:nick>
+        <foaf:nick>asjas</foaf:nick>
+        <foaf:mbox_sha1sum>84d076726727b596b08198e26ef37e4817353e97</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.ifrade.es/"/>
+        <rdfs:seeAlso rdf:resource="http://frade.no-ip.info:2080/~ivan/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.di.uniovi.es/~labra/labraFoaf.rdf#me">
+        <foaf:name>José Emilio Labra</foaf:name>
+        <foaf:mbox_sha1sum>3d0a8f16ce3d560ca75e16d36f6ded63599c60a7</foaf:mbox_sha1sum>
+        <rdfs:seeAlso rdf:resource="http://www.di.uniovi.es/~labra/labraFoaf.rdf" />
+        <foaf:homepage rdf:resource="ttp://www.di.uniovi.es/~labra/"/>
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person>
+        <foaf:name>Ruben Sánchez</foaf:name>
+        <foaf:mbox_sha1sum>bdb8f18a6f68dcbd15099401eea8e7706e4dadca</foaf:mbox_sha1sum>
+        <foaf:nick>cheto</foaf:nick>
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.w3c.es/Personal/Martin/foaf.rdf#me">
+        <foaf:name>Martín Álvarez</foaf:name>
+        <foaf:mbox_sha1sum>3d23bbb5b37a688d9c7fa781844d52d248b47ceb</foaf:mbox_sha1sum>
+        <rdfs:seeAlso rdf:resource="http://www.w3c.es/Personal/Martin/foaf.rdf" />
+        <foaf:homepage rdf:resource="http://www.w3c.es/Personal/Martin/" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.w3.org/People/Josema/#josema">
+        <foaf:name>Jose Manuel Alonso</foaf:name>
+        <foaf:mbox_sha1sum>eab0c0e0b0f26d41d2a3a3e74fb4ca67ad089bbe</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.w3.org/People/Josema/" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://petra.euitio.uniovi.es/~i1637566/foaf.rdf#me">
+        <foaf:name>Jose María Álvarez</foaf:name>
+        <foaf:mbox_sha1sum>135a617c9e2e37003e1c38be6c21ce7af433552f</foaf:mbox_sha1sum>
+        <rdfs:seeAlso rdf:resource="http://petra.euitio.uniovi.es/~i1637566/foaf.rdf" />
+        <foaf:homepage rdf:resource="http://petra.euitio.uniovi.es/~i1637566/" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.kagueto.net/files/foaf.rdf#me">
+        <foaf:name>Miguel García</foaf:name>
+        <foaf:mbox_sha1sum>0363c58a9ec61db68e3fa37cfcd38b301deaab97</foaf:mbox_sha1sum>
+        <foaf:nick>kagueto</foaf:nick>
+        <rdfs:seeAlso rdf:resource="http://www.kagueto.net/files/foaf.rdf" />
+        <foaf:homepage rdf:resource="http://www.kagueto.net/" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://criptonita.com/~nacho/foaf.rdf#me">
+        <foaf:name>Nacho Barrientos</foaf:name>
+        <foaf:nick>chipi</foaf:nick>
+        <foaf:mbox_sha1sum>6b31c41e80d36cc08a489462c0c2c37d7de8d2e5</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://criptonita.com/~nacho" />
+        <rdfs:seeAlso rdf:resource="http://criptonita.com/~nacho/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://aleasoft.hopto.org/~alvaro/weblog/foaf.rdf#me">
+        <foaf:name>Álvaro Alea</foaf:name>
+        <foaf:nick>aleasoft</foaf:nick>
+        <foaf:mbox_sha1sum>eb6d13cb99da7b9895030f4c2f22286a18d23442</foaf:mbox_sha1sum>
+        <rdfs:seeAlso rdf:resource="http://aleasoft.hopto.org/~alvaro/weblog/foaf.rdf" />
+        <foaf:homepage rdf:resource="http://www.asturlinux.org/~alvaro/" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.asturlinux.org/~jsmanrique/foaf.rdf#me">
+        <foaf:name>José Manrique López</foaf:name>
+        <foaf:mbox_sha1sum>bd6566af7b3bfa28f917aa545bf4174661817d79</foaf:mbox_sha1sum>
+        <foaf:nick>jsmanrique</foaf:nick>
+        <rdfs:seeAlso rdf:resource="http://www.asturlinux.org/~jsmanrique/foaf.rdf" />
+        <foaf:homepage rdf:resource="http://www.jsmanrique.es/" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://xtrasgu.org/foaf.rdf#xtrasgu">
+        <foaf:name>Pablo López</foaf:name>
+        <foaf:mbox_sha1sum>97d9756f1281858d0e9e4489003073e4986546ce</foaf:mbox_sha1sum>
+        <foaf:nick>xtrasgu</foaf:nick>
+        <foaf:homepage rdf:resource="http://xtrasgu.org/" />
+        <rdfs:seeAlso rdf:resource="http://xtrasgu.org/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.beaufour.dk/#beaufour">
+        <foaf:name>Allan Beaufour</foaf:name>
+        <foaf:mbox_sha1sum>16f6c8cfe4360977908a3c28072adcbc7ef15a75</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.beaufour.dk/" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://eikeon.com/foaf.rdf#eikeon">
+        <foaf:name>Daniel Krech</foaf:name>
+        <foaf:mbox_sha1sum>3665f4f2370ddd6358da4062f3293f6dc7f39b7c</foaf:mbox_sha1sum>
+        <foaf:nick>eikeon</foaf:nick>
+        <rdfs:seeAlso rdf:resource="http://eikeon.com/foaf.rdf" />
+        <foaf:homepage rdf:resource="http://eikeon.com/" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://captsolo.net/semweb/foaf-captsolo.rdf#Uldis_Bojars">
+        <foaf:name>Uldis Bojars</foaf:name>
+        <foaf:mbox_sha1sum>56e6f2903933a611708ebac456d45e454ddb8838</foaf:mbox_sha1sum>
+        <foaf:nick>CaptSolo</foaf:nick>
+        <rdfs:seeAlso rdf:resource="http://captsolo.net/semweb/foaf-captsolo.rdf" />
+        <foaf:homepage rdf:resource="http://captsolo.net/" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.johnbreslin.com/foaf/foaf.rdf#me">
+        <foaf:name>John Breslin</foaf:name>
+        <foaf:mbox_sha1sum>9a6b7eefc08fd755d51dd9321aecfcc87992e9a2</foaf:mbox_sha1sum>
+        <foaf:nick>Cloud</foaf:nick>
+        <rdfs:seeAlso rdf:resource="http://www.johnbreslin.com/foaf/foaf.rdf"/>
+        <foaf:homepage rdf:resource="http://www.johnbreslin.com/"/>
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.koalazoo.es/foaf.rdf#me">
+        <foaf:name>Roberto Rodríguez</foaf:name>
+        <foaf:mbox_sha1sum>0ca8d97a347deaf776a0d0967dba48c571c3dd09</foaf:mbox_sha1sum>
+        <foaf:nick>koalazoo</foaf:nick>
+        <foaf:nick>Robers</foaf:nick>
+        <foaf:nick>McMan</foaf:nick>
+        <foaf:homepage rdf:resource="http://www.koalazoo.es/" />
+        <rdfs:seeAlso rdf:resource="http://www.koalazoo.es/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://iminguez.com/foaf.rdf#me">
+        <foaf:name>Iván Mínguez</foaf:name>
+        <foaf:nick>Pyro</foaf:nick>
+        <foaf:mbox_sha1sum>057048f30557d8e26f71fdec6ef43542166ca932</foaf:mbox_sha1sum>
+        <rdfs:seeAlso rdf:resource="http://iminguez.com/foaf.rdf" />
+        <foaf:homepage rdf:resource="http://iminguez.com/" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.talkdigger.com/foaf/fgiasson">
+        <foaf:name>Frédérick Giasson</foaf:name>
+        <foaf:nick>fgiasson</foaf:nick>
+        <foaf:mbox_sha1sum>bb81ecaac6992f832ea69313bd04d4fd9e2e4e0f</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="htp://fgiasson.com/" />
+        <rdfs:seeAlso rdf:resource="http://www.talkdigger.com/foaf/fgiasson" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://apassant.net/foaf.rdf#alex">
+        <foaf:name>Alexandre Passant</foaf:name>
+        <foaf:nick>terraces</foaf:nick>
+        <foaf:mbox_sha1sum>528b95cc44060ceea571d7498a9fd2c7e3ca8a4c</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://apassant.net/" />
+        <rdfs:seeAlso rdf:resource="http://apassant.net/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.ivan-herman.net/me">
+        <foaf:name>Ivan Herman</foaf:name>
+        <foaf:mbox_sha1sum>5ac8032d5f6012aa1775ea2f63e1676bafd5e80b</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.ivan-herman.net/" />
+        <rdfs:seeAlso rdf:resource="http://www.ivan-herman.net/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://tuukka.iki.fi/tuukka#person">
+        <foaf:name>Tuukka Hastrup</foaf:name>
+        <foaf:nick>tuukkah</foaf:nick>
+        <foaf:mbox_sha1sum>ab0acba1373e6822d3a2b1a62cd9f85d57855551</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://tuukka.iki.fi/" />
+        <rdfs:seeAlso rdf:resource="http://tuukka.iki.fi/tuukka" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.deri.ie/about/team/member/Darragh_Grealish#me">
+        <foaf:name>Darragh Grealish</foaf:name>
+        <foaf:mbox_sha1sum>3e12d72604e533b05b2f241fb8a8f0ca3a22dcfb</foaf:mbox_sha1sum>
+        <rdfs:seeAlso rdf:resource="http://www.deri.ie/fileadmin/scripts/foaf.php?id=312" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.deri.ie/about/team/member/Doug_Foxvog#me">
+        <foaf:name>Doug Foxvog</foaf:name>
+        <foaf:mbox_sha1sum>8c9a61823f1b41bca5c409a631d442181b8160b6</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.foxvog.org/doug/" />
+        <rdfs:seeAlso rdf:resource="http://www.deri.ie/fileadmin/scripts/foaf.php?id=78" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://richard.cyganiak.de/foaf.rdf#cygri">
+        <foaf:name>Richard Cyganiak</foaf:name>
+        <foaf:nick>cygri</foaf:nick>
+        <foaf:mbox_sha1sum>bb3df3cf988e2d5fc234840d9dc9d4a6eaf822bd</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://richard.cyganiak.de/" />
+        <foaf:weblog rdf:resource="http://dowhatimean.net/" />
+        <rdfs:seeAlso rdf:resource="http://richard.cyganiak.de/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.ifomis.org/people/holger/foaf.rdf#holger">
+        <foaf:name>Holger Stenzhorn</foaf:name>
+        <foaf:mbox_sha1sum>174ccf605f8a39a16c1c2a42db0936e638144524</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.ifomis.org/people/holger/" />
+        <rdfs:seeAlso rdf:resource="http://www.ifomis.org/people/holger/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.polleres.net/foaf.rdf#me">
+        <foaf:name>Axel Polleres</foaf:name>
+        <foaf:mbox_sha1sum>35a8d4858ba240996a6f71836d93fbfdcd2b4843</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.polleres.net/" />
+        <rdfs:seeAlso rdf:resource="http://www.polleres.net/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://danbri.org/foaf.rdf#danbri">
+        <foaf:name>Dan Brickley</foaf:name>
+        <foaf:mbox_sha1sum>6e80d02de4cb3376605a34976e31188bb16180d0</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://danbri.org/" />
+        <rdfs:seeAlso rdf:resource="http://danbri.org/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.fundacionctic.org/web/contenidos/es/personal/personal_0007.html#polo">
+        <foaf:name>Luis Polo</foaf:name>
+        <foaf:mbox_sha1sum>0d890d1a9d0f725d244e1bb099fee0d89df074a5</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.fundacionctic.org/web/contenidos/es/personal/personal_0007.html" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.tudorgroza.org/res/foaf.rdf#me">
+        <foaf:name>Tudor Groza</foaf:name>
+        <foaf:mbox_sha1sum>75691f9b8834cf1e1552893d01c7bc0dca6136ee</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.tudorgroza.org/" />
+        <rdfs:seeAlso rdf:resource="http://www.tudorgroza.org/res/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://harth.org/andreas/foaf#ah">
+        <foaf:name>Andreas Harth</foaf:name>
+        <foaf:mbox_sha1sum>349ba1da7307ffb78517ae557ade1dd5177a6dbb</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.harth.org/andreas/" />
+        <rdfs:seeAlso rdf:resource="http://harth.org/andreas/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.dayures.net/foaf.rdf#tejo">
+        <foaf:name>Carlos Tejo</foaf:name>
+        <foaf:mbox_sha1sum>3794a7355903654b1ea0aeca4d57fa7aea2c6bf9</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.dayures.net/" />
+        <rdfs:seeAlso rdf:resource="http://www.dayures.net/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://myopenlink.net/dataspace/person/kidehen%23this">
+        <foaf:name>Kingsley Idehen</foaf:name>
+        <foaf:mbox_sha1sum>349f4bf50f11185d3503b14f1a6ccfc425116b12</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.openlinksw.com/blog/~kidehen/" />
+        <rdfs:seeAlso rdf:resource="http://myopenlink.net/dataspace/kidehen/about.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.bizer.de#chris">
+        <foaf:name>Chris Bizer</foaf:name>
+        <foaf:mbox_sha1sum>50c02ff93e7d477ace450e3fbddd63d228fb23f3</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.bizer.de/" />
+        <rdfs:seeAlso rdf:resource="http://www4.wiwiss.fu-berlin.de/bizer/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://tomheath.com/id/me">
+        <foaf:name>Tom Heath</foaf:name>
+        <foaf:mbox_sha1sum>02085a0d20a5f574c1ce6cfe42bba6e85cfe07cf</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="hhttp://tomheath.com/" />
+        <rdfs:seeAlso rdf:resource="http://tomheath.com/home/rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.leobard.net/rdf/foaf.xml#me">
+        <foaf:name>Leo Sauermann</foaf:name>
+        <foaf:mbox_sha1sum>eaa363e2b75a11db14e62afb8995340a198e8b9e</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.dfki.de/~sauermann" />
+        <rdfs:seeAlso rdf:resource="http://www.leobard.net/rdf/foaf.xml" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://sw-app.org/mic.xhtml#i">
+        <foaf:name>Michael Hausenblas</foaf:name>
+        <foaf:mbox_sha1sum>636480acf3cca05e96e612e5e6da6090efd5c71f</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://sw-app.org/" />
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2007/08/pyRdfa/extract?uri=http%3A//sw-app.org/mic.xhtml" />
+        <rdfs:seeAlso rdf:resource="http://community.linkeddata.org/dataspace/mhausenblas/about.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.cs.vu.nl/~pmika/foaf.rdf#me">
+        <foaf:name>Peter Mika</foaf:name>
+        <foaf:mbox_sha1sum>ffe33bbe8be2a2123f0adb793e61a6d84ae9a739</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.cs.vu.nl/~pmika/" />
+        <rdfs:seeAlso rdf:resource="http://www.cs.vu.nl/~pmika/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.ibiblio.org/hhalpin#">
+        <foaf:name>Harry Halpin</foaf:name>
+        <foaf:mbox_sha1sum>c5e75a0dd882184416c8680f5c402a261314bb79</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.ibiblio.org/hhalpin/" />
+        <rdfs:seeAlso rdf:resource="http://www.ibiblio.org/hhalpin/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.dcs.shef.ac.uk/~mrowe/foaf.rdf#me">
+        <foaf:name>Matthew Rowe</foaf:name>
+        <foaf:mbox_sha1sum>bd2cda94c756832460fd7c8f6de5c3d2525bbdba</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.dcs.shef.ac.uk/~mrowe/" />
+        <rdfs:seeAlso rdf:resource="http://www.dcs.shef.ac.uk/~mrowe/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://www.postsubmeta.net/foaf#TK">
+        <foaf:name>Thomas Krennwallner</foaf:name>
+        <foaf:mbox_sha1sum>f6b70e5044bffbefe6703e8523be6c96ad8354dc</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://www.postsubmeta.net/" />
+        <rdfs:seeAlso rdf:resource="http://www.postsubmeta.net/foaf.rdf" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <foaf:knows>
+      <foaf:Person rdf:about="http://bblfish.net/people/henry/card#me">
+        <foaf:name>Henry Story</foaf:name>
+        <foaf:mbox_sha1sum>38cf68e5c4f300648b81c8ee7a99912ee825ae01</foaf:mbox_sha1sum>
+        <foaf:homepage rdf:resource="http://bblfish.net/" />
+        <rdfs:seeAlso rdf:resource="http://bblfish.net/people/henry/card" />
+      </foaf:Person>
+    </foaf:knows>
+
+    <!-- projects -->
+
+    <foaf:pastProject>
+      <doap:Project rdf:about="http://swaml.berlios.de/doap#swaml"> 
+        <doap:name>SWAML</doap:name>
+        <doap:description>Semantic Web Archive of Mailing Lists</doap:description>
+        <doap:homepage rdf:resource="http://swaml.berlios.de/" />
+        <rdfs:seeAlso rdf:resource="http://swaml.berlios.de/doap.rdf" />
+      </doap:Project>
+    </foaf:pastProject>
+
+    <foaf:pastProject>
+      <doap:Project> 
+        <doap:name>SIOC</doap:name>
+        <doap:description>Semantically-Interlinked Online Communities</doap:description>
+        <doap:homepage rdf:resource="http://sioc-project.org/" />
+        <rdfs:seeAlso rdf:resource="http://sioc-project.org/sioc/site" />
+      </doap:Project>
+    </foaf:pastProject>
+
+    <foaf:pastProject>
+      <doap:Project rdf:about="#semradar"> 
+        <doap:name>SemRadar</doap:name>
+        <doap:description>a semantic metadata detector for Mozilla Firefox</doap:description>
+        <doap:homepage rdf:resource="http://sioc-project.org/firefox" />
+        <rdfs:seeAlso rdf:resource="http://rdfohloh.wikier.org/project/semradar/rdf" />
+      </doap:Project>
+    </foaf:pastProject>
+
+    <foaf:pastProject>
+      <doap:Project rdf:about="http://futil.berlios.de/doap#futil"> 
+        <doap:name>Futil</doap:name>
+        <doap:description>FOAF Utils</doap:description>
+        <doap:homepage rdf:resource="http://futil.berlios.de/" />
+        <rdfs:seeAlso rdf:resource="http://futil.berlios.de/resources/doap.rdf" />
+      </doap:Project>
+    </foaf:pastProject>
+
+    <foaf:pastProject>
+      <doap:Project rdf:about="http://vapour.sourceforge.net/doap#vapour"> 
+        <doap:name>Vapour</doap:name>
+        <doap:description>a web-based validator tool to check best practices for publishing RDF vocabularies</doap:description>
+        <doap:homepage rdf:resource="http://vapour.sourceforge.net/" />
+        <rdfs:seeAlso rdf:resource="http://vapour.sourceforge.net/resources/doap.rdf" />
+      </doap:Project>
+    </foaf:pastProject>
+
+    <foaf:pastProject>
+      <doap:Project> 
+        <doap:name>MyMobileWeb</doap:name>
+        <doap:homepage rdf:resource="http://mymobileweb.morfeo-project.org/" />
+        <rdfs:seeAlso rdf:resource="http://rdfohloh.wikier.org/project/mymobileweb/rdf" />
+      </doap:Project>
+    </foaf:pastProject>
+
+    <foaf:pastProject>
+      <doap:Project> 
+        <doap:name>EzWeb</doap:name>
+        <doap:homepage rdf:resource="http://ezweb.morfeo-project.org/" />
+      </doap:Project>
+    </foaf:pastProject>
+
+    <foaf:pastProject>
+      <doap:Project rdf:about="http://sparql-wrapper.sourceforge.net/doap#sparql-wrapper"> 
+        <doap:name>SPARQL Endpoint interface to Python</doap:name>
+        <doap:homepage rdf:resource="http://sparql-wrapper.sourceforge.net/" />
+        <rdfs:seeAlso rdf:resource="http://sparql-wrapper.sourceforge.net/resources/doap.rdf" />
+      </doap:Project>
+    </foaf:pastProject>
+
+    <foaf:pastProject>
+      <doap:Project rdf:about="http://neologism.deri.ie/doap#neologism"> 
+        <doap:name>Neologism</doap:name>
+        <doap:homepage rdf:resource="http://neologism.deri.ie/" />
+        <rdfs:seeAlso rdf:resource="http://neologism.deri.ie/resources/doap.rdf" />
+      </doap:Project>
+    </foaf:pastProject>
+
+    <foaf:pastProject>
+      <doap:Project rdf:about="http://rdfohloh.wikier.org/about#rdfohloh"> 
+        <doap:name>RDFohloh</doap:name>
+        <doap:homepage rdf:resource="http://rdfohloh.wikier.org/" />
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2007/08/pyRdfa/extract?uri=http://rdfohloh.wikier.org/about" />
+      </doap:Project>
+    </foaf:pastProject>
+
+    <foaf:pastProject>
+      <doap:Project> 
+        <doap:name>ONTORULE</doap:name>
+        <doap:shortdesc>ONTOlogies meet business RULEs</doap:shortdesc>
+        <doap:homepage rdf:resource="http://ontorule-project.eu/" />
+        <owl:sameAs rdf:resource="http://ontorule-project.eu/meta#ontorule" />
+        <rdfs:seeAlso rdf:resource="http://ontorule-project.eu/meta" />
+      </doap:Project>
+    </foaf:pastProject>
+
+    <foaf:pastProject>
+      <doap:Project rdf:about="http://rdfohloh.wikier.org/project/djubby"> 
+        <doap:name>djubby</doap:name>
+        <doap:shortdesc>A Pubby clone for Django, a Linked Data frontend for SPARQL endpoints</doap:shortdesc>
+        <doap:homepage rdf:resource="http://djubby.googlecode.com/" />
+        <rdfs:seeAlso rdf:resource="http://rdfohloh.wikier.org/project/djubby/rdf" />
+        <rdfs:seeAlso rdf:resource="http://pypi.python.org/pypi?:action=doap&amp;name=djubby" />
+      </doap:Project>
+    </foaf:pastProject>
+
+    <foaf:pastProject>
+      <foaf:Project rdf:about="http://trioo.wikier.org/trioo"> 
+        <rdfs:label>trioo</rdfs:label>
+        <foaf:homepage rdf:resource="http://trioo.wikier.org/" />
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2007/08/pyRdfa/extract?uri=http://trioo.wikier.org/" />
+      </foaf:Project>
+    </foaf:pastProject>
+
+    <foaf:pastProject>
+      <doap:Project rdf:about="http://rdfohloh.wikier.org/project/lmf"> 
+        <doap:name>LMF</doap:name>
+        <doap:description>Linked Media Framework</doap:description>
+        <doap:homepage rdf:resource="http://lmf.googlecode.com" />
+        <rdfs:seeAlso rdf:resource="http://rdfohloh.wikier.org/project/lmf.rdf" />
+      </doap:Project>
+    </foaf:pastProject>
+
+    <foaf:currentProject>
+      <doap:Project rdf:about="http://rdfohloh.wikier.org/project/marmotta"> 
+        <doap:name>Apache Marmotta</doap:name>
+        <doap:description>Apache Marmotta</doap:description>
+        <doap:homepage rdf:resource="http://marmotta.apache.org" />
+        <rdfs:seeAlso rdf:resource="http://marmotta.apache.org/doap.rdf" />
+        <rdfs:seeAlso rdf:resource="http://rdfohloh.wikier.org/project/marmotta.rdf" />
+      </doap:Project>
+    </foaf:currentProject>
+
+    <wot:hasKey>
+      <wot:PubKey>
+        <wot:hex_id>5531369F</wot:hex_id>
+        <wot:fingerprint>48B33394FA7F07D2A37FF197F21D21375531369F</wot:fingerprint>
+        <wot:pubkeyAddress rdf:resource="http://www.wikier.org/stuff/5531369F.asc" />
+      </wot:PubKey>
+    </wot:hasKey>
+
+  </foaf:Person>
+
+  <cert:RSAPublicKey rdf:about="#pk">
+    <cert:modulus rdf:datatype="http://www.w3.org/2001/XMLSchema#hexBinary">a1cf91184a0aaee6417ff8a965d13c3b28dc301ef30aefd4d7566277dea2cd0d43c19f1d27c04255c64e42855ba97ba8c50f6c27c313273bbd7bd27cb5a632ee29b0b1a47be9b5b2e54e9906c979660981ee9412cc648a693bf911b560c0c830ea14e7f520fc971d3c7805ecad905218722fd23790f1cfc2f0ddd3842ee5c0f09c025d75cb7a86ff86288783b40ecc4595fccb95801f788eb50a5d357d0b70d48e0d2c07406e495df145646f6e6e2832f310aa237b46147d61165e3ceadbc3cf92ed5aba95226a8d7190237dcb54ef80a595412bd96dba5d90f468fb8e32dc2a9704cb2927503d1f6cfd1463f53d087e2888ef12263764b64b5bd5f691e9f469</cert:modulus>
+    <cert:exponent rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">65537</cert:exponent>
+    <rdfs:label>A9:6A:3A:DF:42:B3:B2:5E:BD:BD:54:ED:45:85:E8:0E:1F:F0:EA:09</rdfs:label>
+    <dct:valid rdf:datatype="urn:iso:std:iso:8601#timeInterval">P1Y/2012-04-30</dct:valid>
+  </cert:RSAPublicKey>
+
+</rdf:RDF>
+


[3/3] git commit: MARMOTTA-556: cleanning

Posted by wi...@apache.org.
MARMOTTA-556: cleanning


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

Branch: refs/heads/MARMOTTA-556
Commit: 9f39e32836ce97a976ad21044edd6c0271dfa81f
Parents: b4d4140
Author: Sergio Fernández <wi...@apache.org>
Authored: Mon Oct 27 18:58:36 2014 +0100
Committer: Sergio Fernández <wi...@apache.org>
Committed: Mon Oct 27 18:58:36 2014 +0100

----------------------------------------------------------------------
 .../marmotta/platform/ldf/webservices/LdfWebServiceTest.java      | 3 ---
 1 file changed, 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/9f39e328/platform/marmotta-ldf/src/test/java/org/apache/marmotta/platform/ldf/webservices/LdfWebServiceTest.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-ldf/src/test/java/org/apache/marmotta/platform/ldf/webservices/LdfWebServiceTest.java b/platform/marmotta-ldf/src/test/java/org/apache/marmotta/platform/ldf/webservices/LdfWebServiceTest.java
index f1cd661..05be6ed 100644
--- a/platform/marmotta-ldf/src/test/java/org/apache/marmotta/platform/ldf/webservices/LdfWebServiceTest.java
+++ b/platform/marmotta-ldf/src/test/java/org/apache/marmotta/platform/ldf/webservices/LdfWebServiceTest.java
@@ -24,7 +24,6 @@ import java.io.InputStream;
 import java.net.URISyntaxException;
 
 import static com.jayway.restassured.RestAssured.expect;
-import static org.hamcrest.Matchers.equalTo;
 
 /**
  * LDF Webservice test
@@ -58,7 +57,6 @@ public class LdfWebServiceTest {
             get(LdfWebService.PATH + "/empty");
     }
 
-
     @Test
     public void testFragment() throws IOException, InterruptedException, URISyntaxException, MarmottaImportException {
         final ImportService importService = marmotta.getService(ImportService.class);
@@ -103,5 +101,4 @@ public class LdfWebServiceTest {
 
     }
 
-
 }