hdt 3.2.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/deps/hdt-it/.cproject +42 -0
  2. package/deps/hdt-it/.project +27 -0
  3. package/deps/hdt-it/Camera.cpp +249 -0
  4. package/deps/hdt-it/Camera.h +77 -0
  5. package/deps/hdt-it/Color.cpp +157 -0
  6. package/deps/hdt-it/Color.h +49 -0
  7. package/deps/hdt-it/Info.plist +58 -0
  8. package/deps/hdt-it/LICENSE +280 -0
  9. package/deps/hdt-it/README.md +73 -0
  10. package/deps/hdt-it/StopWatch.cpp +170 -0
  11. package/deps/hdt-it/StopWatch.hpp +61 -0
  12. package/deps/hdt-it/abouthdt.cpp +14 -0
  13. package/deps/hdt-it/abouthdt.hpp +22 -0
  14. package/deps/hdt-it/abouthdt.ui +173 -0
  15. package/deps/hdt-it/colors.hpp +29 -0
  16. package/deps/hdt-it/constants.h +39 -0
  17. package/deps/hdt-it/createdmg.sh +72 -0
  18. package/deps/hdt-it/dictionarysuggestions.cpp +186 -0
  19. package/deps/hdt-it/dictionarysuggestions.hpp +39 -0
  20. package/deps/hdt-it/doc/hdtit.png +0 -0
  21. package/deps/hdt-it/doc/manual.html +88 -0
  22. package/deps/hdt-it/doc/matrix.png +0 -0
  23. package/deps/hdt-it/editreset.png +0 -0
  24. package/deps/hdt-it/hdt-it.pro +135 -0
  25. package/deps/hdt-it/hdt-it_es.qm +0 -0
  26. package/deps/hdt-it/hdt-it_es.ts +906 -0
  27. package/deps/hdt-it/hdtcachedinfo.cpp +155 -0
  28. package/deps/hdt-it/hdtcachedinfo.hpp +38 -0
  29. package/deps/hdt-it/hdtcontroller.cpp +369 -0
  30. package/deps/hdt-it/hdtcontroller.hpp +103 -0
  31. package/deps/hdt-it/hdtico.icns +0 -0
  32. package/deps/hdt-it/hdtico.rc +1 -0
  33. package/deps/hdt-it/hdtit.cpp +400 -0
  34. package/deps/hdt-it/hdtit.hpp +78 -0
  35. package/deps/hdt-it/hdtit.ui +875 -0
  36. package/deps/hdt-it/hdtoperation.cpp +284 -0
  37. package/deps/hdt-it/hdtoperation.hpp +71 -0
  38. package/deps/hdt-it/hdtresources.qrc +7 -0
  39. package/deps/hdt-it/hdtspecform.cpp +180 -0
  40. package/deps/hdt-it/hdtspecform.hpp +38 -0
  41. package/deps/hdt-it/hdtspecform.ui +361 -0
  42. package/deps/hdt-it/hdtsummarygenerator.cpp +109 -0
  43. package/deps/hdt-it/hdtsummarygenerator.hpp +15 -0
  44. package/deps/hdt-it/hdtwinico.ico +0 -0
  45. package/deps/hdt-it/hdtwinico2.ico +0 -0
  46. package/deps/hdt-it/headermodel.cpp +174 -0
  47. package/deps/hdt-it/headermodel.hpp +38 -0
  48. package/deps/hdt-it/loading.gif +0 -0
  49. package/deps/hdt-it/logo-hdt.png +0 -0
  50. package/deps/hdt-it/logo-hdt2.png +0 -0
  51. package/deps/hdt-it/main.cpp +39 -0
  52. package/deps/hdt-it/matrixviewwidget.cpp +501 -0
  53. package/deps/hdt-it/matrixviewwidget.hpp +81 -0
  54. package/deps/hdt-it/myapplication.cpp +45 -0
  55. package/deps/hdt-it/myapplication.hpp +24 -0
  56. package/deps/hdt-it/predicatestatus.cpp +97 -0
  57. package/deps/hdt-it/predicatestatus.hpp +39 -0
  58. package/deps/hdt-it/qclearlineedit.cpp +48 -0
  59. package/deps/hdt-it/qclearlineedit.hpp +30 -0
  60. package/deps/hdt-it/regexmodel.cpp +132 -0
  61. package/deps/hdt-it/regexmodel.hpp +37 -0
  62. package/deps/hdt-it/resultcounter.cpp +47 -0
  63. package/deps/hdt-it/resultcounter.hpp +30 -0
  64. package/deps/hdt-it/searchresultsmodel.cpp +179 -0
  65. package/deps/hdt-it/searchresultsmodel.hpp +39 -0
  66. package/deps/hdt-it/sparqlform.cpp +27 -0
  67. package/deps/hdt-it/sparqlform.hpp +28 -0
  68. package/deps/hdt-it/sparqlform.ui +112 -0
  69. package/deps/hdt-it/sparqlmodel.cpp +155 -0
  70. package/deps/hdt-it/sparqlmodel.hpp +32 -0
  71. package/deps/hdt-it/stringutils.cpp +48 -0
  72. package/deps/hdt-it/stringutils.hpp +18 -0
  73. package/deps/hdt-it/triplecomponentmodel.cpp +146 -0
  74. package/deps/hdt-it/triplecomponentmodel.hpp +33 -0
  75. package/deps/libcds/Doxyfile +307 -0
  76. package/deps/libcds/tutorial/tutorial.pdf +0 -0
  77. package/deps/libhdt/.cproject +304 -0
  78. package/deps/libhdt/Doxyfile +1630 -0
  79. package/package.json +7 -1
  80. package/.eslintrc +0 -178
  81. package/.github/workflows/ci.yml +0 -73
  82. package/.gitmodules +0 -4
  83. package/.idea/codeStyles/Project.xml +0 -38
  84. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  85. package/.idea/hdt.iml +0 -12
  86. package/.idea/inspectionProfiles/Project_Default.xml +0 -7
  87. package/.idea/jsLinters/jshint.xml +0 -16
  88. package/.idea/modules.xml +0 -8
  89. package/.idea/vcs.xml +0 -7
  90. package/.jshintignore +0 -1
  91. package/.jshintrc +0 -10
  92. package/perf/run.js +0 -43
  93. package/replace-in-file.json +0 -5
@@ -0,0 +1,155 @@
1
+ #include "hdtcachedinfo.hpp"
2
+ #include "constants.h"
3
+
4
+ #include "../../hdt-lib/src/triples/BitmapTriples.hpp"
5
+
6
+ #include <fstream>
7
+
8
+ HDTCachedInfo::HDTCachedInfo(hdt::HDT *hdt) : hdt(hdt)
9
+ {
10
+
11
+ }
12
+
13
+ void HDTCachedInfo::generateGeneralInfo(hdt::ProgressListener *listener)
14
+ {
15
+ // Count predicates
16
+ unsigned int nPred = hdt->getDictionary()->getNpredicates();
17
+
18
+ maxPredicateCount = 0;
19
+ predicateCount.clear();
20
+ predicateCount.resize(nPred+1);
21
+
22
+ NOTIFYCOND(listener, "Loading predicates", 0, 100);
23
+
24
+ // TODO: Use predicateCount directly
25
+ if(hdt->isIndexed()) {
26
+ hdt::Triples *t = hdt->getTriples();
27
+ hdt::TripleID triplePredicate;
28
+ for(int p=1;p<=nPred;p++) {
29
+ #if 1
30
+ predicateCount[p] = t->getNumAppearances(p);
31
+ #else
32
+ triplePredicate.setAll(0, p, 0);
33
+ hdt::IteratorTripleID *predIt = t->search(triplePredicate);
34
+
35
+ predicateCount[p] = predIt->estimatedNumResults();
36
+
37
+ maxPredicateCount = max(maxPredicateCount, predicateCount[p]);
38
+
39
+ delete predIt;
40
+ #endif
41
+ }
42
+ }
43
+
44
+ // Calculate Predicate Colors
45
+ predicateColors.clear();
46
+ predicateColors.resize(nPred);
47
+ ColorRamp2 cr;
48
+ for(unsigned int i=0;i<nPred; i++) {
49
+ cr.apply(&predicateColors[i], i, 0, nPred-1);
50
+ }
51
+
52
+ // Go over first 50 results to make sure they are loaded.
53
+ hdt::TripleString pat;
54
+ hdt::IteratorTripleString *it2 = hdt->search(pat);
55
+ for(int i=0;i<50 && it2->hasNext(); i++) {
56
+ it2->next();
57
+ }
58
+ delete it2;
59
+
60
+ // Iterate over elements of the array to make sure their dictionary entries are loaded.
61
+ #if 0
62
+ hdt::TripleString out;
63
+ for(size_t i=0;i<triples.size();i++) {
64
+ hdt->getDictionary()->tripleIDtoTripleString(triples[i], out);
65
+ }
66
+ #endif
67
+ }
68
+
69
+ void HDTCachedInfo::generateMatrix(hdt::ProgressListener *listener)
70
+ {
71
+ // Generate matrix
72
+ hdt::Triples *t = hdt->getTriples();
73
+ size_t increment = t->getNumberOfElements()/RENDER_NUM_POINTS;
74
+ increment = increment < 1 ? 1 : increment;
75
+
76
+
77
+ // Using InterleavedIterator to jump directly to the triple and get the related information.
78
+ hdt::BTInterleavedIterator it(dynamic_cast<hdt::BitmapTriples *>(t), increment);
79
+
80
+ size_t count=0;
81
+ while(it.hasNext()) {
82
+ hdt::TripleID *tid = it.next();
83
+ triples.push_back(*tid);
84
+ //cout << *tid << endl;
85
+
86
+ NOTIFYCOND(listener, "Generating Matrix", count, RENDER_NUM_POINTS);
87
+ count++;
88
+ //if((count%100)==0)
89
+ //cout << "Iteration: " << count << endl;
90
+ }
91
+
92
+ // Using normal iterator that goes through all entries.
93
+ // hdt::IteratorTripleID *it = t->searchAll();
94
+ // size_t count=0;
95
+ // for(size_t i=0;i<t->getNumberOfElements();i+=increment) {
96
+ // it->goTo(i);
97
+ // hdt::TripleID *tid = it->next();
98
+ // triples.push_back(*tid);
99
+ // NOTIFYCOND(listener, "Generating Matrix", i, t->getNumberOfElements());
100
+ // count++;
101
+ // if((count%100)==0)
102
+ // cout << "Iteration: " << count << endl;
103
+ // }
104
+ // delete it;
105
+
106
+ }
107
+
108
+ Color * HDTCachedInfo::getPredicateColor(size_t npred)
109
+ {
110
+ return &predicateColors[npred];
111
+ }
112
+
113
+ size_t HDTCachedInfo::getPredicateUsages(size_t predicate)
114
+ {
115
+ return predicateCount[predicate];
116
+ }
117
+
118
+ size_t HDTCachedInfo::getMaxPredicateCount()
119
+ {
120
+ return maxPredicateCount;
121
+ }
122
+
123
+ vector<hdt::TripleID> &HDTCachedInfo::getTriples()
124
+ {
125
+ return triples;
126
+ }
127
+
128
+ void HDTCachedInfo::save(QString &fileName, hdt::ProgressListener *listener)
129
+ {
130
+ // Only save info of files bigger than 2M triples. Otherwise is fast to create from scratch.
131
+ if(hdt->getTriples()->getNumberOfElements()>2000000) {
132
+ std::ofstream out(fileName.toLatin1(), ios::binary);
133
+ uint64_t numTriples = triples.size();
134
+ out.write((char *)&numTriples, sizeof(uint64_t));
135
+ out.write((char *)&triples[0], sizeof(hdt::TripleID)*numTriples);
136
+ out.close();
137
+ }
138
+ }
139
+
140
+ void HDTCachedInfo::load(QString &fileName, hdt::ProgressListener *listener)
141
+ {
142
+ generateGeneralInfo(listener);
143
+
144
+ std::ifstream in(fileName.toLatin1(), ios::binary);
145
+ if(in.good()) {
146
+ uint64_t numTriples;
147
+ in.read((char *)&numTriples, sizeof(uint64_t));
148
+ triples.resize(numTriples);
149
+ in.read((char *)&triples[0], sizeof(hdt::TripleID)*numTriples);
150
+ in.close();
151
+ } else {
152
+ generateMatrix(listener);
153
+ save(fileName, listener);
154
+ }
155
+ }
@@ -0,0 +1,38 @@
1
+ #ifndef HDTCACHEDINFO_HPP
2
+ #define HDTCACHEDINFO_HPP
3
+
4
+ #include <QString>
5
+ #include <HDT.hpp>
6
+ #include <HDTListener.hpp>
7
+ #include "StopWatch.hpp"
8
+
9
+ #include "Color.h"
10
+
11
+
12
+ class HDTCachedInfo
13
+ {
14
+ private:
15
+
16
+ hdt::HDT *hdt;
17
+ vector<hdt::TripleID> triples;
18
+
19
+ vector<Color> predicateColors;
20
+ size_t maxPredicateCount;
21
+ vector<size_t> predicateCount;
22
+
23
+ public:
24
+ HDTCachedInfo(hdt::HDT *hdt);
25
+
26
+ Color *getPredicateColor(size_t npred);
27
+ size_t getPredicateUsages(size_t predicate);
28
+ size_t getMaxPredicateCount();
29
+ vector<hdt::TripleID> &getTriples();
30
+
31
+ void generateGeneralInfo(hdt::ProgressListener *listener=NULL);
32
+ void generateMatrix(hdt::ProgressListener *listener=NULL);
33
+
34
+ void save(QString &fileName, hdt::ProgressListener *listener=NULL);
35
+ void load(QString &fileName, hdt::ProgressListener *listener=NULL);
36
+ };
37
+
38
+ #endif // HDTCACHEDINFO_HPP
@@ -0,0 +1,369 @@
1
+ #include <iostream>
2
+ #include <fstream>
3
+
4
+ #include <inttypes.h>
5
+
6
+ #include <HDTManager.hpp>
7
+ #include <HDTVocabulary.hpp>
8
+ #include <SingleTriple.hpp>
9
+
10
+ #include <QtGui>
11
+
12
+ #include "hdtcontroller.hpp"
13
+ #include "hdtoperation.hpp"
14
+ #include "hdtcachedinfo.hpp"
15
+ #include "stringutils.hpp"
16
+ #include "resultcounter.hpp"
17
+
18
+ #define SHOW_DIALOGS
19
+
20
+ HDTController::HDTController(QObject *parent) :
21
+ QObject(parent),
22
+ hdt(NULL),
23
+ searchPatternID(0,0,0),
24
+ selectedTriple(0,0,0),
25
+ numResults(0),
26
+ iteratorResults(NULL)
27
+ {
28
+ subjectModel = new TripleComponentModel(this, hdt::SUBJECT);
29
+ predicateModel = new TripleComponentModel(this, hdt::PREDICATE);
30
+ objectModel = new TripleComponentModel(this, hdt::OBJECT);
31
+ searchResultsModel = new SearchResultsModel(this);
32
+ headerModel = new HeaderModel(this);
33
+ predicateStatus = new PredicateStatus(this);
34
+ regexModel = new RegexModel(this);
35
+ }
36
+
37
+ HDTController::~HDTController() {
38
+ closeHDT();
39
+ delete subjectModel;
40
+ delete predicateModel;
41
+ delete objectModel;
42
+ delete searchResultsModel;
43
+ delete headerModel;
44
+ delete predicateStatus;
45
+ delete regexModel;
46
+ }
47
+
48
+ void HDTController::updateOnHDTChanged()
49
+ {
50
+ this->numResults = hdt->getTriples()->getNumberOfElements();
51
+
52
+ subjectModel->notifyLayoutChanged();
53
+ predicateModel->notifyLayoutChanged();
54
+ predicateStatus->refreshAll();
55
+ objectModel->notifyLayoutChanged();
56
+ searchResultsModel->updateResultListChanged();
57
+ headerModel->updateDatasetChanged();
58
+ regexModel->updateDatasetChanged();
59
+
60
+ emit datasetChanged();
61
+ }
62
+
63
+ void HDTController::importRDFFile(QString file, const string &baseUri, hdt::RDFNotation notation, hdt::HDTSpecification &spec)
64
+ {
65
+ closeHDT();
66
+
67
+ HDTOperation *hdtop = new HDTOperation();
68
+ hdtop->loadFromRDF(spec, file, notation, baseUri);
69
+ int result = hdtop->exec();
70
+ if(result==0) {
71
+ this->hdt = hdtop->getHDT();
72
+ this->hdtCachedInfo = hdtop->getHDTInfo();
73
+ this->fileName = file;
74
+
75
+ updateOnHDTChanged();
76
+ }
77
+ delete hdtop;
78
+ }
79
+
80
+ void HDTController::openHDTFile(QString file)
81
+ {
82
+ closeHDT();
83
+
84
+ HDTOperation *hdtop = new HDTOperation(file);
85
+ hdtop->loadFromHDT(file);
86
+ int result = hdtop->exec();
87
+
88
+ if(result==0) {
89
+ this->hdt = hdtop->getHDT();
90
+ this->hdtCachedInfo = hdtop->getHDTInfo();
91
+ this->fileName = file;
92
+
93
+ updateOnHDTChanged();
94
+ }
95
+
96
+ delete hdtop;
97
+ }
98
+
99
+ void HDTController::saveHDTFile(QString file)
100
+ {
101
+ if(hdt!=NULL) {
102
+ #ifdef SHOW_DIALOGS
103
+ HDTOperation *hdtop = new HDTOperation(hdt);
104
+ hdtop->saveToHDT(file);
105
+ hdtop->exec();
106
+ delete hdtop;
107
+ #else
108
+ hdt->saveToHDT(file.toAscii());
109
+ #endif
110
+ }
111
+ }
112
+
113
+ void HDTController::exportRDFFile(QString file, hdt::RDFNotation notation)
114
+ {
115
+ if(hdt!=NULL) {
116
+ #ifdef SHOW_DIALOGS
117
+ HDTOperation *hdtop = new HDTOperation(hdt);
118
+ hdtop->saveToRDF(file, notation);
119
+ hdtop->exec();
120
+ delete hdtop;
121
+ #else
122
+ hdt::RDFSerializer *serializer = hdt::RDFSerializer::getSerializer(file.toAscii(), notation);
123
+ hdt->saveToRDF(*serializer);
124
+ #endif
125
+ }
126
+ }
127
+
128
+ void HDTController::exportResultsRDFFile(QString file, hdt::RDFNotation notation)
129
+ {
130
+ if(hdt!=NULL) {
131
+ #ifdef SHOW_DIALOGS
132
+ HDTOperation *hdtop = new HDTOperation(hdt);
133
+ hdt::IteratorTripleString *it = hdt->search(searchPatternString);
134
+ hdtop->exportResults(file, it, getNumResults(), notation);
135
+ hdtop->exec();
136
+ delete hdtop;
137
+ #else
138
+ hdt::RDFSerializer *serializer = hdt::RDFSerializer::getSerializer(file.toAscii(), notation);
139
+ hdt::IteratorTripleString *it = hdt->search(searchPatternString);
140
+ serializer->serialize(iterator, getNumResults());
141
+ delete serializer;
142
+ delete iterator;
143
+ break;
144
+ #endif
145
+ }
146
+ }
147
+
148
+
149
+ void HDTController::closeHDT()
150
+ {
151
+ if(hdt!=NULL) {
152
+ delete hdt;
153
+ hdt = NULL;
154
+
155
+ numResults=0;
156
+ subjectModel->notifyLayoutChanged();
157
+ predicateModel->notifyLayoutChanged();
158
+ predicateStatus->refreshAll();
159
+ objectModel->notifyLayoutChanged();
160
+ searchResultsModel->updateResultListChanged();
161
+ headerModel->updateDatasetChanged();
162
+ regexModel->updateDatasetChanged();
163
+
164
+ emit datasetChanged();
165
+ }
166
+ }
167
+
168
+
169
+ TripleComponentModel * HDTController::getSubjectModel()
170
+ {
171
+ return subjectModel;
172
+ }
173
+
174
+ TripleComponentModel * HDTController::getPredicateModel()
175
+ {
176
+ return predicateModel;
177
+ }
178
+ TripleComponentModel * HDTController::getObjectModel()
179
+ {
180
+ return objectModel;
181
+ }
182
+
183
+ SearchResultsModel * HDTController::getSearchResultsModel()
184
+ {
185
+ return searchResultsModel;
186
+ }
187
+
188
+ HeaderModel * HDTController::getHeaderModel()
189
+ {
190
+ return headerModel;
191
+ }
192
+
193
+ RegexModel *HDTController::getRegexModel()
194
+ {
195
+ return regexModel;
196
+ }
197
+
198
+ PredicateStatus *HDTController::getPredicateStatus()
199
+ {
200
+ return predicateStatus;
201
+ }
202
+
203
+ HDTCachedInfo *HDTController::getHDTCachedInfo()
204
+ {
205
+ return hdtCachedInfo;
206
+ }
207
+
208
+ hdt::HDT *HDTController::getHDT()
209
+ {
210
+ return hdt;
211
+ }
212
+
213
+ bool HDTController::hasHDT()
214
+ {
215
+ return hdt!=NULL;
216
+ }
217
+
218
+ void HDTController::setSearchPattern(hdt::TripleString &pattern)
219
+ {
220
+ if(hdt==NULL) {
221
+ return;
222
+ }
223
+
224
+ if(searchPatternString != pattern) {
225
+ try {
226
+ this->searchPatternString = pattern;
227
+
228
+ hdt->getDictionary()->tripleStringtoTripleID(pattern, searchPatternID);
229
+
230
+ // Reset iterator
231
+ if(iteratorResults!=NULL) {
232
+ delete iteratorResults;
233
+ iteratorResults=NULL;
234
+ }
235
+ numResults=0;
236
+
237
+ // Check not found
238
+ if( (searchPatternID.getSubject()==0 && !pattern.getSubject().empty()) ||
239
+ (searchPatternID.getPredicate()==0 && !pattern.getPredicate().empty()) ||
240
+ (searchPatternID.getObject()==0 && !pattern.getObject().empty()) ) {
241
+
242
+ } else {
243
+ iteratorResults = hdt->getTriples()->search(searchPatternID);
244
+ }
245
+ updateNumResults();
246
+
247
+ predicateStatus->selectPredicate(searchPatternID.getPredicate());
248
+ } catch (char *exception){
249
+ numResults = 0;
250
+ iteratorResults = NULL;
251
+ } catch (const char *exception){
252
+ numResults = 0;
253
+ iteratorResults = NULL;
254
+ }
255
+ searchResultsModel->updateResultListChanged();
256
+
257
+ emit searchPatternChanged();
258
+ }
259
+ }
260
+
261
+ hdt::TripleID & HDTController::getSearchPatternID()
262
+ {
263
+ return searchPatternID;
264
+ }
265
+
266
+ hdt::TripleString & HDTController::getSearchPatternString()
267
+ {
268
+ return searchPatternString;
269
+ }
270
+
271
+ hdt::TripleID HDTController::getSelectedTriple()
272
+ {
273
+ return selectedTriple;
274
+ }
275
+
276
+ void HDTController::setSelectedTriple(hdt::TripleID &selected)
277
+ {
278
+ selectedTriple = selected;
279
+ }
280
+
281
+ void HDTController::clearSelectedTriple()
282
+ {
283
+ selectedTriple.clear();
284
+ }
285
+
286
+ quint64 inline DIST(quint64 x1, quint64 x2, quint64 y1, quint64 y2) {
287
+ return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
288
+ }
289
+
290
+ void HDTController::selectNearestTriple(int subject, int predicate, int object)
291
+ {
292
+ vector<hdt::TripleID> &triples = getTriples();
293
+ if(triples.size()==0) {
294
+ this->clearSelectedTriple();
295
+ return;
296
+ }
297
+
298
+ hdt::TripleID *best = &triples[0];
299
+ unsigned int bestpos = 0;
300
+ quint64 bestdist = DIST(triples[0].getSubject(), subject, triples[0].getObject(), object);
301
+
302
+ for (unsigned int i = 0; i < triples.size(); i ++) {
303
+ if (triples[i].match(searchPatternID) && predicateStatus->isPredicateActive(triples[i].getPredicate()-1)) {
304
+ quint64 dist = DIST(triples[i].getSubject(), subject, triples[i].getObject(), object);
305
+
306
+ if (dist < bestdist) {
307
+ best = &triples[i];
308
+ bestdist = dist;
309
+ bestpos = i;
310
+ //printf("1New %u, %u, %u, Dist: %u Pos: %u\n", best->getSubject(), best->getPredicate(), best->getObject(), bestdist, bestpos);
311
+ }
312
+ }
313
+ }
314
+ //printf("Found: %u, %u, %u, Dist: %llu\n", best->getSubject(), best->getPredicate(), best->getObject(), bestdist);
315
+
316
+ this->setSelectedTriple( *best );
317
+ }
318
+
319
+ vector<hdt::TripleID> & HDTController::getTriples()
320
+ {
321
+ return hdtCachedInfo->getTriples();
322
+ }
323
+
324
+ size_t HDTController::getNumResults()
325
+ {
326
+ return numResults;
327
+ }
328
+
329
+ void HDTController::numResultsValueChanged(int numResults)
330
+ {
331
+ this->numResults = numResults;
332
+ searchResultsModel->updateNumResultsChanged();
333
+ emit numResultsChanged(numResults);
334
+ }
335
+
336
+ void HDTController:: numResultCountFinished()
337
+ {
338
+
339
+ }
340
+
341
+ void HDTController::updateNumResults()
342
+ {
343
+ if(iteratorResults==NULL) {
344
+ return;
345
+ }
346
+
347
+ if(iteratorResults->numResultEstimation()==hdt::EXACT) {
348
+ // Provided, use.
349
+ numResults = iteratorResults->estimatedNumResults();
350
+ } else {
351
+ // Not provided, count.
352
+ while(iteratorResults->hasNext()) {
353
+ iteratorResults->next();
354
+ numResults++;
355
+ }
356
+ }
357
+
358
+ searchResultsModel->updateNumResultsChanged();
359
+ emit numResultsChanged(numResults);
360
+ }
361
+
362
+ QString HDTController::getFileName()
363
+ {
364
+ return fileName;
365
+ }
366
+
367
+
368
+
369
+
@@ -0,0 +1,103 @@
1
+ #ifndef HDTMANAGER_HPP
2
+ #define HDTMANAGER_HPP
3
+
4
+ #include <HDT.hpp>
5
+ #include <QObject>
6
+
7
+ #include "hdtcachedinfo.hpp"
8
+ #include "triplecomponentmodel.hpp"
9
+ #include "searchresultsmodel.hpp"
10
+ #include "headermodel.hpp"
11
+ #include "predicatestatus.hpp"
12
+ #include "regexmodel.hpp"
13
+
14
+ class TripleComponentModel;
15
+ class SearchResultsModel;
16
+ class PredicateStatus;
17
+ class HeaderModel;
18
+ class RegexModel;
19
+
20
+ class HDTController : public QObject
21
+ {
22
+ Q_OBJECT
23
+
24
+ public:
25
+ explicit HDTController(QObject *parent = 0);
26
+ ~HDTController();
27
+
28
+ private:
29
+ // HDT
30
+ hdt::HDT *hdt;
31
+ QString fileName;
32
+
33
+ // Models / Info
34
+ TripleComponentModel *subjectModel;
35
+ TripleComponentModel *predicateModel;
36
+ TripleComponentModel *objectModel;
37
+ SearchResultsModel *searchResultsModel;
38
+ HeaderModel *headerModel;
39
+ PredicateStatus *predicateStatus;
40
+ HDTCachedInfo *hdtCachedInfo;
41
+ RegexModel *regexModel;
42
+
43
+ // Search pattern / results
44
+ hdt::TripleID selectedTriple;
45
+ hdt::TripleID searchPatternID;
46
+ hdt::TripleString searchPatternString;
47
+ hdt::IteratorTripleID *iteratorResults;
48
+ size_t numResults;
49
+
50
+ public:
51
+ hdt::HDT *getHDT();
52
+ bool hasHDT();
53
+ void openHDTFile(QString file);
54
+ void saveHDTFile(QString file);
55
+ void importRDFFile(QString file, const string &baseUri, hdt::RDFNotation notation, hdt::HDTSpecification &spec);
56
+ void exportRDFFile(QString file, hdt::RDFNotation notation);
57
+ void exportResultsRDFFile(QString file, hdt::RDFNotation notation);
58
+ void closeHDT();
59
+
60
+ TripleComponentModel *getSubjectModel();
61
+ TripleComponentModel *getPredicateModel();
62
+ TripleComponentModel *getObjectModel();
63
+ RegexModel *getRegexModel();
64
+ SearchResultsModel *getSearchResultsModel();
65
+ HeaderModel *getHeaderModel();
66
+ PredicateStatus *getPredicateStatus();
67
+ HDTCachedInfo *getHDTCachedInfo();
68
+
69
+ void selectNearestTriple(int subject, int predicate, int object);
70
+ void setSelectedTriple(hdt::TripleID &selected);
71
+ hdt::TripleID getSelectedTriple();
72
+ void clearSelectedTriple();
73
+
74
+ hdt::TripleID &getSearchPatternID();
75
+ hdt::TripleString &getSearchPatternString();
76
+ void setSearchPattern(hdt::TripleString &pattern);
77
+
78
+ vector<hdt::TripleID> &getTriples();
79
+
80
+ size_t getNumResults();
81
+
82
+ QString getFileName();
83
+
84
+ signals:
85
+ void datasetChanged();
86
+ void searchPatternChanged();
87
+ void numResultsChanged(int numResults);
88
+
89
+ private slots:
90
+ void updateOnHDTChanged();
91
+ void updateNumResults();
92
+ void numResultsValueChanged(int numResults);
93
+ void numResultCountFinished();
94
+
95
+ public slots:
96
+
97
+ };
98
+
99
+
100
+ #endif // HDTMANAGER_HPP
101
+
102
+
103
+
Binary file
@@ -0,0 +1 @@
1
+ IDI_ICON1 ICON DISCARDABLE "hdtwinico2.ico"