Chris@7
|
1
|
Chris@7
|
2 #include "TypeRegistrar.h"
|
Chris@7
|
3
|
Chris@7
|
4 #include "Objects.h"
|
Chris@7
|
5
|
Chris@7
|
6 #include <dataquay/BasicStore.h>
|
Chris@28
|
7 #include <dataquay/objectmapper/TypeMapping.h>
|
Chris@7
|
8 #include <dataquay/objectmapper/ObjectBuilder.h>
|
Chris@7
|
9 #include <dataquay/objectmapper/ContainerBuilder.h>
|
Chris@7
|
10
|
Chris@7
|
11 using namespace Dataquay;
|
Chris@7
|
12
|
Chris@7
|
13 namespace ClassicalData {
|
Chris@7
|
14
|
Chris@22
|
15 void
|
Chris@22
|
16 TypeRegistrar::registerTypes()
|
Chris@7
|
17 {
|
Chris@21
|
18 qRegisterMetaType<Year>
|
Chris@21
|
19 ("ClassicalData::Year");
|
Chris@7
|
20 qRegisterMetaType<HistoricalEvent *>
|
Chris@7
|
21 ("ClassicalData::HistoricalEvent*");
|
Chris@7
|
22 qRegisterMetaType<Birth *>
|
Chris@7
|
23 ("ClassicalData::Birth*");
|
Chris@7
|
24 qRegisterMetaType<Death *>
|
Chris@7
|
25 ("ClassicalData::Death*");
|
Chris@7
|
26 qRegisterMetaType<Composition *>
|
Chris@7
|
27 ("ClassicalData::Composition*");
|
Chris@7
|
28 qRegisterMetaType<Work *>
|
Chris@7
|
29 ("ClassicalData::Work*");
|
Chris@7
|
30 qRegisterMetaType<Movement *>
|
Chris@7
|
31 ("ClassicalData::Movement*");
|
Chris@7
|
32 qRegisterMetaType<Composer *>
|
Chris@7
|
33 ("ClassicalData::Composer*");
|
Chris@7
|
34 qRegisterMetaType<Document *>
|
Chris@7
|
35 ("ClassicalData::Document*");
|
Chris@7
|
36 qRegisterMetaType<Form *>
|
Chris@7
|
37 ("ClassicalData::Form*");
|
Chris@7
|
38 qRegisterMetaType<QSet<Work *> >
|
Chris@7
|
39 ("QSet<ClassicalData::Work*>");
|
Chris@7
|
40 qRegisterMetaType<QSet<Movement *> >
|
Chris@7
|
41 ("QSet<ClassicalData::Movement*>");
|
Chris@7
|
42 qRegisterMetaType<QSet<Document *> >
|
Chris@7
|
43 ("QSet<ClassicalData::Document*>");
|
Chris@7
|
44 qRegisterMetaType<QSet<Form *> >
|
Chris@7
|
45 ("QSet<ClassicalData::Form*>");
|
Chris@7
|
46 qRegisterMetaType<QSet<QString> >
|
Chris@7
|
47 ("QSet<QString>");
|
Chris@18
|
48 qRegisterMetaType<QSet<Dataquay::Uri> >
|
Chris@18
|
49 ("QSet<Dataquay::Uri>");
|
Chris@48
|
50 qRegisterMetaType<AudioFileTag *>
|
Chris@48
|
51 ("ClassicalData::AudioFileTag*");
|
Chris@48
|
52 qRegisterMetaType<QSet<AudioFileTag *> >
|
Chris@48
|
53 ("QSet<ClassicalData::AudioFileTag*>");
|
Chris@45
|
54 qRegisterMetaType<AudioFile *>
|
Chris@45
|
55 ("ClassicalData::AudioFile*");
|
Chris@45
|
56 qRegisterMetaType<QSet<AudioFile *> >
|
Chris@45
|
57 ("QSet<ClassicalData::AudioFile*>");
|
Chris@45
|
58 qRegisterMetaType<Signal *>
|
Chris@45
|
59 ("ClassicalData::Signal*");
|
Chris@7
|
60
|
Chris@21
|
61 Node::registerDatatype(Uri("http://www.w3.org/2001/XMLSchema#gYear"),
|
Chris@21
|
62 "ClassicalData::Year", new Year::Encoder());
|
Chris@21
|
63
|
Chris@7
|
64 ObjectBuilder::getInstance()->registerClass
|
Chris@7
|
65 <HistoricalEvent>("ClassicalData::HistoricalEvent*");
|
Chris@7
|
66 ObjectBuilder::getInstance()->registerClass
|
Chris@7
|
67 <Birth>("ClassicalData::Birth*");
|
Chris@7
|
68 ObjectBuilder::getInstance()->registerClass
|
Chris@7
|
69 <Death>("ClassicalData::Death*");
|
Chris@7
|
70 ObjectBuilder::getInstance()->registerClass
|
Chris@7
|
71 <Composition>("ClassicalData::Composition*");
|
Chris@7
|
72 ObjectBuilder::getInstance()->registerClass
|
Chris@7
|
73 <Work, QObject>("ClassicalData::Work*");
|
Chris@7
|
74 ObjectBuilder::getInstance()->registerClass
|
Chris@7
|
75 <Movement, QObject>("ClassicalData::Movement*");
|
Chris@7
|
76 ObjectBuilder::getInstance()->registerClass
|
Chris@7
|
77 <Composer, QObject>("ClassicalData::Composer*");
|
Chris@7
|
78 ObjectBuilder::getInstance()->registerClass
|
Chris@7
|
79 <Document, QObject>("ClassicalData::Document*");
|
Chris@7
|
80 ObjectBuilder::getInstance()->registerClass
|
Chris@7
|
81 <Form, QObject>("ClassicalData::Form*");
|
Chris@45
|
82 ObjectBuilder::getInstance()->registerClass
|
Chris@48
|
83 <AudioFileTag>("ClassicalData::AudioFileTag*");
|
Chris@48
|
84 ObjectBuilder::getInstance()->registerClass
|
Chris@45
|
85 <AudioFile>("ClassicalData::AudioFile*");
|
Chris@7
|
86
|
Chris@7
|
87 ContainerBuilder::getInstance()->registerContainer
|
Chris@7
|
88 <QString, QSet<QString> >
|
Chris@7
|
89 ("QString", "QSet<QString>", ContainerBuilder::SetKind);
|
Chris@7
|
90
|
Chris@7
|
91 ContainerBuilder::getInstance()->registerContainer
|
Chris@18
|
92 <Dataquay::Uri, QSet<Dataquay::Uri> >
|
Chris@18
|
93 ("Dataquay::Uri", "QSet<Dataquay::Uri>", ContainerBuilder::SetKind);
|
Chris@7
|
94
|
Chris@7
|
95 ContainerBuilder::getInstance()->registerContainer
|
Chris@7
|
96 <Work*, QSet<Work*> >
|
Chris@7
|
97 ("ClassicalData::Work*", "QSet<ClassicalData::Work*>",
|
Chris@7
|
98 ContainerBuilder::SetKind);
|
Chris@7
|
99
|
Chris@7
|
100 ContainerBuilder::getInstance()->registerContainer
|
Chris@7
|
101 <Movement*, QSet<Movement*> >
|
Chris@7
|
102 ("ClassicalData::Movement*", "QSet<ClassicalData::Movement*>",
|
Chris@7
|
103 ContainerBuilder::SetKind);
|
Chris@7
|
104
|
Chris@7
|
105 ContainerBuilder::getInstance()->registerContainer
|
Chris@7
|
106 <Document*, QSet<Document*> >
|
Chris@7
|
107 ("ClassicalData::Document*", "QSet<ClassicalData::Document*>",
|
Chris@7
|
108 ContainerBuilder::SetKind);
|
Chris@7
|
109
|
Chris@7
|
110 ContainerBuilder::getInstance()->registerContainer
|
Chris@7
|
111 <Form*, QSet<Form*> >
|
Chris@7
|
112 ("ClassicalData::Form*", "QSet<ClassicalData::Form*>",
|
Chris@7
|
113 ContainerBuilder::SetKind);
|
Chris@45
|
114
|
Chris@45
|
115 ContainerBuilder::getInstance()->registerContainer
|
Chris@48
|
116 <AudioFileTag*, QSet<AudioFileTag*> >
|
Chris@48
|
117 ("ClassicalData::AudioFileTag*", "QSet<ClassicalData::AudioFileTag*>",
|
Chris@48
|
118 ContainerBuilder::SetKind);
|
Chris@48
|
119
|
Chris@48
|
120 ContainerBuilder::getInstance()->registerContainer
|
Chris@45
|
121 <AudioFile*, QSet<AudioFile*> >
|
Chris@45
|
122 ("ClassicalData::AudioFile*", "QSet<ClassicalData::AudioFile*>",
|
Chris@45
|
123 ContainerBuilder::SetKind);
|
Chris@7
|
124 }
|
Chris@7
|
125
|
Chris@7
|
126 void
|
Chris@28
|
127 TypeRegistrar::addMappings(BasicStore *store, TypeMapping *mapping)
|
Chris@7
|
128 {
|
Chris@25
|
129 if (store) {
|
Chris@25
|
130 store->addPrefix("foaf", Uri("http://xmlns.com/foaf/0.1/"));
|
Chris@25
|
131 store->addPrefix("mo", Uri("http://purl.org/ontology/mo/"));
|
Chris@25
|
132 store->addPrefix("dc", Uri("http://purl.org/dc/elements/1.1/"));
|
Chris@25
|
133 store->addPrefix("bio", Uri("http://purl.org/vocab/bio/0.1/"));
|
Chris@25
|
134 store->addPrefix("owl", Uri("http://www.w3.org/2002/07/owl#"));
|
Chris@25
|
135 store->addPrefix("rdfs", Uri("http://www.w3.org/2000/01/rdf-schema#"));
|
Chris@25
|
136 store->addPrefix("db", Uri("http://dbtune.org/musicbrainz/resource/"));
|
Chris@25
|
137 store->addPrefix("dbv", Uri("http://dbtune.org/musicbrainz/resource/vocab/"));
|
Chris@25
|
138 store->addPrefix("cmn", Uri("http://purl.org/ontology/classicalmusicnav#"));
|
Chris@25
|
139 store->addPrefix("sim", Uri("http://purl.org/ontology/similarity/"));
|
Chris@25
|
140 }
|
Chris@7
|
141
|
Chris@28
|
142 if (mapping) {
|
Chris@28
|
143 mapping->setObjectTypePrefix(Uri("http://dbtune.org/classical/resource/"));
|
Chris@28
|
144 mapping->setPropertyPrefix(Uri("http://dbtune.org/classical/resource/vocab/"));
|
Chris@28
|
145 mapping->setRelationshipPrefix(Uri("http://dbtune.org/classical/resource/vocab/relationship/"));
|
Chris@25
|
146 }
|
Chris@21
|
147
|
Chris@43
|
148 if (store && mapping) {
|
Chris@43
|
149
|
Chris@28
|
150 store->addPrefix("type", mapping->getObjectTypePrefix());
|
Chris@28
|
151 store->addPrefix("classical", Uri(mapping->getObjectTypePrefix().toString() + "type/"));
|
Chris@28
|
152 store->addPrefix("property", mapping->getPropertyPrefix());
|
Chris@28
|
153 store->addPrefix("rel", mapping->getRelationshipPrefix());
|
Chris@7
|
154
|
Chris@52
|
155 store->add(Triple(store->expand("classical:Composer"), store->expand("a"), store->expand("owl:Class")));
|
Chris@52
|
156 store->add(Triple(store->expand("classical:Composer"), store->expand("rdfs:subClassOf"), store->expand("mo:MusicArtist")));
|
Chris@7
|
157
|
Chris@52
|
158 store->add(Triple(store->expand("property:birth"), store->expand("a"), store->expand("owl:ObjectProperty")));
|
Chris@52
|
159 store->add(Triple(store->expand("property:birth"), store->expand("rdfs:subPropertyOf"), store->expand("bio:event")));
|
Chris@7
|
160
|
Chris@52
|
161 store->add(Triple(store->expand("property:death"), store->expand("a"), store->expand("owl:ObjectProperty")));
|
Chris@52
|
162 store->add(Triple(store->expand("property:death"), store->expand("rdfs:subPropertyOf"), store->expand("bio:event")));
|
Chris@7
|
163
|
Chris@28
|
164 mapping->addTypeMapping("ClassicalData::Composer", store->expand("classical:Composer"));
|
Chris@28
|
165 mapping->addPropertyMapping("ClassicalData::Composer", "pages", store->expand("foaf:page"));
|
Chris@28
|
166 mapping->addPropertyMapping("ClassicalData::Composer", "name", store->expand("foaf:name"));
|
Chris@28
|
167 mapping->addPropertyMapping("ClassicalData::Composer", "aliases", store->expand("dbv:alias"));
|
Chris@28
|
168 mapping->addPropertyMapping("ClassicalData::Composer", "birth", store->expand("property:birth"));
|
Chris@28
|
169 mapping->addPropertyMapping("ClassicalData::Composer", "death", store->expand("property:death"));
|
Chris@28
|
170 mapping->addPropertyMapping("ClassicalData::Composer", "geonameURIs", store->expand("foaf:based_near"));
|
Chris@28
|
171 mapping->addPropertyMapping("ClassicalData::Composer", "otherURIs", store->expand("owl:sameAs"));
|
Chris@28
|
172 mapping->addPropertyMapping("ClassicalData::Composer", "gender", store->expand("foaf:gender"));
|
Chris@7
|
173
|
Chris@28
|
174 mapping->addTypeMapping("ClassicalData::Birth", store->expand("bio:Birth"));
|
Chris@28
|
175 mapping->addTypeMapping("ClassicalData::Death", store->expand("bio:Death"));
|
Chris@28
|
176 mapping->addTypeUriPrefixMapping("ClassicalData::Birth", store->expand(":event/"));
|
Chris@28
|
177 mapping->addTypeUriPrefixMapping("ClassicalData::Death", store->expand(":event/"));
|
Chris@28
|
178 mapping->addPropertyMapping("ClassicalData::Birth", "year", store->expand("dc:date"));
|
Chris@28
|
179 mapping->addPropertyMapping("ClassicalData::Death", "year", store->expand("dc:date"));
|
Chris@28
|
180 mapping->addPropertyMapping("ClassicalData::Composition", "year", store->expand("dc:date"));
|
Chris@28
|
181 mapping->addPropertyMapping("ClassicalData::Birth", "place", store->expand("bio:place"));
|
Chris@28
|
182 mapping->addPropertyMapping("ClassicalData::Death", "place", store->expand("bio:place"));
|
Chris@28
|
183 mapping->addPropertyMapping("ClassicalData::Composition", "place", store->expand("bio:place"));
|
Chris@7
|
184
|
Chris@28
|
185 mapping->addTypeMapping("ClassicalData::Document", store->expand("foaf:Document"));
|
Chris@28
|
186 mapping->addPropertyMapping("ClassicalData::Document", "topic", store->expand("foaf:primaryTopic"));
|
Chris@7
|
187
|
Chris@28
|
188 mapping->addTypeMapping("ClassicalData::Work", store->expand("mo:MusicalWork"));
|
Chris@7
|
189
|
Chris@28
|
190 mapping->addPropertyMapping("ClassicalData::Work", "composition", store->expand("mo:composed_in"));
|
Chris@28
|
191 mapping->addPropertyMapping("ClassicalData::Work", "opus", store->expand("mo:opus"));
|
Chris@28
|
192 mapping->addPropertyMapping("ClassicalData::Work", "catalogue", store->expand("mo:catalogue"));
|
Chris@28
|
193 mapping->addPropertyMapping("ClassicalData::Work", "number", store->expand("mo:number"));
|
Chris@28
|
194 mapping->addPropertyMapping("ClassicalData::Work", "partOf", store->expand("dc:isPartOf"));
|
Chris@28
|
195 mapping->addPropertyMapping("ClassicalData::Work", "parts", store->expand("dc:hasPart"));
|
Chris@28
|
196 mapping->addPropertyMapping("ClassicalData::Work", "pages", store->expand("foaf:page"));
|
Chris@28
|
197 mapping->addPropertyMapping("ClassicalData::Work", "forms", store->expand("property:form"));
|
Chris@28
|
198 mapping->addPropertyMapping("ClassicalData::Work", "key", store->expand("mo:key"));
|
Chris@28
|
199 mapping->addPropertyMapping("ClassicalData::Work", "aliases", store->expand("dbv:alias"));
|
Chris@28
|
200 mapping->addPropertyMapping("ClassicalData::Work", "name", store->expand("dc:title"));
|
Chris@25
|
201
|
Chris@28
|
202 mapping->addTypeMapping("ClassicalData::Composition", store->expand("mo:Composition"));
|
Chris@28
|
203 mapping->addTypeUriPrefixMapping("ClassicalData::Composition", store->expand(":event/"));
|
Chris@28
|
204 mapping->addPropertyMapping("ClassicalData::Composition", "composer", store->expand("mo:composer"));
|
Chris@28
|
205 mapping->addPropertyMapping("ClassicalData::Composition", "works", store->expand("mo:produced_work"));
|
Chris@44
|
206
|
Chris@48
|
207 mapping->addTypeMapping("ClassicalData::AudioFileTag", store->expand("classical:AudioFileTag"));
|
Chris@48
|
208
|
Chris@45
|
209 mapping->addTypeMapping("ClassicalData::AudioFile", store->expand("mo:AudioFile"));
|
Chris@45
|
210 mapping->addPropertyMapping("ClassicalData::AudioFile", "hash", store->expand("foaf:sha1"));
|
Chris@45
|
211
|
Chris@45
|
212 mapping->addTypeMapping("ClassicalData::Signal", store->expand("mo:Signal"));
|
Chris@45
|
213 mapping->addPropertyMapping("ClassicalData::Signal", "availableAs", store->expand("mo:available_as"));
|
Chris@45
|
214 mapping->addPropertyMapping("ClassicalData::Signal", "puid", store->expand("mo:puid"));
|
Chris@45
|
215 mapping->addPropertyMapping("ClassicalData::Signal", "composer", store->expand("mo:composer"));
|
Chris@45
|
216 mapping->addPropertyMapping("ClassicalData::Signal", "work", store->expand("mo:"));
|
Chris@45
|
217 mapping->addPropertyMapping("ClassicalData::Signal", "availableAs", store->expand("mo:available_as"));
|
Chris@25
|
218 }
|
Chris@7
|
219 }
|
Chris@7
|
220
|
Chris@7
|
221 }
|
Chris@7
|
222
|