diff src/de/mpiwg/itgroup/annotationManager/RDFHandling/RDFSearcher.java @ 0:77530be3c747

intial
author dwinter
date Tue, 22 Nov 2011 15:47:57 +0100
parents
children 6888ae3287b8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/de/mpiwg/itgroup/annotationManager/RDFHandling/RDFSearcher.java	Tue Nov 22 15:47:57 2011 +0100
@@ -0,0 +1,104 @@
+package de.mpiwg.itgroup.annotationManager.RDFHandling;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.apache.tiles.context.ListAttribute;
+import org.openrdf.query.BindingSet;
+import org.openrdf.query.TupleQueryResult;
+import org.restlet.Context;
+import org.restlet.engine.component.ChildContext;
+
+import de.mpiwg.itgroup.annotationManager.Errors.TripleStoreSearchError;
+import de.mpiwg.itgroup.annotationManager.RDFHandling.Convert.Annotation;
+import de.mpiwg.itgroup.nimanager.exceptions.TripleStoreHandlerException;
+import de.mpiwg.itgroup.nimanager.owl.TripleStoreHandler;
+
+public class RDFSearcher {
+
+	private String urlBase="http://ontologies.mpiwg-berlin.mpg.de/annotations/"; //TODO should go into config
+
+	private TripleStoreHandler th;
+
+	private String context;
+
+	private Logger logger= Logger.getRootLogger();
+
+	public RDFSearcher(String context) {
+		this.context=context;
+	}
+
+
+
+	public List<Annotation> search(String uri, String user, String limit,
+			String offset) throws TripleStoreHandlerException, TripleStoreSearchError {
+
+		List<Annotation> retAnnots = new ArrayList<Convert.Annotation>();
+		ChildContext context = (ChildContext)Context.getCurrent();
+		String tripleStoreUser = context.getParameters().getFirstValue("de.mpiwg.itgroup.annotationManager.virtuoso.tripleStoreUser");
+		String tripleStorePW = context.getParameters().getFirstValue("de.mpiwg.itgroup.annotationManager.virtuoso.tripleStoreUserPassword");
+		
+		th = new TripleStoreHandler("jdbc:virtuoso://virtuoso.mpiwg-berlin.mpg.de:1111", tripleStoreUser, tripleStorePW);//TODO should go into config
+		String queryString="";
+
+		String whereString = "?s ?p <http://www.w3.org/2000/10/annotationType#Comment>.";
+		//whereString +="?s <http://ontologies.mpiwg-berlin.mpg.de/annotations/docuviewerText> ?link.";
+
+		if(uri!=null && !uri.equals("")){
+			whereString +=String.format("?s <http://ontologies.mpiwg-berlin.mpg.de/annotations/docuviewerText> <%s>.",uri);}
+		else {
+			whereString +=String.format("?s <http://ontologies.mpiwg-berlin.mpg.de/annotations/docuviewerText> ?uri.");
+		}	
+		whereString +=String.format("?s <http://ontologies.mpiwg-berlin.mpg.de/annotations/textSelection> ?xpointer.");
+		whereString +=String.format("?s <http://www.w3.org/2000/10/annotation-ns#body> ?annotText.");
+
+		if(user!=null && !user.equals("")){
+			whereString +=String.format("?s <http://www.w3.org/2000/10/annotation-ns#author> \"%s\".",user);
+		} else {
+			whereString +=String.format("?s <http://www.w3.org/2000/10/annotation-ns#author> ?author.");
+		}
+
+		whereString +=String.format("?s <http://www.w3.org/2000/10/annotation-ns#created> ?created.");
+
+		whereString +=String.format("?annotText <http://ontologies.mpiwg-berlin.mpg.de/annotations/containsText> ?text.");
+
+		queryString=String.format("select distinct * where {%s}",whereString);
+
+		
+		logger.debug("RDFSearcher:"+queryString);
+
+		try {
+			TupleQueryResult results = th.querySPARQL(queryString);
+
+			while (results.hasNext()) {
+				BindingSet result = results.next();
+				String annotUri;
+				if(uri!=null && !uri.equals("")){
+					annotUri=uri;
+				} else {
+					annotUri = result.getBinding("uri").getValue().stringValue();
+				}
+				
+				String annotUser;
+				if(user!=null && !user.equals("")){
+					annotUser=user;
+				} else {
+					annotUser = result.getBinding("author").getValue().stringValue();
+				}
+				
+				
+				Annotation annot = new Annotation(result.getBinding("xpointer").getValue().stringValue(), 
+						annotUser, result.getBinding("created").getValue().stringValue(), 
+						result.getBinding("text").getValue().stringValue(), null,
+						annotUri);
+				retAnnots.add(annot);
+			}
+		} catch (Exception e) {
+			throw new TripleStoreSearchError();
+		}
+		// TODO Auto-generated method stub
+		return retAnnots;
+	}
+
+}