Author: rwesten
Date: Wed Mar 21 09:28:30 2012
New Revision: 1303322
URL: http://svn.apache.org/viewvc?rev=1303322&view=rev
Log:
Fixes STANBOL-542 and STANBOL-543:
* "application/rdf+xml" is now used as default for all SPARQL requests
* all EntitySearcher and EntityDereferencer now use the baseURL for parsing
responses
Modified:
incubator/stanbol/trunk/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntityDereferencer.java
incubator/stanbol/trunk/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntitySearcher.java
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/CoolUriDereferencer.java
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/LarqSearcher.java
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlDereferencer.java
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlSearcher.java
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/VirtuosoSearcher.java
Modified:
incubator/stanbol/trunk/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntityDereferencer.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntityDereferencer.java?rev=1303322&r1=1303321&r2=1303322&view=diff
==============================================================================
---
incubator/stanbol/trunk/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntityDereferencer.java
(original)
+++
incubator/stanbol/trunk/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntityDereferencer.java
Wed Mar 21 09:28:30 2012
@@ -16,6 +16,8 @@
*/
package org.apache.stanbol.entityhub.core.site;
+import static
org.apache.stanbol.entityhub.core.site.AbstractEntitySearcher.extractBaseUri;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -42,6 +44,7 @@ public abstract class AbstractEntityDere
log.info("create instance of " + this.getClass().getName());
}
+ private String accessUri;
private String baseUri;
private Dictionary<String, ?> config;
@@ -50,6 +53,13 @@ public abstract class AbstractEntityDere
@Override
public final String getAccessUri() {
+ return accessUri;
+ }
+ /**
+ * Getter for the base URI to be used for parsing relative URIs in
responses
+ * @return
+ */
+ protected String getBaseUri(){
return baseUri;
}
@@ -63,12 +73,13 @@ public abstract class AbstractEntityDere
Dictionary<String, ?> properties = context.getProperties();
Object baseUriObject =
properties.get(EntityDereferencer.ACCESS_URI);
if (baseUriObject != null) {
- this.baseUri = baseUriObject.toString();
+ this.accessUri = baseUriObject.toString();
//now set the new config
this.config = properties;
} else {
throw new IllegalArgumentException("The property " +
EntityDereferencer.ACCESS_URI + " must be defined");
}
+ baseUri = extractBaseUri(accessUri);
//TODO: I am sure, there is some Utility, that supports getting
multiple
// values from a OSGI Dictionary
Object prefixObject =
properties.get(SiteConfiguration.ENTITY_PREFIX);
@@ -95,6 +106,7 @@ public abstract class AbstractEntityDere
log.info("in " + AbstractEntityDereferencer.class.getSimpleName() + "
deactivate with context " + context);
this.config = null;
this.prefixes = null;
+ this.accessUri = null;
this.baseUri = null;
}
Modified:
incubator/stanbol/trunk/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntitySearcher.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntitySearcher.java?rev=1303322&r1=1303321&r2=1303322&view=diff
==============================================================================
---
incubator/stanbol/trunk/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntitySearcher.java
(original)
+++
incubator/stanbol/trunk/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntitySearcher.java
Wed Mar 21 09:28:30 2012
@@ -37,6 +37,7 @@ public abstract class AbstractEntitySear
}
private String queryUri;
+ private String baseUri;
private Dictionary<String,?> config;
private ComponentContext context;
@@ -44,6 +45,13 @@ public abstract class AbstractEntitySear
protected final String getQueryUri() {
return queryUri;
}
+ /**
+ * Getter for the base URI to be used for parsing relative URIs in
responses
+ * @return
+ */
+ protected String getBaseUri(){
+ return baseUri;
+ }
@SuppressWarnings("unchecked")
@Activate
@@ -64,17 +72,45 @@ public abstract class AbstractEntitySear
} else {
throw new IllegalArgumentException("The property
"+EntitySearcher.QUERY_URI+" must be defined");
}
+ this.baseUri = extractBaseUri(queryUri);
this.config = properties;
} else {
throw new IllegalArgumentException("The property
"+EntitySearcher.QUERY_URI+" must be defined");
}
}
+ /**
+ * computes the base URL based on service URLs
+ * @param the URL of the remote service
+ * @return the base URL used to parse relative URIs in responses.
+ */
+ protected static String extractBaseUri(String uri) {
+ //extract the namepsace from the query URI to use it fore parsing
+ //responses with relative URIs
+ String baseUri;
+ int index = Math.max(uri.lastIndexOf('#'),uri.lastIndexOf('/'));
+ int protIndex = uri.indexOf("://")+3; //do not convert
http://www.example.org
+ if(protIndex < 0){
+ protIndex = 0;
+ }
+ //do not convert if the parsed uri does not contain a local name
+ if(index > protIndex && index+1 < uri.length()){
+ baseUri = uri.substring(0, index+1);
+ } else {
+ if(!(uri.charAt(uri.length()-1) == '/' ||
uri.charAt(uri.length()-1) == '#')){
+ baseUri = uri+'/'; //add a tailing '/' to Uris like
http://www.example.org
+ } else {
+ baseUri = uri;
+ }
+ }
+ return baseUri;
+ }
@Deactivate
protected void deactivate(ComponentContext context) {
log.debug("in "+AbstractEntitySearcher.class.getSimpleName()+"
deactivate with context "+context);
this.config = null;
this.queryUri = null;
+ this.baseUri = null;
}
/**
* The OSGI configuration as provided by the activate method
Modified:
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/CoolUriDereferencer.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/CoolUriDereferencer.java?rev=1303322&r1=1303321&r2=1303322&view=diff
==============================================================================
---
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/CoolUriDereferencer.java
(original)
+++
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/CoolUriDereferencer.java
Wed Mar 21 09:28:30 2012
@@ -75,7 +75,7 @@ public class CoolUriDereferencer extends
long queryEnd = System.currentTimeMillis();
log.info(" > DereferenceTime: "+(queryEnd-start));
if(in != null){
- MGraph rdfData = new IndexedMGraph(parser.parse(in, format));
+ MGraph rdfData = new IndexedMGraph(parser.parse(in, format,new
UriRef(getBaseUri())));
long parseEnd = System.currentTimeMillis();
log.info(" > ParseTime: "+(parseEnd-queryEnd));
return valueFactory.createRdfRepresentation(new UriRef(uri),
rdfData);
Modified:
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/LarqSearcher.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/LarqSearcher.java?rev=1303322&r1=1303321&r2=1303322&view=diff
==============================================================================
---
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/LarqSearcher.java
(original)
+++
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/LarqSearcher.java
Wed Mar 21 09:28:30 2012
@@ -16,13 +16,16 @@
*/
package org.apache.stanbol.entityhub.site.linkeddata.impl;
+import static
org.apache.stanbol.entityhub.site.linkeddata.impl.SparqlEndpointUtils.sendSparqlRequest;
+import static
org.apache.stanbol.entityhub.site.linkeddata.impl.SparqlSearcher.extractEntitiesFromJsonResult;
+
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.TripleCollection;
-import org.apache.clerezza.rdf.core.impl.SimpleMGraph;
+import org.apache.clerezza.rdf.core.UriRef;
import org.apache.clerezza.rdf.core.serializedform.Parser;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.ConfigurationPolicy;
@@ -69,7 +72,8 @@ public class LarqSearcher extends Abstra
log.info(" > QueryTime: "+(queryEnd-initEnd));
if(in != null){
MGraph graph;
- TripleCollection rdfData = parser.parse(in,
SparqlSearcher.DEFAULT_RDF_CONTENT_TYPE);
+ TripleCollection rdfData = parser.parse(in,
SparqlSearcher.DEFAULT_RDF_CONTENT_TYPE,
+ new UriRef(getBaseUri()));
if(rdfData instanceof MGraph){
graph = (MGraph) rdfData;
} else {
@@ -88,9 +92,9 @@ public class LarqSearcher extends Abstra
final SparqlFieldQuery query =
SparqlFieldQueryFactory.getSparqlFieldQuery(parsedQuery);
query.setEndpointType(EndpointTypeEnum.LARQ);
String sparqlQuery = query.toSparqlSelect(false);
- InputStream in = SparqlEndpointUtils.sendSparqlRequest(getQueryUri(),
sparqlQuery, SparqlSearcher.DEFAULT_SPARQL_RESULT_CONTENT_TYPE);
+ InputStream in = sendSparqlRequest(getQueryUri(), sparqlQuery,
SparqlSearcher.DEFAULT_SPARQL_RESULT_CONTENT_TYPE);
//Move to util class!
- final List<String> entities =
SparqlSearcher.extractEntitiesFromJsonResult(in,query.getRootVariableName());
+ final List<String> entities =
extractEntitiesFromJsonResult(in,query.getRootVariableName());
return new QueryResultListImpl<String>(query,
entities.iterator(),String.class);
}
Modified:
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlDereferencer.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlDereferencer.java?rev=1303322&r1=1303321&r2=1303322&view=diff
==============================================================================
---
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlDereferencer.java
(original)
+++
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlDereferencer.java
Wed Mar 21 09:28:30 2012
@@ -89,7 +89,7 @@ public class SparqlDereferencer extends
long queryEnd = System.currentTimeMillis();
log.info(" > DereferenceTime: "+(queryEnd-start));
if(in != null){
- MGraph rdfData = new IndexedMGraph(parser.parse(in, format));
+ MGraph rdfData = new IndexedMGraph(parser.parse(in, format,new
UriRef(getBaseUri())));
long parseEnd = System.currentTimeMillis();
log.info(" > ParseTime: "+(parseEnd-queryEnd));
return valueFactory.createRdfRepresentation(new UriRef(uri),
rdfData);
Modified:
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlSearcher.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlSearcher.java?rev=1303322&r1=1303321&r2=1303322&view=diff
==============================================================================
---
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlSearcher.java
(original)
+++
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlSearcher.java
Wed Mar 21 09:28:30 2012
@@ -24,6 +24,7 @@ import java.util.List;
import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.TripleCollection;
+import org.apache.clerezza.rdf.core.UriRef;
import org.apache.clerezza.rdf.core.impl.SimpleMGraph;
import org.apache.clerezza.rdf.core.serializedform.Parser;
import org.apache.clerezza.rdf.core.serializedform.SupportedFormat;
@@ -37,6 +38,7 @@ import org.apache.stanbol.entityhub.core
import org.apache.stanbol.entityhub.query.clerezza.RdfQueryResultList;
import org.apache.stanbol.entityhub.query.clerezza.SparqlFieldQuery;
import org.apache.stanbol.entityhub.query.clerezza.SparqlFieldQueryFactory;
+import org.apache.stanbol.entityhub.servicesapi.defaults.NamespaceEnum;
import org.apache.stanbol.entityhub.servicesapi.model.Representation;
import org.apache.stanbol.entityhub.servicesapi.query.FieldQuery;
import org.apache.stanbol.entityhub.servicesapi.query.QueryResultList;
@@ -62,7 +64,7 @@ public class SparqlSearcher extends Abst
@Reference
private Parser parser;
- protected static final String DEFAULT_RDF_CONTENT_TYPE =
SupportedFormat.N3;
+ protected static final String DEFAULT_RDF_CONTENT_TYPE =
SupportedFormat.RDF_XML;
protected static final String DEFAULT_SPARQL_RESULT_CONTENT_TYPE =
SparqlEndpointUtils.SPARQL_RESULT_JSON;
@Override
public final QueryResultList<String> findEntities(FieldQuery parsedQuery)
throws IOException {
@@ -129,7 +131,8 @@ public class SparqlSearcher extends Abst
log.info(" > QueryTime: "+(queryEnd-initEnd));
if(in != null){
MGraph graph;
- TripleCollection rdfData = parser.parse(in,
DEFAULT_RDF_CONTENT_TYPE);
+ TripleCollection rdfData = parser.parse(in,
DEFAULT_RDF_CONTENT_TYPE,
+ new UriRef(getBaseUri()));
if(rdfData instanceof MGraph){
graph = (MGraph) rdfData;
} else {
@@ -143,6 +146,4 @@ public class SparqlSearcher extends Abst
}
}
-
-
}
Modified:
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/VirtuosoSearcher.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/VirtuosoSearcher.java?rev=1303322&r1=1303321&r2=1303322&view=diff
==============================================================================
---
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/VirtuosoSearcher.java
(original)
+++
incubator/stanbol/trunk/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/VirtuosoSearcher.java
Wed Mar 21 09:28:30 2012
@@ -16,12 +16,16 @@
*/
package org.apache.stanbol.entityhub.site.linkeddata.impl;
+import static
org.apache.stanbol.entityhub.site.linkeddata.impl.SparqlEndpointUtils.sendSparqlRequest;
+import static
org.apache.stanbol.entityhub.site.linkeddata.impl.SparqlSearcher.extractEntitiesFromJsonResult;
+
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.TripleCollection;
+import org.apache.clerezza.rdf.core.UriRef;
import org.apache.clerezza.rdf.core.impl.SimpleMGraph;
import org.apache.clerezza.rdf.core.serializedform.Parser;
import org.apache.felix.scr.annotations.Component;
@@ -69,7 +73,8 @@ public class VirtuosoSearcher extends Ab
log.info(" > QueryTime: "+(queryEnd-initEnd));
if(in != null){
MGraph graph;
- TripleCollection rdfData = parser.parse(in,
SparqlSearcher.DEFAULT_RDF_CONTENT_TYPE);
+ TripleCollection rdfData = parser.parse(in,
SparqlSearcher.DEFAULT_RDF_CONTENT_TYPE,
+ new UriRef(getBaseUri()));
if(rdfData instanceof MGraph){
graph = (MGraph) rdfData;
} else {
@@ -88,9 +93,9 @@ public class VirtuosoSearcher extends Ab
final SparqlFieldQuery query =
SparqlFieldQueryFactory.getSparqlFieldQuery(parsedQuery);
query.setEndpointType(EndpointTypeEnum.Virtuoso);
String sparqlQuery = query.toSparqlSelect(false);
- InputStream in = SparqlEndpointUtils.sendSparqlRequest(getQueryUri(),
sparqlQuery, SparqlSearcher.DEFAULT_SPARQL_RESULT_CONTENT_TYPE);
+ InputStream in = sendSparqlRequest(getQueryUri(), sparqlQuery,
SparqlSearcher.DEFAULT_SPARQL_RESULT_CONTENT_TYPE);
//Move to util class!
- final List<String> entities =
SparqlSearcher.extractEntitiesFromJsonResult(in,query.getRootVariableName());
+ final List<String> entities =
extractEntitiesFromJsonResult(in,query.getRootVariableName());
return new QueryResultListImpl<String>(query,
entities.iterator(),String.class);
}