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&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&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 {
}
-
}