Chris@28
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
Chris@28
|
2
|
Chris@42
|
3 #include <dataquay/Uri.h>
|
Chris@42
|
4
|
Chris@28
|
5 #include "TypingSelectWidget.h"
|
Chris@30
|
6 #include "TypeRegistrar.h"
|
Chris@30
|
7 #include "Objects.h"
|
Chris@30
|
8 #include "Matcher.h"
|
Chris@30
|
9
|
Chris@30
|
10 #include <dataquay/BasicStore.h>
|
Chris@30
|
11 #include <dataquay/RDFException.h>
|
Chris@30
|
12 #include <dataquay/objectmapper/ObjectLoader.h>
|
Chris@30
|
13 #include <dataquay/objectmapper/TypeMapping.h>
|
Chris@28
|
14
|
Chris@28
|
15 #include <QApplication>
|
Chris@28
|
16
|
Chris@30
|
17 #include <iostream>
|
Chris@30
|
18
|
Chris@28
|
19 using namespace ClassicalData;
|
Chris@30
|
20 using namespace Dataquay;
|
Chris@30
|
21 using namespace std;
|
Chris@30
|
22
|
Chris@53
|
23 /*
|
Chris@30
|
24 ostream &operator<<(ostream &target, const QString &str)
|
Chris@30
|
25 {
|
Chris@30
|
26 return target << str.toLocal8Bit().data();
|
Chris@30
|
27 }
|
Chris@30
|
28
|
Chris@30
|
29 ostream &operator<<(ostream &target, const QUrl &u)
|
Chris@30
|
30 {
|
Chris@30
|
31 return target << "<" << u.toString() << ">";
|
Chris@30
|
32 }
|
Chris@53
|
33 */
|
Chris@30
|
34
|
Chris@30
|
35 void
|
Chris@30
|
36 usage(const char *name)
|
Chris@30
|
37 {
|
Chris@30
|
38 int s = 0;
|
Chris@30
|
39 for (int i = 0; name[i]; ++i) if (name[i] == '/') s = i + 1;
|
Chris@30
|
40 name = name + s;
|
Chris@30
|
41 cerr << "Usage:" << endl;
|
Chris@30
|
42 cerr << " " << name << " <input-rdf-file>" << endl;
|
Chris@30
|
43 exit(2);
|
Chris@30
|
44 }
|
Chris@30
|
45
|
Chris@30
|
46 bool
|
Chris@30
|
47 load(BasicStore *store, QString fileName)
|
Chris@30
|
48 {
|
Chris@30
|
49 QUrl url = QUrl::fromLocalFile(fileName);
|
Chris@30
|
50
|
Chris@30
|
51 cerr << "Importing from URL " << url << " ...";
|
Chris@30
|
52 try {
|
Chris@30
|
53 store->import(url, BasicStore::ImportPermitDuplicates);
|
Chris@30
|
54 } catch (RDFException e) {
|
Chris@30
|
55 cerr << " retrying with explicit ntriples type...";
|
Chris@30
|
56 try {
|
Chris@30
|
57 store->import(url, BasicStore::ImportPermitDuplicates, "ntriples");
|
Chris@30
|
58 } catch (RDFException e) {
|
Chris@30
|
59 cerr << "failed" << endl;
|
Chris@30
|
60 cerr << "Import failed: " << e.what() << endl;
|
Chris@30
|
61 return false;
|
Chris@30
|
62 }
|
Chris@30
|
63 }
|
Chris@30
|
64
|
Chris@30
|
65 cerr << " done" << endl;
|
Chris@30
|
66 return true;
|
Chris@30
|
67 }
|
Chris@28
|
68
|
Chris@28
|
69 int
|
Chris@28
|
70 main(int argc, char **argv)
|
Chris@28
|
71 {
|
Chris@28
|
72 QApplication app(argc, argv);
|
Chris@28
|
73
|
Chris@30
|
74 if (argc != 2) usage(argv[0]);
|
Chris@30
|
75 QString inFileName = argv[1];
|
Chris@30
|
76
|
Chris@30
|
77 BasicStore *store = new BasicStore();
|
Chris@30
|
78 store->setBaseUri(Uri("http://dbtune.org/classical/resource/"));
|
Chris@30
|
79 ObjectLoader *loader = new ObjectLoader(store);
|
Chris@30
|
80
|
Chris@30
|
81 TypeMapping tm;
|
Chris@30
|
82
|
Chris@30
|
83 TypeRegistrar::registerTypes();
|
Chris@30
|
84 TypeRegistrar::addMappings(store, &tm);
|
Chris@30
|
85
|
Chris@30
|
86 loader->setTypeMapping(tm);
|
Chris@30
|
87
|
Chris@30
|
88 if (!load(store, inFileName)) {
|
Chris@31
|
89 cerr << "Failed to load data source" << endl;
|
Chris@31
|
90 return 1;
|
Chris@30
|
91 }
|
Chris@30
|
92
|
Chris@30
|
93 cerr << "Imported RDF data, mapping to objects...";
|
Chris@31
|
94 QObjectList objects = loader->loadAll();
|
Chris@30
|
95 cerr << " done" << endl;
|
Chris@30
|
96
|
Chris@30
|
97 delete loader;
|
Chris@30
|
98
|
Chris@31
|
99 QList<Composer *> composers;
|
Chris@31
|
100 foreach (QObject *o, objects) {
|
Chris@31
|
101 Composer *c = qobject_cast<Composer *>(o);
|
Chris@31
|
102 if (c) composers.push_back(c);
|
Chris@31
|
103 }
|
Chris@30
|
104 ComposerTypingThoroughMatcher matcher(composers);
|
Chris@30
|
105
|
Chris@28
|
106 TypingSelectWidget *w = new TypingSelectWidget();
|
Chris@30
|
107 w->addMatcher(&matcher);
|
Chris@28
|
108
|
Chris@28
|
109 w->show();
|
Chris@28
|
110
|
Chris@28
|
111 app.exec();
|
Chris@28
|
112 }
|
Chris@28
|
113
|