Author: ivol37 at gmail.com
Date: Tue Dec 28 16:41:39 2010
New Revision: 550

Log:
[AMDATU-183] Finished RDF2GO API bundle. Refactored SesameService.getModelSet 
invocations with Modelset service dependencies and replaced all SesameService 
invocations by RDF2GO API calls.

Modified:
   trunk/amdatu-example/course-service/pom.xml
   
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/osgi/Activator.java
   
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseOntologyDataProvider.java
   
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseServiceImpl.java
   
trunk/amdatu-libraries/utilities/src/main/java/org/amdatu/libraries/utilities/ConversionUtil.java
   
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/SesameService.java
   
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/service/SesameServiceImpl.java
   trunk/amdatu-semanticweb/sparqlendpoint/pom.xml
   
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/Activator.java
   
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/service/SPARQLEndpointServiceImpl.java
   
trunk/integration-tests/src/test/java/org/amdatu/test/integration/tests/RDF2GOTest.java

Modified: trunk/amdatu-example/course-service/pom.xml
==============================================================================
--- trunk/amdatu-example/course-service/pom.xml (original)
+++ trunk/amdatu-example/course-service/pom.xml Tue Dec 28 16:41:39 2010
@@ -12,8 +12,8 @@
   <packaging>bundle</packaging>
   <name>Amdatu Example - Course service</name>
   <description>Provides an example service to retrieve course 
information</description>
-  
-  <dependencies>  
+
+  <dependencies>
     <dependency>
       <groupId>org.amdatu.web.rest</groupId>
       <artifactId>jaxrs</artifactId>
@@ -26,51 +26,45 @@
         <artifactId>shindig</artifactId>
         <scope>provided</scope>
       <type>bundle</type>
-    </dependency>   
+    </dependency>
     <dependency>
       <groupId>org.amdatu.cassandra</groupId>
       <artifactId>listener</artifactId>
       <scope>provided</scope>
       <version>${platform.version}</version>
       <type>bundle</type>
-    </dependency>   
+    </dependency>
     <dependency>
       <groupId>org.amdatu.cassandra</groupId>
       <artifactId>application</artifactId>
       <scope>provided</scope>
       <version>${platform.version}</version>
       <type>bundle</type>
-    </dependency>               
+    </dependency>
     <dependency>
       <groupId>org.amdatu.core</groupId>
       <artifactId>tenant</artifactId>
       <scope>provided</scope>
       <type>bundle</type>
-    </dependency>     
+    </dependency>
     <dependency>
       <groupId>org.amdatu.opensocial</groupId>
       <artifactId>profile</artifactId>
       <scope>provided</scope>
       <type>bundle</type>
-    </dependency>   
-    <dependency>
-      <groupId>org.amdatu.semanticweb</groupId>
-      <artifactId>sesame</artifactId>
-      <scope>provided</scope>
-      <type>bundle</type>
     </dependency>
     <dependency>
       <groupId>org.semweb4j</groupId>
       <artifactId>rdf2go.api</artifactId>
       <version>${rdf2go.version}</version>
       <scope>provided</scope>
-    </dependency>    
+    </dependency>
     <dependency>
       <groupId>org.json</groupId>
       <artifactId>json</artifactId>
       <version>20090211</version>
       <scope>compile</scope>
-    </dependency>   
+    </dependency>
     <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
@@ -82,13 +76,13 @@
       <artifactId>templates</artifactId>
       <scope>provided</scope>
       <type>bundle</type>
-    </dependency>   
+    </dependency>
     <dependency>
       <groupId>org.amdatu.authorization.login</groupId>
       <artifactId>service</artifactId>
       <scope>provided</scope>
       <type>bundle</type>
-    </dependency>   
+    </dependency>
     <dependency>
       <groupId>org.amdatu.libraries</groupId>
       <artifactId>utilities</artifactId>
@@ -96,25 +90,25 @@
       <scope>compile</scope>
     </dependency>
   </dependencies>
-  
+
   <build>
-    <resources>  
+    <resources>
       <resource>
         <directory>src/main/resources</directory>
         <filtering>false</filtering>
         <excludes>
           <exclude>conf/*.*</exclude>
         </excludes>
-      </resource> 
+      </resource>
       <resource>
         <directory>src/main/resources</directory>
         <filtering>true</filtering>
         <includes>
           <include>conf/*.*</include>
         </includes>
-      </resource> 
-    </resources> 
-                  
+      </resource>
+    </resources>
+
     <plugins>
       <plugin>
         <groupId>org.apache.felix</groupId>
@@ -128,8 +122,8 @@
             <Export-Package>org.amdatu.example.course.service</Export-Package>
           </instructions>
         </configuration>
-      </plugin>   
+      </plugin>
 
-    </plugins>        
-  </build> 
+    </plugins>
+  </build>
 </project>

Modified: 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/osgi/Activator.java
==============================================================================
--- 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/osgi/Activator.java
     (original)
+++ 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/osgi/Activator.java
     Tue Dec 28 16:41:39 2010
@@ -16,19 +16,19 @@
  */
 package org.amdatu.example.course.service.osgi;
 
+import org.amdatu.core.config.templates.ConfigTemplateManager;
 import org.amdatu.example.course.service.CourseService;
 import org.amdatu.example.course.service.service.CourseOntologyDataProvider;
 import org.amdatu.example.course.service.service.CourseResource;
 import org.amdatu.example.course.service.service.CourseServiceImpl;
 import org.amdatu.example.course.service.service.ProfileDataProvider;
-import org.amdatu.core.config.templates.ConfigTemplateManager;
 import org.amdatu.libraries.utilities.osgi.ServiceDependentActivator;
+import org.amdatu.opensocial.profile.PersonService;
 import org.amdatu.web.httpcontext.HttpContextServiceFactory;
 import org.amdatu.web.httpcontext.ResourceProvider;
-import org.amdatu.opensocial.profile.PersonService;
-import org.amdatu.semanticweb.sesame.SesameService;
 import org.amdatu.web.rest.jaxrs.JaxRsSpi;
 import org.apache.felix.dm.DependencyManager;
+import org.ontoware.rdf2go.model.ModelSet;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.log.LogService;
@@ -51,47 +51,47 @@
     public void initWithDependencies(BundleContext context, DependencyManager 
manager) throws Exception {
         // Create and register the course service
         manager.add(
-                createComponent()
-                .setInterface(CourseService.class.getName(), null)
-                .setImplementation(CourseServiceImpl.class)
-                
.add(createServiceDependency().setService(LogService.class).setRequired(true))
-                
.add(createServiceDependency().setService(ConfigurationAdmin.class).setRequired(true))
-                
.add(createServiceDependency().setService(SesameService.class).setRequired(true)));
  
-        
+            createComponent()
+            .setInterface(CourseService.class.getName(), null)
+            .setImplementation(CourseServiceImpl.class)
+            
.add(createServiceDependency().setService(LogService.class).setRequired(true))
+            
.add(createServiceDependency().setService(ConfigurationAdmin.class).setRequired(true))
+            
.add(createServiceDependency().setService(ModelSet.class).setRequired(true)));
+
         // Create and register the REST interface for the course service
         manager.add(
-                createComponent()
-                .setInterface(ResourceProvider.class.getName(), null)
-                .setImplementation(CourseResource.class)
-                
.add(createServiceDependency().setService(LogService.class).setRequired(true))
-                
.add(createServiceDependency().setService(UserAdmin.class).setRequired(true))
-                
.add(createServiceDependency().setService(PersonService.class).setRequired(true))
-                
.add(createServiceDependency().setService(ConfigTemplateManager.class).setRequired(true))
-                
.add(createServiceDependency().setService(HttpContextServiceFactory.class).setRequired(true))
-                
.add(createServiceDependency().setService(CourseService.class).setRequired(true)));
-        
+            createComponent()
+            .setInterface(ResourceProvider.class.getName(), null)
+            .setImplementation(CourseResource.class)
+            
.add(createServiceDependency().setService(LogService.class).setRequired(true))
+            
.add(createServiceDependency().setService(UserAdmin.class).setRequired(true))
+            
.add(createServiceDependency().setService(PersonService.class).setRequired(true))
+            
.add(createServiceDependency().setService(ConfigTemplateManager.class).setRequired(true))
+            
.add(createServiceDependency().setService(HttpContextServiceFactory.class).setRequired(true))
+            
.add(createServiceDependency().setService(CourseService.class).setRequired(true)));
+
         // Create and register the course ontology data provider service
         manager.add(
-                createComponent()
-                .setImplementation(CourseOntologyDataProvider.class)
-                
.add(createServiceDependency().setService(LogService.class).setRequired(true))
-                
.add(createServiceDependency().setService(ConfigTemplateManager.class).setRequired(true))
-                
.add(createServiceDependency().setService(CourseService.class).setRequired(true))
-                
.add(createServiceDependency().setService(SesameService.class).setRequired(true))
-                
.add(createServiceDependency().setService(ConfigurationAdmin.class).setRequired(true)));
-        
+            createComponent()
+            .setImplementation(CourseOntologyDataProvider.class)
+            
.add(createServiceDependency().setService(LogService.class).setRequired(true))
+            
.add(createServiceDependency().setService(ConfigTemplateManager.class).setRequired(true))
+            
.add(createServiceDependency().setService(CourseService.class).setRequired(true))
+            
.add(createServiceDependency().setService(ModelSet.class).setRequired(true))
+            
.add(createServiceDependency().setService(ConfigurationAdmin.class).setRequired(true)));
+
         // Create and register the course profile data provider service
-        
+
         manager.add(
-                createComponent()
-                .setImplementation(ProfileDataProvider.class)
-                
.add(createServiceDependency().setService(LogService.class).setRequired(true))
-                
.add(createServiceDependency().setService(PersonService.class).setRequired(true))
-                
.add(createServiceDependency().setService(UserAdmin.class).setRequired(true)));
+            createComponent()
+            .setImplementation(ProfileDataProvider.class)
+            
.add(createServiceDependency().setService(LogService.class).setRequired(true))
+            
.add(createServiceDependency().setService(PersonService.class).setRequired(true))
+            
.add(createServiceDependency().setService(UserAdmin.class).setRequired(true)));
     }
 
     @Override
     public void destroy(BundleContext bundleContext, DependencyManager 
dependencyManager) throws Exception {
     }
-    
+
 }

Modified: 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseOntologyDataProvider.java
==============================================================================
--- 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseOntologyDataProvider.java
 (original)
+++ 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseOntologyDataProvider.java
 Tue Dec 28 16:41:39 2010
@@ -20,25 +20,27 @@
 import static 
org.amdatu.example.course.service.CourseService.EDUCA_ONTOLOGY_URI_BASE;
 
 import java.io.IOException;
+import java.net.URISyntaxException;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import org.amdatu.core.config.templates.ConfigTemplateManager;
 import org.amdatu.example.course.service.CourseService;
-import org.amdatu.semanticweb.sesame.SesameService;
+import org.amdatu.libraries.utilities.ConversionUtil;
 import org.ontoware.aifbcommons.collection.ClosableIterator;
+import org.ontoware.rdf2go.exception.ModelRuntimeException;
 import org.ontoware.rdf2go.model.Model;
 import org.ontoware.rdf2go.model.ModelSet;
 import org.ontoware.rdf2go.model.QueryResultTable;
 import org.ontoware.rdf2go.model.QueryRow;
-import org.openrdf.model.URI;
-import org.openrdf.model.ValueFactory;
-import org.openrdf.model.impl.URIImpl;
-import org.openrdf.model.vocabulary.RDF;
-import org.openrdf.repository.RepositoryConnection;
-import org.openrdf.repository.RepositoryException;
+import org.ontoware.rdf2go.model.Syntax;
+import org.ontoware.rdf2go.model.node.URI;
+import org.ontoware.rdf2go.model.node.impl.URIImpl;
+import org.ontoware.rdf2go.util.ModelUtils;
+import org.ontoware.rdf2go.vocabulary.RDF;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.log.LogService;
 
@@ -64,11 +66,11 @@
         "Dutch", "English", "French", "German"};
 
     // Used services
-    private SesameService m_sesameService;
-    private BundleContext m_bundleContext;
-    private LogService m_logService;
-    private ConfigTemplateManager m_configTemplateManager;
-    private CourseService m_courseService;
+    private volatile ModelSet m_modelSet;
+    private volatile BundleContext m_bundleContext;
+    private volatile LogService m_logService;
+    private volatile ConfigTemplateManager m_configTemplateManager;
+    private volatile CourseService m_courseService;
 
     // Ontology mappings
     public static final Map<String, String> ONTOLOGIES = new HashMap<String, 
String>();
@@ -101,8 +103,8 @@
                         + "'");
                 }
 
-                m_sesameService.importRDFFile(rdfsUrl);
-                m_sesameService.importRDFFile(rdfUrl);
+                ModelUtils.loadFromFile(ConversionUtil.urlToFile(rdfsUrl), 
Syntax.RdfXml, m_modelSet.getDefaultModel());
+                ModelUtils.loadFromFile(ConversionUtil.urlToFile(rdfUrl), 
Syntax.RdfXml, m_modelSet.getDefaultModel());
 
                 // Build the rest of the test data
                 buildCourses();
@@ -110,27 +112,29 @@
         } catch (IOException e) {
             m_logService.log(LogService.LOG_ERROR, "Could not initialize 
course ontologies", e);
         }
+        catch (ModelRuntimeException e) {
+            m_logService.log(LogService.LOG_ERROR, "Could not initialize 
course ontologies", e);
+        }
+        catch (URISyntaxException e) {
+            m_logService.log(LogService.LOG_ERROR, "Could not initialize 
course ontologies", e);
+        }
     }
 
     // Build the course triples. Most courses are available for all educations 
and grades
     private void buildCourses() {
-        RepositoryConnection connection = null;
         try {
-            // Build the URL to the Courses.rdf file
-            connection = m_sesameService.getRepository().getConnection();
-
             // Determine base URL for all ontologies
             String baseUrl = m_courseService.getOntologyBaseUrl();
 
-            ValueFactory factory = 
m_sesameService.getRepository().getValueFactory();
-            URI courseType = factory.createURI(baseUrl + 
EDUCA_ONTOLOGY_COURSE_URI);
-            URI gradeProp = factory.createURI(baseUrl + 
EDUCA_ONTOLOGY_GRADE_PROP_URI);
-            URI educationProp = factory.createURI(baseUrl + 
EDUCA_ONTOLOGY_EDUCATION_PROP_URI);
-            URI nameProp = factory.createURI(baseUrl + 
EDUCA_ONTOLOGY_NAME_PROP_URI);
+            Model model = m_modelSet.getDefaultModel();
+            URI courseType = model.createURI(baseUrl + 
EDUCA_ONTOLOGY_COURSE_URI);
+            URI gradeProp = model.createURI(baseUrl + 
EDUCA_ONTOLOGY_GRADE_PROP_URI);
+            URI educationProp = model.createURI(baseUrl + 
EDUCA_ONTOLOGY_EDUCATION_PROP_URI);
+            URI nameProp = model.createURI(baseUrl + 
EDUCA_ONTOLOGY_NAME_PROP_URI);
 
             // Retrieve all grades and educations
-            List<String> grades = m_sesameService.getSubjects(baseUrl + 
EDUCA_ONTOLOGY_GRADE_URI);
-            List<String> educations = m_sesameService.getSubjects(baseUrl + 
EDUCA_ONTOLOGY_EDUCATION_URI);
+            List<String> grades = getSubjects(baseUrl + 
EDUCA_ONTOLOGY_GRADE_URI);
+            List<String> educations = getSubjects(baseUrl + 
EDUCA_ONTOLOGY_EDUCATION_URI);
 
             // Loop over all course names and create a Course for each grade 
and education
             m_logService.log(LogService.LOG_DEBUG, "Adding " + 
COURSE_NAMES.length * grades.size() * educations.size()
@@ -149,16 +153,17 @@
                     for (String educationURI : educations) {
                         String sCourseURI = courseBaseURI + 
educationURI.substring(educationURI.lastIndexOf("#") + 1);
                         sCourseURI += "/" + 
gradeURI.substring(gradeURI.lastIndexOf("#") + 1);
-                        URI courseURI = factory.createURI(sCourseURI);
-                        connection.add(courseURI, RDF.TYPE, courseType);
+                        URI courseURI = m_modelSet.createURI(sCourseURI);
+
+                        model.addStatement(courseURI, RDF.type, courseType);
 
                         URIImpl gradeNode = new URIImpl(gradeURI);
-                        connection.add(courseURI, gradeProp, gradeNode);
+                        model.addStatement(courseURI, gradeProp, gradeNode);
 
                         URIImpl educationNode = new URIImpl(educationURI);
-                        connection.add(courseURI, educationProp, 
educationNode);
+                        model.addStatement(courseURI, educationProp, 
educationNode);
 
-                        connection.add(courseURI, nameProp, 
factory.createLiteral(courseName));
+                        model.addStatement(courseURI, nameProp, 
model.createPlainLiteral(courseName));
                     }
                 }
 
@@ -170,16 +175,6 @@
             }
         } catch (IOException e) {
             m_logService.log(LogService.LOG_ERROR, "Failed to store Courses in 
RDF database", e);
-        } catch (RepositoryException e) {
-            m_logService.log(LogService.LOG_ERROR, "Failed to store Courses in 
RDF database", e);
-        } finally {
-            if (connection != null) {
-                try {
-                    connection.close();
-                } catch (RepositoryException e) {
-                    m_logService.log(LogService.LOG_ERROR, "Failed to close 
RDF database connection", e);
-                }
-            }
         }
     }
 
@@ -192,8 +187,7 @@
     private boolean ontologyDataExists() throws IOException {
         String baseUrl = m_courseService.getOntologyBaseUrl();
         String queryString = "SELECT ?subject WHERE { ?subject a <" + baseUrl 
+ EDUCA_ONTOLOGY_PERSON_URI + ">}";
-        ModelSet modelSet = m_sesameService.getModelSet();
-        Model model = modelSet.getDefaultModel();
+        Model model = m_modelSet.getDefaultModel();
         QueryResultTable result = model.sparqlSelect(queryString);
         ClosableIterator<QueryRow> iterator = result.iterator();
         try {
@@ -205,4 +199,22 @@
         }
         return Boolean.FALSE;
     }
+
+    private List<String> getSubjects(String subjectUri) {
+        Model model = m_modelSet.getDefaultModel();
+        URI uri = model.createURI(subjectUri);
+        String query = "SELECT ?subject WHERE { ?subject a <" + uri + ">}";
+        QueryResultTable result = model.sparqlSelect(query);
+        ClosableIterator<QueryRow> iterator = result.iterator();
+        ArrayList<String> subjects = new ArrayList<String>();
+        try {
+            while (iterator.hasNext()) {
+                QueryRow bs = iterator.next();
+                subjects.add(bs.getValue("subject").toString());
+            }
+        } finally {
+            iterator.close();
+        }
+        return subjects;
+    }
 }

Modified: 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseServiceImpl.java
==============================================================================
--- 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseServiceImpl.java
  (original)
+++ 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseServiceImpl.java
  Tue Dec 28 16:41:39 2010
@@ -22,7 +22,6 @@
 
 import org.amdatu.example.course.service.Course;
 import org.amdatu.example.course.service.CourseService;
-import org.amdatu.semanticweb.sesame.SesameService;
 import org.apache.shindig.social.opensocial.model.Person;
 import org.ontoware.aifbcommons.collection.ClosableIterator;
 import org.ontoware.rdf2go.model.Model;
@@ -42,7 +41,7 @@
 public class CourseServiceImpl implements CourseService {
     // Services injected by the Felix dependency manager
     private volatile LogService m_logService;
-    private volatile SesameService m_sesameService;
+    private volatile ModelSet m_modelSet;
     private volatile ConfigurationAdmin m_configAdmin;
 
     /**
@@ -70,8 +69,7 @@
         "}";
 
         ArrayList<Course> courses = new ArrayList<Course>();
-        ModelSet modelSet = m_sesameService.getModelSet();
-        Model model = modelSet.getDefaultModel();
+        Model model = m_modelSet.getDefaultModel();
         QueryResultTable result = model.sparqlSelect(sparqlQuery);
         ClosableIterator<QueryRow> iterator = result.iterator();
         try {

Modified: 
trunk/amdatu-libraries/utilities/src/main/java/org/amdatu/libraries/utilities/ConversionUtil.java
==============================================================================
--- 
trunk/amdatu-libraries/utilities/src/main/java/org/amdatu/libraries/utilities/ConversionUtil.java
   (original)
+++ 
trunk/amdatu-libraries/utilities/src/main/java/org/amdatu/libraries/utilities/ConversionUtil.java
   Tue Dec 28 16:41:39 2010
@@ -18,11 +18,19 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.net.URISyntaxException;
+import java.net.URL;
 
 public final class ConversionUtil {
+    // Default amount of bytes to read at once
+    private static final int DEFAULT_BYTE_SIZE = 1024;
+
     /**
      * Converts a serializable Java object to a byte array.
      * @param object The object to convert
@@ -58,7 +66,7 @@
      * @param bytes Array of bytes to convert
      * @return The converted object
      * @throws ClassNotFoundException Instead the class of the serialized Java 
object
-     * could not be found (likely caused by the fact that the class is not 
available in 
+     * could not be found (likely caused by the fact that the class is not 
available in
      * this bundles classloader)
      * @throws IOException In case any IO exception occurred
      */
@@ -83,4 +91,32 @@
         }
         return data;
     }
+
+    public static File urlToFile(URL url) throws IOException, 
URISyntaxException {
+        String filename = url.toURI().getRawPath();
+        filename = filename.substring(filename.lastIndexOf("/") + 1);
+        File tempFile = File.createTempFile(filename, ".temp");
+        InputStream is = null;
+        FileOutputStream fos = null;
+        try {
+            is = url.openStream();
+            fos = new FileOutputStream(tempFile);
+            int len = 0;
+            byte[] b = new byte[DEFAULT_BYTE_SIZE];
+            while ((len = is.read(b)) > 0) {
+                fos.write(b, 0, len);
+            }
+        } finally {
+            if (is != null) {
+                try {
+                    is.close();
+                } finally {
+                    if (fos != null) {
+                        fos.close();
+                    }
+                }
+            }
+        }
+        return tempFile;
+    }
 }

Modified: 
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/SesameService.java
==============================================================================
--- 
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/SesameService.java
      (original)
+++ 
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/SesameService.java
      Tue Dec 28 16:41:39 2010
@@ -19,30 +19,37 @@
 import java.net.URL;
 import java.util.List;
 
-import org.ontoware.rdf2go.model.ModelSet;
 import org.openrdf.repository.Repository;
 
 /**
  * Interface for a Sesame service. Sesame is a fast and scalable RDF database. 
Sesame also provides
  * two query languages for searching through the RDF documents in a Sesame 
database: SeRQL and SPARQL.
+ * This interface is deprecated, use the RDF2GO API instead. All methods 
however are still fully functioning, but
+ * they will be removed in subsequent releases.
  * 
  * @author ivol
  */
+ at Deprecated
 public interface SesameService {
     /**
      * Returns the Sesame repository that stores the RDF documents.
+     * This method has been deprecated, use the RDF2GO API instead. To 
retrieve a ModelSet published by
+     * the any RDF implementation define a service dependency on ModelSet 
instead.
      * 
      * @return the Sesame repository that stores the RDF documents.
      */
+    @Deprecated
     Repository getRepository();
 
-    ModelSet getModelSet();
-
     /**
      * Imports an RDF file into the RDF storage.
+     * This method has been deprecated, use the RDF2GO API instead. To import 
a RDF file use:
+     * ModelUtils.loadFromFile(ConversionUtil.urlToFile(url), Syntax.RdfXml, 
m_modelSet.getDefaultModel());
+     * NB: ConversionUtil is a utility class in the utilities bundle of the 
amdatu-libraries module.
      * 
      * @param rdfFile The URL to the file to import.
      */
+    @Deprecated
     void importRDFFile(URL rdfFile);
 
     /**
@@ -70,9 +77,11 @@
 
     /**
      * Retrieve a list of subject URI's that are instances of the specified 
class.
+     * This method has been deprecated, use the RDF2GO API instead.
      * 
      * @param classURI The URI of the class of which the subjects must be 
instances
      * @return List of resource URI's of the selected subjects
      */
+    @Deprecated
     List<String> getSubjects(String classURI);
 }

Modified: 
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/service/SesameServiceImpl.java
==============================================================================
--- 
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/service/SesameServiceImpl.java
  (original)
+++ 
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/service/SesameServiceImpl.java
  Tue Dec 28 16:41:39 2010
@@ -80,6 +80,7 @@
             m_repository.initialize();
             m_rdf2goModelSet = new RepositoryModelSet(m_repository);
             m_rdf2goModelSet.open();
+            registerModelSet();
         } catch (RepositoryException e) {
             m_logService.log(LogService.LOG_ERROR, "Failed to initialize 
Sesame SailRepository in repository "
                 + "directory '" + m_repositoryDir + "'", e);
@@ -111,7 +112,7 @@
     public void importRDFFile(URL rdfFile) {
         RepositoryConnection connection = null;
         try {
-            connection = getRepository().getConnection();
+            connection = m_repository.getConnection();
             connection.add(rdfFile, rdfFile.toString(), RDFFormat.RDFXML);
         } catch (RepositoryException e) {
             m_logService.log(LogService.LOG_ERROR, "Failed to store RDF file 
'" + rdfFile + "'", e);
@@ -134,7 +135,7 @@
         RepositoryConnection connection = null;
         TupleQueryResult result = null;
         try {
-            connection = getRepository().getConnection();
+            connection = m_repository.getConnection();
             TupleQuery tupleQuery = 
connection.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
             result = tupleQuery.evaluate();
             return handler.handleResult(result);
@@ -164,7 +165,7 @@
     }
 
     public List<String> getSubjects(String subjectUri) {
-        ValueFactory factory = getRepository().getValueFactory();
+        ValueFactory factory = m_repository.getValueFactory();
         URI uri = factory.createURI(subjectUri);
         String query = "SELECT ?subject WHERE { ?subject a <" + uri + ">}";
         Model model = m_rdf2goModelSet.getDefaultModel();

Modified: trunk/amdatu-semanticweb/sparqlendpoint/pom.xml
==============================================================================
--- trunk/amdatu-semanticweb/sparqlendpoint/pom.xml     (original)
+++ trunk/amdatu-semanticweb/sparqlendpoint/pom.xml     Tue Dec 28 16:41:39 2010
@@ -13,13 +13,7 @@
   <name>Amdatu Semantic Web - SPARQL Endpoint</name>
   <description>Provides a gadget to execute SPARQL queries</description>
 
-  <dependencies>    
-    <dependency>
-      <groupId>org.amdatu.semanticweb</groupId>
-      <artifactId>sesame</artifactId>
-      <scope>provided</scope>
-      <type>bundle</type>
-    </dependency> 
+  <dependencies>
     <dependency>
       <groupId>org.semweb4j</groupId>
       <artifactId>rdf2go.api</artifactId>

Modified: 
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/Activator.java
==============================================================================
--- 
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/Activator.java
  (original)
+++ 
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/Activator.java
  Tue Dec 28 16:41:39 2010
@@ -18,12 +18,12 @@
 
 import org.amdatu.libraries.utilities.osgi.ServiceDependentActivator;
 import org.amdatu.opensocial.gadgetmanagement.GadgetManagement;
-import org.amdatu.semanticweb.sesame.SesameService;
 import org.amdatu.semanticweb.sparqlendpoint.service.SPARQLEndpointServiceImpl;
 import org.amdatu.web.httpcontext.HttpContextServiceFactory;
 import org.amdatu.web.httpcontext.ResourceProvider;
 import org.amdatu.web.rest.jaxrs.JaxRsSpi;
 import org.apache.felix.dm.DependencyManager;
+import org.ontoware.rdf2go.model.ModelSet;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.log.LogService;
 
@@ -46,10 +46,10 @@
         // Create the SPARQLEndpointServiceImpl which has dependencies with 
the Log service
         // and HTTP service
         
manager.add(createComponent().setInterface(ResourceProvider.class.getName(), 
null).setImplementation(
-                SPARQLEndpointServiceImpl.class).add(
+            SPARQLEndpointServiceImpl.class).add(
                 
createServiceDependency().setService(LogService.class).setRequired(true))
                 
.add(createServiceDependency().setService(GadgetManagement.class).setRequired(true))
-                
.add(createServiceDependency().setService(SesameService.class).setRequired(true))
+                
.add(createServiceDependency().setService(ModelSet.class).setRequired(true))
                 
.add(createServiceDependency().setService(HttpContextServiceFactory.class).setRequired(true))
                 
.add(createConfigurationDependency().setPid(SPARQLEndpointServiceImpl.PID)));
     }
@@ -57,5 +57,5 @@
     @Override
     public void destroy(BundleContext bundleContext, DependencyManager 
dependencyManager) throws Exception {
     }
-    
+
 }

Modified: 
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/service/SPARQLEndpointServiceImpl.java
==============================================================================
--- 
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/service/SPARQLEndpointServiceImpl.java
  (original)
+++ 
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/service/SPARQLEndpointServiceImpl.java
  Tue Dec 28 16:41:39 2010
@@ -36,7 +36,6 @@
 import org.amdatu.opensocial.gadgetmanagement.GadgetManagement;
 import org.amdatu.opensocial.shindig.GadgetCategory;
 import org.amdatu.opensocial.shindig.GadgetDefinition;
-import org.amdatu.semanticweb.sesame.SesameService;
 import org.amdatu.semanticweb.sparqlendpoint.Activator;
 import org.amdatu.web.httpcontext.HttpContextServiceFactory;
 import org.amdatu.web.httpcontext.ResourceProvider;
@@ -71,11 +70,11 @@
     private final static String PORTNR = "portnr";
 
     // Service dependencies, injected by the Felix dependency manager
-    private volatile SesameService m_sesameService;
     private volatile LogService m_logService;
     private volatile BundleContext m_bundleContext;
     private volatile HttpContextServiceFactory m_httpContextServiceFactory;
     private volatile GadgetManagement m_gadgetManagement;
+    private volatile ModelSet m_modelSet;
 
     // The private HTTP context service for this bundle
     private Component m_httpContextComponent;
@@ -141,8 +140,7 @@
         JSONObject jsonObject = new JSONObject();
         try {
             m_logService.log(LogService.LOG_DEBUG, "Executing SPARQL query: " 
+ query);
-            ModelSet modelSet = m_sesameService.getModelSet();
-            Model model = modelSet.getDefaultModel();
+            Model model = m_modelSet.getDefaultModel();
             QueryResultTable result = model.sparqlSelect(query);
             List<String> names = result.getVariables();
             ClosableIterator<QueryRow> iterator = result.iterator();

Modified: 
trunk/integration-tests/src/test/java/org/amdatu/test/integration/tests/RDF2GOTest.java
==============================================================================
--- 
trunk/integration-tests/src/test/java/org/amdatu/test/integration/tests/RDF2GOTest.java
     (original)
+++ 
trunk/integration-tests/src/test/java/org/amdatu/test/integration/tests/RDF2GOTest.java
     Tue Dec 28 16:41:39 2010
@@ -55,7 +55,6 @@
     protected Option provisionBundles() {
         return provision(
             javaxServlet(),
-            log4j(),
             amdatuRdf2goApi(),
             amdatuRdf2goSesameBridge(),
             amdatuSesameApplication()

Reply via email to