1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package com.ontotext.ordi.trree;
19
20 import java.util.Iterator;
21 import java.util.Map;
22
23 import org.apache.log4j.Logger;
24 import org.openrdf.model.impl.URIImpl;
25
26 import com.ontotext.ordi.tripleset.Listener;
27 import com.ontotext.ordi.tripleset.ORDIConst;
28 import com.ontotext.trree.owlim_ext.AbstractInferencer;
29 import com.ontotext.trree.owlim_ext.AbstractRepository;
30 import com.ontotext.trree.owlim_ext.EntityPool;
31 import com.ontotext.trree.owlim_ext.Notify;
32 import com.ontotext.trree.owlim_ext.StatementIdIterator;
33
34 public class TRREEWrapper implements AbstractRepository {
35
36 private Listener listener;
37 private EntityPool pool;
38 private AbstractRepository repository;
39 private int defaultGraphId;
40 private static Logger logger = Logger.getLogger(TRREEWrapper.class);
41
42 public TRREEWrapper(AbstractRepository repository, EntityPool pool) {
43 if (repository == null || pool == null) {
44 throw new IllegalArgumentException();
45 }
46 this.repository = repository;
47 this.pool = pool;
48 defaultGraphId = pool.createId(new URIImpl(ORDIConst.DEFAULT_GRAPH));
49 }
50
51 public AbstractRepository getWrappedRepository() {
52 return repository;
53 }
54
55 public void setListener(Listener listener) {
56 this.listener = listener;
57 }
58
59 public Listener getListener() {
60 return listener;
61 }
62
63 /***************************************************************************
64 * TRREE method implementation
65 **************************************************************************/
66 public void clear() {
67 repository.clear();
68 }
69
70 public StatementIdIterator getExplicitStatements(int subj, int pred, int obj) {
71 return repository.getExplicitStatements(subj, pred, obj);
72 }
73
74 public StatementIdIterator getExplicitStatements(int subj, int pred,
75 int obj, int context) {
76 logger.trace(String.format("getExplicitStatements(%d, %d, %d, %d)",
77 new Object[] { subj, pred, obj, context }));
78 return repository.getExplicitStatements(subj, pred, obj, context);
79 }
80
81 public StatementIdIterator getFromQuadSet(int subj, int pred, int obj,
82 int context, int quadSet) {
83 return repository.getFromQuadSet(subj, pred, obj, context, quadSet);
84 }
85
86 public StatementIdIterator getFromQuadSet(int quadset) {
87 return repository.getFromQuadSet(quadset);
88 }
89
90 public StatementIdIterator getInferStatementIterator() {
91 return repository.getInferStatementIterator();
92 }
93
94 public int[] getMappedQuadSets(int subj, int pred, int obj, int context) {
95 return repository.getMappedQuadSets(subj, pred, obj, context);
96 }
97
98 public int getNumberOfExplicitStatements() {
99 return repository.getNumberOfExplicitStatements();
100 }
101
102 public StatementIdIterator getReinferStatementIterator() {
103 return repository.getInferStatementIterator();
104 }
105
106 public StatementIdIterator getStatements(int subj, int pred, int obj) {
107 return repository.getStatements(subj, pred, obj);
108 }
109
110 public StatementIdIterator getStatements(int subj, int pred, int obj,
111 int context) {
112 if (logger.isTraceEnabled()) {
113 logger.trace(String.format("search(%d, %d, %d, %d)", new Object[] {
114 subj, pred, obj, context }));
115 }
116 return repository.getStatements(subj, pred, obj, context);
117 }
118
119 public boolean hasStatement(int subj, int pred, int obj) {
120 return repository.hasStatement(subj, pred, obj);
121 }
122
123 public boolean hasStatement(int subj, int pred, int obj, int context) {
124 return repository.hasStatement(subj, pred, obj, context);
125 }
126
127 @SuppressWarnings("unchecked")
128 public void initialize(Map params) {
129 logger.debug("Repository initialized: " + params.toString());
130 repository.initialize(params);
131 }
132
133 public boolean mapToQuadSet(int subj, int pred, int obj, int context,
134 int quadset) {
135 if (logger.isTraceEnabled()) {
136 logger.trace(String.format("associate(%d, %d, %d, %d, %d)",
137 new Object[] { subj, pred, obj, context, quadset }));
138 }
139 if (listener != null) {
140 listener.statementAssociated(new LazyTStatementImpl(subj, pred,
141 obj, context, pool, repository));
142 }
143 return repository.mapToQuadSet(subj, pred, obj, context, quadset);
144 }
145
146 public boolean putStatement(int subj, int pred, int obj, byte status) {
147 if (logger.isTraceEnabled()) {
148 logger.trace(String.format("add(%d, %d, %d, %s)", new Object[] {
149 subj, pred, obj, "inferred" }));
150 }
151 if (listener != null
152 && status == AbstractRepository.INFERRED_STATEMENT_STATUS) {
153 listener.statementInferred(new LazyTStatementImpl(subj, pred, obj,
154 defaultGraphId, pool, repository));
155 }
156 return repository.putStatement(subj, pred, obj, status);
157 }
158
159
160 public boolean putStatement(int subj, int pred, int obj, int context) {
161 if (logger.isTraceEnabled()) {
162 logger.trace(String.format("add(%d, %d, %d, %d)", new Object[] {
163 subj, pred, obj, context }));
164 }
165 if (listener != null) {
166 listener.statementAdded(new LazyTStatementImpl(subj, pred, obj,
167 context, pool, repository));
168 }
169 return repository.putStatement(subj, pred, obj, context);
170 }
171
172 public boolean removeMappingFromQuadSet(int subj, int pred, int obj,
173 int context, int quadset) {
174 if (logger.isTraceEnabled()) {
175 logger.trace(String.format("deassociate(%d, %d, %d, %d, %d)",
176 new Object[] { subj, pred, obj, context, quadset }));
177 }
178 if (listener != null) {
179 listener.statementDeassociated(new LazyTStatementImpl(subj, pred,
180 obj, context, pool, repository));
181 }
182 return repository.removeMappingFromQuadSet(subj, pred, obj, context,
183 quadset);
184 }
185
186 public int removeStatements(int subj, int pred, int obj) {
187 if (logger.isTraceEnabled()) {
188 logger.trace(String.format("remove(%d, %d, %d, %d)", new Object[] {
189 subj, pred, obj }));
190 }
191 if (listener != null) {
192 StatementIdIterator iter = repository.getExplicitStatements(subj,
193 pred, obj);
194 while (iter.hasNext()) {
195 listener.statementRemoved(new LazyTStatementImpl(iter.Subj,
196 iter.Pred, iter.Obj, iter.Context, pool, repository));
197 iter.next();
198 }
199 }
200 return repository.removeStatements(subj, pred, obj);
201 }
202
203 public int removeStatements(int subj, int pred, int obj, int context) {
204 if (logger.isTraceEnabled()) {
205 logger.trace(String.format("remove(%d, %d, %d, %d)", new Object[] {
206 subj, pred, obj, context }));
207 }
208 if (listener != null) {
209 StatementIdIterator iter = repository.getExplicitStatements(subj,
210 pred, obj, context);
211 while (iter.hasNext()) {
212 listener.statementRemoved(new LazyTStatementImpl(iter.Subj,
213 iter.Pred, iter.Obj, iter.Context, pool, repository));
214 iter.next();
215 }
216 }
217 return repository.removeStatements(subj, pred, obj, context);
218 }
219
220 public void setInferencer(AbstractInferencer infer) {
221 repository.setInferencer(infer);
222 }
223
224 public void setSystemNodes(int rdf_type, int rdfs_Resource,
225 int rdf_Property, int rdfs_subPropertyOf, int owl_sameAs,
226 int rdfs_subClassOf, int owl_SymmetricProperty,
227 int owl_TransitiveProperty, int owl_equivalentProperty,
228 int owl_equivalentClass) {
229 repository.setSystemNodes(rdf_type, rdfs_Resource, rdf_Property,
230 rdfs_subPropertyOf, owl_sameAs, rdfs_subClassOf,
231 owl_SymmetricProperty, owl_TransitiveProperty,
232 owl_equivalentProperty, owl_equivalentClass);
233 }
234
235 public void shutdown() {
236 logger.debug("Repository is shutting down...");
237 repository.shutdown();
238 }
239
240 public int size() {
241 return repository.size();
242 }
243
244 public boolean isRestoredFromPersistence() {
245 return repository.isRestoredFromPersistence();
246 }
247
248 public boolean isRecoveredSuccessfully() {
249 return repository.isRecoveredSuccessfully();
250 }
251
252 public void removeListener(Notify arg) {
253 repository.removeListener(arg);
254 }
255
256 public void addListener(Notify arg) {
257 repository.addListener(arg);
258 }
259
260 @SuppressWarnings("unchecked")
261 public Iterator getContexts() {
262 return repository.getContexts();
263 }
264 }