aboutsummaryrefslogtreecommitdiff
path: root/src/uk/ac/ox/cs/pagoda/query/GapByStore4ID.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/query/GapByStore4ID.java')
-rw-r--r--src/uk/ac/ox/cs/pagoda/query/GapByStore4ID.java105
1 files changed, 53 insertions, 52 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/query/GapByStore4ID.java b/src/uk/ac/ox/cs/pagoda/query/GapByStore4ID.java
index 02db18d..84929ad 100644
--- a/src/uk/ac/ox/cs/pagoda/query/GapByStore4ID.java
+++ b/src/uk/ac/ox/cs/pagoda/query/GapByStore4ID.java
@@ -1,106 +1,104 @@
1package uk.ac.ox.cs.pagoda.query; 1package uk.ac.ox.cs.pagoda.query;
2 2
3import uk.ac.ox.cs.JRDFox.JRDFStoreException; 3import java.util.HashMap;
4import uk.ac.ox.cs.JRDFox.store.DataStore; 4import java.util.LinkedList;
5import uk.ac.ox.cs.JRDFox.store.TupleIterator; 5import java.util.Map;
6
6import uk.ac.ox.cs.pagoda.MyPrefixes; 7import uk.ac.ox.cs.pagoda.MyPrefixes;
8//import uk.ac.ox.cs.pagoda.multistage.AnswerTupleID;
7import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine; 9import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine;
8import uk.ac.ox.cs.pagoda.reasoner.light.RDFoxTripleManager; 10import uk.ac.ox.cs.pagoda.reasoner.light.RDFoxTripleManager;
9import uk.ac.ox.cs.pagoda.util.Namespace; 11import uk.ac.ox.cs.pagoda.util.Namespace;
10import uk.ac.ox.cs.pagoda.util.Timer; 12import uk.ac.ox.cs.pagoda.util.Timer;
11import uk.ac.ox.cs.pagoda.util.Utility; 13import uk.ac.ox.cs.pagoda.util.Utility;
12 14import uk.ac.ox.cs.JRDFox.JRDFStoreException;
13import java.util.HashMap; 15import uk.ac.ox.cs.JRDFox.store.DataStore;
14import java.util.LinkedList; 16import uk.ac.ox.cs.JRDFox.store.TupleIterator;
15import java.util.Map;
16
17//import uk.ac.ox.cs.pagoda.multistage.AnswerTupleID;
18 17
19//public class GapByStore4ID extends GapTupleIterator<AnswerTupleID> { 18//public class GapByStore4ID extends GapTupleIterator<AnswerTupleID> {
20public class GapByStore4ID extends GapTupleIterator<int[]> { 19public class GapByStore4ID extends GapTupleIterator<int[]> {
21 20
22 protected MyPrefixes prefixes = MyPrefixes.PAGOdAPrefixes; 21 protected MyPrefixes prefixes = MyPrefixes.PAGOdAPrefixes;
23 protected TupleIterator iterator = null; 22 protected TupleIterator iterator = null;
24 23
25// AnswerTupleID tuple; 24// AnswerTupleID tuple;
26protected int[] tuple; 25 protected int[] tuple;
27 protected BasicQueryEngine m_engine; 26 protected BasicQueryEngine m_engine;
28 protected DataStore m_store; 27 protected DataStore m_store;
29 protected RDFoxTripleManager tripleManager; 28 protected RDFoxTripleManager tripleManager;
30 protected long multi;
31 Map<Integer, Integer> original2gap = new HashMap<Integer, Integer>();
32 LinkedList<String> predicatesWithGap = new LinkedList<String>();
33 29
34 public GapByStore4ID(BasicQueryEngine engine) { 30 public GapByStore4ID(BasicQueryEngine engine) {
35 m_engine = engine; 31 m_engine = engine;
36 m_store = engine.getDataStore(); 32 m_store = engine.getDataStore();
37 tripleManager = new RDFoxTripleManager(m_store, false); 33 tripleManager = new RDFoxTripleManager(m_store, false);
38 } 34 }
39 35
36 protected long multi;
37
40 @Override 38 @Override
41 public void compile(String program) throws JRDFStoreException { 39 public void compile(String program) throws JRDFStoreException {
42 clear(); 40 clear();
43 41
44 boolean incrementally = true; 42 boolean incrementally = true;
45 Timer t = new Timer(); 43 Timer t = new Timer();
46 long oldTripleCount = m_store.getTriplesCount(); 44 long oldTripleCount = m_store.getTriplesCount();
47 45
48 if (program != null) { 46 if (program != null) {
49// m_store.addRules(new String[] {program}); 47// m_store.addRules(new String[] {program});
50 m_store.importRules(program); 48 m_store.importRules(program);
51 incrementally = false; 49 incrementally = false;
52 } 50 }
53 51
54 m_store.applyReasoning(incrementally); 52 m_store.applyReasoning(incrementally);
55 53
56 long tripleCount = m_store.getTriplesCount(); 54 long tripleCount = m_store.getTriplesCount();
57 55
58 Utility.logDebug("current store after materialising upper related rules: " + tripleCount + " (" + (tripleCount - oldTripleCount) + " new)", 56 Utility.logDebug("current store after materialising upper related rules: " + tripleCount + " (" + (tripleCount - oldTripleCount) + " new)",
59 "current store finished the materialisation of upper related rules in " + t.duration() + " seconds."); 57 "current store finished the materialisation of upper related rules in " + t.duration() + " seconds.");
60 58
61 m_engine.setExpandEquality(false); 59 m_engine.setExpandEquality(false);
62 iterator = m_engine.internal_evaluateAgainstIDBs("select ?x ?y ?z where { ?x ?y ?z . }"); 60 iterator = m_engine.internal_evaluateAgainstIDBs("select ?x ?y ?z where { ?x ?y ?z . }");
63 m_engine.setExpandEquality(true); 61 m_engine.setExpandEquality(true);
64 62
65 multi = iterator.open(); 63 multi = iterator.open();
66 Utility.logDebug("gap query evaluted ..."); 64 Utility.logDebug("gap query evaluted ...");
67 } 65 }
68 66
69 @Override 67 @Override
70 public boolean hasNext() { 68 public boolean hasNext() {
71 if(iterator == null) return false; 69 if (iterator == null) return false;
72 try { 70 try {
73// tuple = new AnswerTupleID(3); 71// tuple = new AnswerTupleID(3);
74 tuple = new int[3]; 72 tuple = new int[3];
75 Integer predicate; 73 Integer predicate;
76 for (; multi != 0; multi = iterator.getNext()) { 74 for (; multi != 0; multi = iterator.getNext()) {
77 for (int i = 0; i < 3; ++i) 75 for (int i = 0; i < 3; ++i)
78// tuple.setTerm(i, (int) iterator.getResourceID(i)); 76// tuple.setTerm(i, (int) iterator.getResourceID(i));
79 tuple[i] = iterator.getResourceID(i); 77 tuple[i] = (int) iterator.getResourceID(i);
80 78
81 if (isRDF_TYPE()) { 79 if (isRDF_TYPE()) {
82// predicate = getGapPredicateID(tuple.getTerm(2)); 80// predicate = getGapPredicateID(tuple.getTerm(2));
83 predicate = getGapPredicateID(tuple[2]); 81 predicate = getGapPredicateID(tuple[2]);
84 if(predicate == null) continue; 82 if (predicate == null) continue;
85// tuple.setTerm(2, predicate); 83// tuple.setTerm(2, predicate);
86 tuple[2] = predicate; 84 tuple[2] = predicate;
87 } 85 }
88 else { 86 else {
89// predicate = getGapPredicateID(tuple.getTerm(1)); 87// predicate = getGapPredicateID(tuple.getTerm(1));
90 predicate = getGapPredicateID(tuple[1]); 88 predicate = getGapPredicateID(tuple[1]);
91 if(predicate == null) continue; 89 if (predicate == null) continue;
92// tuple.setTerm(1, predicate); 90// tuple.setTerm(1, predicate);
93 tuple[1] = predicate; 91 tuple[1] = predicate;
94 } 92 }
95 return true; 93 return true;
96 } 94 }
97 } catch (JRDFStoreException e) { 95 } catch (JRDFStoreException e) {
98 e.printStackTrace(); 96 e.printStackTrace();
99 return false; 97 return false;
100 } 98 }
101 return false; 99 return false;
102 } 100 }
103 101
104 @Override 102 @Override
105// public AnswerTupleID next() { 103// public AnswerTupleID next() {
106 public int[] next() { 104 public int[] next() {
@@ -108,15 +106,18 @@ protected int[] tuple;
108 multi = iterator.getNext(); 106 multi = iterator.getNext();
109 } catch (JRDFStoreException e) { 107 } catch (JRDFStoreException e) {
110 e.printStackTrace(); 108 e.printStackTrace();
111 } 109 }
112 110
113 return tuple; 111 return tuple;
114 } 112 }
115 113
114 Map<Integer, Integer> original2gap = new HashMap<Integer, Integer>();
115 LinkedList<String> predicatesWithGap = new LinkedList<String>();
116
116 public LinkedList<String> getPredicatesWithGap() { 117 public LinkedList<String> getPredicatesWithGap() {
117 return predicatesWithGap; 118 return predicatesWithGap;
118 } 119 }
119 120
120 protected Integer getGapPredicateID(int originalID) { 121 protected Integer getGapPredicateID(int originalID) {
121 Integer gapID; 122 Integer gapID;
122 if ((gapID = original2gap.get(originalID)) != null) 123 if ((gapID = original2gap.get(originalID)) != null)
@@ -137,9 +138,9 @@ protected int[] tuple;
137 } 138 }
138 139
139 protected boolean isAuxPredicate(String originalPredicate) { 140 protected boolean isAuxPredicate(String originalPredicate) {
140 if(originalPredicate.equals(Namespace.EQUALITY_QUOTED)) return false; 141 if (originalPredicate.equals(Namespace.EQUALITY_QUOTED)) return false;
141 return originalPredicate.contains("_AUX") || 142 return originalPredicate.contains("_AUX") ||
142 originalPredicate.startsWith("<" + Namespace.OWL_NS) || 143 originalPredicate.startsWith("<" + Namespace.OWL_NS) ||
143 originalPredicate.startsWith("<" + Namespace.PAGODA_ORIGINAL); 144 originalPredicate.startsWith("<" + Namespace.PAGODA_ORIGINAL);
144 } 145 }
145 146