Mercurial > hg > AnnotationManager
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; + } + +}