annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
dwinter
parents:
diff changeset
1 package de.mpiwg.itgroup.annotationManager.RDFHandling;
dwinter
parents:
diff changeset
2
dwinter
parents:
diff changeset
3 import java.util.ArrayList;
dwinter
parents:
diff changeset
4 import java.util.List;
dwinter
parents:
diff changeset
5
dwinter
parents:
diff changeset
6 import org.apache.log4j.Logger;
dwinter
parents:
diff changeset
7 import org.apache.tiles.context.ListAttribute;
dwinter
parents:
diff changeset
8 import org.openrdf.query.BindingSet;
dwinter
parents:
diff changeset
9 import org.openrdf.query.TupleQueryResult;
dwinter
parents:
diff changeset
10 import org.restlet.Context;
dwinter
parents:
diff changeset
11 import org.restlet.engine.component.ChildContext;
dwinter
parents:
diff changeset
12
dwinter
parents:
diff changeset
13 import de.mpiwg.itgroup.annotationManager.Errors.TripleStoreSearchError;
dwinter
parents:
diff changeset
14 import de.mpiwg.itgroup.annotationManager.RDFHandling.Convert.Annotation;
dwinter
parents:
diff changeset
15 import de.mpiwg.itgroup.nimanager.exceptions.TripleStoreHandlerException;
dwinter
parents:
diff changeset
16 import de.mpiwg.itgroup.nimanager.owl.TripleStoreHandler;
dwinter
parents:
diff changeset
17
dwinter
parents:
diff changeset
18 public class RDFSearcher {
dwinter
parents:
diff changeset
19
dwinter
parents:
diff changeset
20 private String urlBase="http://ontologies.mpiwg-berlin.mpg.de/annotations/"; //TODO should go into config
dwinter
parents:
diff changeset
21
dwinter
parents:
diff changeset
22 private TripleStoreHandler th;
dwinter
parents:
diff changeset
23
dwinter
parents:
diff changeset
24 private String context;
dwinter
parents:
diff changeset
25
dwinter
parents:
diff changeset
26 private Logger logger= Logger.getRootLogger();
dwinter
parents:
diff changeset
27
dwinter
parents:
diff changeset
28 public RDFSearcher(String context) {
dwinter
parents:
diff changeset
29 this.context=context;
dwinter
parents:
diff changeset
30 }
dwinter
parents:
diff changeset
31
dwinter
parents:
diff changeset
32
dwinter
parents:
diff changeset
33
dwinter
parents:
diff changeset
34 public List<Annotation> search(String uri, String user, String limit,
dwinter
parents:
diff changeset
35 String offset) throws TripleStoreHandlerException, TripleStoreSearchError {
dwinter
parents:
diff changeset
36
dwinter
parents:
diff changeset
37 List<Annotation> retAnnots = new ArrayList<Convert.Annotation>();
dwinter
parents:
diff changeset
38 ChildContext context = (ChildContext)Context.getCurrent();
dwinter
parents:
diff changeset
39 String tripleStoreUser = context.getParameters().getFirstValue("de.mpiwg.itgroup.annotationManager.virtuoso.tripleStoreUser");
dwinter
parents:
diff changeset
40 String tripleStorePW = context.getParameters().getFirstValue("de.mpiwg.itgroup.annotationManager.virtuoso.tripleStoreUserPassword");
dwinter
parents:
diff changeset
41
dwinter
parents:
diff changeset
42 th = new TripleStoreHandler("jdbc:virtuoso://virtuoso.mpiwg-berlin.mpg.de:1111", tripleStoreUser, tripleStorePW);//TODO should go into config
dwinter
parents:
diff changeset
43 String queryString="";
dwinter
parents:
diff changeset
44
dwinter
parents:
diff changeset
45 String whereString = "?s ?p <http://www.w3.org/2000/10/annotationType#Comment>.";
dwinter
parents:
diff changeset
46 //whereString +="?s <http://ontologies.mpiwg-berlin.mpg.de/annotations/docuviewerText> ?link.";
dwinter
parents:
diff changeset
47
dwinter
parents:
diff changeset
48 if(uri!=null && !uri.equals("")){
dwinter
parents:
diff changeset
49 whereString +=String.format("?s <http://ontologies.mpiwg-berlin.mpg.de/annotations/docuviewerText> <%s>.",uri);}
dwinter
parents:
diff changeset
50 else {
dwinter
parents:
diff changeset
51 whereString +=String.format("?s <http://ontologies.mpiwg-berlin.mpg.de/annotations/docuviewerText> ?uri.");
dwinter
parents:
diff changeset
52 }
dwinter
parents:
diff changeset
53 whereString +=String.format("?s <http://ontologies.mpiwg-berlin.mpg.de/annotations/textSelection> ?xpointer.");
dwinter
parents:
diff changeset
54 whereString +=String.format("?s <http://www.w3.org/2000/10/annotation-ns#body> ?annotText.");
dwinter
parents:
diff changeset
55
dwinter
parents:
diff changeset
56 if(user!=null && !user.equals("")){
dwinter
parents:
diff changeset
57 whereString +=String.format("?s <http://www.w3.org/2000/10/annotation-ns#author> \"%s\".",user);
dwinter
parents:
diff changeset
58 } else {
dwinter
parents:
diff changeset
59 whereString +=String.format("?s <http://www.w3.org/2000/10/annotation-ns#author> ?author.");
dwinter
parents:
diff changeset
60 }
dwinter
parents:
diff changeset
61
dwinter
parents:
diff changeset
62 whereString +=String.format("?s <http://www.w3.org/2000/10/annotation-ns#created> ?created.");
dwinter
parents:
diff changeset
63
dwinter
parents:
diff changeset
64 whereString +=String.format("?annotText <http://ontologies.mpiwg-berlin.mpg.de/annotations/containsText> ?text.");
dwinter
parents:
diff changeset
65
dwinter
parents:
diff changeset
66 queryString=String.format("select distinct * where {%s}",whereString);
dwinter
parents:
diff changeset
67
dwinter
parents:
diff changeset
68
dwinter
parents:
diff changeset
69 logger.debug("RDFSearcher:"+queryString);
dwinter
parents:
diff changeset
70
dwinter
parents:
diff changeset
71 try {
dwinter
parents:
diff changeset
72 TupleQueryResult results = th.querySPARQL(queryString);
dwinter
parents:
diff changeset
73
dwinter
parents:
diff changeset
74 while (results.hasNext()) {
dwinter
parents:
diff changeset
75 BindingSet result = results.next();
dwinter
parents:
diff changeset
76 String annotUri;
dwinter
parents:
diff changeset
77 if(uri!=null && !uri.equals("")){
dwinter
parents:
diff changeset
78 annotUri=uri;
dwinter
parents:
diff changeset
79 } else {
dwinter
parents:
diff changeset
80 annotUri = result.getBinding("uri").getValue().stringValue();
dwinter
parents:
diff changeset
81 }
dwinter
parents:
diff changeset
82
dwinter
parents:
diff changeset
83 String annotUser;
dwinter
parents:
diff changeset
84 if(user!=null && !user.equals("")){
dwinter
parents:
diff changeset
85 annotUser=user;
dwinter
parents:
diff changeset
86 } else {
dwinter
parents:
diff changeset
87 annotUser = result.getBinding("author").getValue().stringValue();
dwinter
parents:
diff changeset
88 }
dwinter
parents:
diff changeset
89
dwinter
parents:
diff changeset
90
dwinter
parents:
diff changeset
91 Annotation annot = new Annotation(result.getBinding("xpointer").getValue().stringValue(),
dwinter
parents:
diff changeset
92 annotUser, result.getBinding("created").getValue().stringValue(),
dwinter
parents:
diff changeset
93 result.getBinding("text").getValue().stringValue(), null,
dwinter
parents:
diff changeset
94 annotUri);
dwinter
parents:
diff changeset
95 retAnnots.add(annot);
dwinter
parents:
diff changeset
96 }
dwinter
parents:
diff changeset
97 } catch (Exception e) {
dwinter
parents:
diff changeset
98 throw new TripleStoreSearchError();
dwinter
parents:
diff changeset
99 }
dwinter
parents:
diff changeset
100 // TODO Auto-generated method stub
dwinter
parents:
diff changeset
101 return retAnnots;
dwinter
parents:
diff changeset
102 }
dwinter
parents:
diff changeset
103
dwinter
parents:
diff changeset
104 }