You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by rw...@apache.org on 2012/03/25 20:16:01 UTC

svn commit: r1303354 - in /incubator/stanbol/branches/0.9.0-incubating/entityhub: generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/ site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/

Author: rwesten
Date: Wed Mar 21 10:36:41 2012
New Revision: 1303354

URL: http://svn.apache.org/viewvc?rev=1303354&view=rev
Log:
STANBOL-542 and STANBOL-543: merged changes of Revision 1303322 to stanbol-0.9.0-incubating branch

Modified:
    incubator/stanbol/branches/0.9.0-incubating/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntityDereferencer.java
    incubator/stanbol/branches/0.9.0-incubating/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntitySearcher.java   (contents, props changed)
    incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/CoolUriDereferencer.java
    incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/LarqSearcher.java
    incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlDereferencer.java
    incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlSearcher.java
    incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/VirtuosoSearcher.java

Modified: incubator/stanbol/branches/0.9.0-incubating/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntityDereferencer.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/0.9.0-incubating/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntityDereferencer.java?rev=1303354&r1=1303353&r2=1303354&view=diff
==============================================================================
--- incubator/stanbol/branches/0.9.0-incubating/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntityDereferencer.java (original)
+++ incubator/stanbol/branches/0.9.0-incubating/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntityDereferencer.java Wed Mar 21 10:36:41 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/branches/0.9.0-incubating/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntitySearcher.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/0.9.0-incubating/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntitySearcher.java?rev=1303354&r1=1303353&r2=1303354&view=diff
==============================================================================
--- incubator/stanbol/branches/0.9.0-incubating/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntitySearcher.java (original)
+++ incubator/stanbol/branches/0.9.0-incubating/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntitySearcher.java Wed Mar 21 10:36:41 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

Propchange: incubator/stanbol/branches/0.9.0-incubating/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntitySearcher.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Mar 21 10:36:41 2012
@@ -0,0 +1,2 @@
+/incubator/stanbol/branches/0.9.0-incubating/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntityDereferencer.java:1303322
+/incubator/stanbol/trunk/entityhub/generic/core/src/main/java/org/apache/stanbol/entityhub/core/site/AbstractEntitySearcher.java:1301064-1301517,1303322

Modified: incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/CoolUriDereferencer.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/CoolUriDereferencer.java?rev=1303354&r1=1303353&r2=1303354&view=diff
==============================================================================
--- incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/CoolUriDereferencer.java (original)
+++ incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/CoolUriDereferencer.java Wed Mar 21 10:36:41 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/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/LarqSearcher.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/LarqSearcher.java?rev=1303354&r1=1303353&r2=1303354&view=diff
==============================================================================
--- incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/LarqSearcher.java (original)
+++ incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/LarqSearcher.java Wed Mar 21 10:36:41 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/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlDereferencer.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlDereferencer.java?rev=1303354&r1=1303353&r2=1303354&view=diff
==============================================================================
--- incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlDereferencer.java (original)
+++ incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlDereferencer.java Wed Mar 21 10:36:41 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/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlSearcher.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlSearcher.java?rev=1303354&r1=1303353&r2=1303354&view=diff
==============================================================================
--- incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlSearcher.java (original)
+++ incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/SparqlSearcher.java Wed Mar 21 10:36:41 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/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/VirtuosoSearcher.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/VirtuosoSearcher.java?rev=1303354&r1=1303353&r2=1303354&view=diff
==============================================================================
--- incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/VirtuosoSearcher.java (original)
+++ incubator/stanbol/branches/0.9.0-incubating/entityhub/site/linkeddata/src/main/java/org/apache/stanbol/entityhub/site/linkeddata/impl/VirtuosoSearcher.java Wed Mar 21 10:36:41 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);
     }