To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Revision:

root / common / TypeRegistrar.cpp @ 48:5f23d5b29aaf

History | View | Annotate | Download (10.2 KB)

1

    
2
#include "TypeRegistrar.h"
3

    
4
#include "Objects.h"
5

    
6
#include <dataquay/BasicStore.h>
7
#include <dataquay/objectmapper/TypeMapping.h>
8
#include <dataquay/objectmapper/ObjectBuilder.h>
9
#include <dataquay/objectmapper/ContainerBuilder.h>
10

    
11
using namespace Dataquay;
12

    
13
namespace ClassicalData {
14

    
15
void
16
TypeRegistrar::registerTypes()
17
{
18
    qRegisterMetaType<Year>
19
        ("ClassicalData::Year");
20
    qRegisterMetaType<HistoricalEvent *>
21
        ("ClassicalData::HistoricalEvent*");
22
    qRegisterMetaType<Birth *>
23
        ("ClassicalData::Birth*");
24
    qRegisterMetaType<Death *>
25
        ("ClassicalData::Death*");
26
    qRegisterMetaType<Composition *>
27
        ("ClassicalData::Composition*");
28
    qRegisterMetaType<Work *>
29
        ("ClassicalData::Work*");
30
    qRegisterMetaType<Movement *>
31
        ("ClassicalData::Movement*");
32
    qRegisterMetaType<Composer *>
33
        ("ClassicalData::Composer*");
34
    qRegisterMetaType<Document *>
35
        ("ClassicalData::Document*");
36
    qRegisterMetaType<Form *>
37
        ("ClassicalData::Form*");
38
    qRegisterMetaType<QSet<Work *> >
39
        ("QSet<ClassicalData::Work*>");
40
    qRegisterMetaType<QSet<Movement *> >
41
        ("QSet<ClassicalData::Movement*>");
42
    qRegisterMetaType<QSet<Document *> >
43
        ("QSet<ClassicalData::Document*>");
44
    qRegisterMetaType<QSet<Form *> >
45
        ("QSet<ClassicalData::Form*>");
46
    qRegisterMetaType<QSet<QString> >
47
        ("QSet<QString>");
48
    qRegisterMetaType<QSet<Dataquay::Uri> >
49
        ("QSet<Dataquay::Uri>");
50
    qRegisterMetaType<AudioFileTag *>
51
        ("ClassicalData::AudioFileTag*");
52
    qRegisterMetaType<QSet<AudioFileTag *> >
53
        ("QSet<ClassicalData::AudioFileTag*>");
54
    qRegisterMetaType<AudioFile *>
55
        ("ClassicalData::AudioFile*");
56
    qRegisterMetaType<QSet<AudioFile *> >
57
        ("QSet<ClassicalData::AudioFile*>");
58
    qRegisterMetaType<Signal *>
59
        ("ClassicalData::Signal*");
60

    
61
    Node::registerDatatype(Uri("http://www.w3.org/2001/XMLSchema#gYear"),
62
                           "ClassicalData::Year", new Year::Encoder());
63

    
64
    ObjectBuilder::getInstance()->registerClass
65
        <HistoricalEvent>("ClassicalData::HistoricalEvent*");
66
    ObjectBuilder::getInstance()->registerClass
67
        <Birth>("ClassicalData::Birth*");
68
    ObjectBuilder::getInstance()->registerClass
69
        <Death>("ClassicalData::Death*");
70
    ObjectBuilder::getInstance()->registerClass
71
        <Composition>("ClassicalData::Composition*");
72
    ObjectBuilder::getInstance()->registerClass
73
        <Work, QObject>("ClassicalData::Work*");
74
    ObjectBuilder::getInstance()->registerClass
75
        <Movement, QObject>("ClassicalData::Movement*");
76
    ObjectBuilder::getInstance()->registerClass
77
        <Composer, QObject>("ClassicalData::Composer*");
78
    ObjectBuilder::getInstance()->registerClass
79
        <Document, QObject>("ClassicalData::Document*");
80
    ObjectBuilder::getInstance()->registerClass
81
        <Form, QObject>("ClassicalData::Form*");
82
    ObjectBuilder::getInstance()->registerClass
83
        <AudioFileTag>("ClassicalData::AudioFileTag*");
84
    ObjectBuilder::getInstance()->registerClass
85
        <AudioFile>("ClassicalData::AudioFile*");
86

    
87
    ContainerBuilder::getInstance()->registerContainer
88
        <QString, QSet<QString> >
89
        ("QString", "QSet<QString>", ContainerBuilder::SetKind);
90

    
91
    ContainerBuilder::getInstance()->registerContainer
92
        <Dataquay::Uri, QSet<Dataquay::Uri> >
93
        ("Dataquay::Uri", "QSet<Dataquay::Uri>", ContainerBuilder::SetKind);
94

    
95
    ContainerBuilder::getInstance()->registerContainer
96
        <Work*, QSet<Work*> >
97
        ("ClassicalData::Work*", "QSet<ClassicalData::Work*>",
98
         ContainerBuilder::SetKind);
99

    
100
    ContainerBuilder::getInstance()->registerContainer
101
        <Movement*, QSet<Movement*> >
102
        ("ClassicalData::Movement*", "QSet<ClassicalData::Movement*>",
103
         ContainerBuilder::SetKind);
104

    
105
    ContainerBuilder::getInstance()->registerContainer
106
        <Document*, QSet<Document*> >
107
        ("ClassicalData::Document*", "QSet<ClassicalData::Document*>",
108
         ContainerBuilder::SetKind);
109

    
110
    ContainerBuilder::getInstance()->registerContainer
111
        <Form*, QSet<Form*> >
112
        ("ClassicalData::Form*", "QSet<ClassicalData::Form*>",
113
         ContainerBuilder::SetKind);
114

    
115
    ContainerBuilder::getInstance()->registerContainer
116
        <AudioFileTag*, QSet<AudioFileTag*> >
117
        ("ClassicalData::AudioFileTag*", "QSet<ClassicalData::AudioFileTag*>",
118
         ContainerBuilder::SetKind);
119

    
120
    ContainerBuilder::getInstance()->registerContainer
121
        <AudioFile*, QSet<AudioFile*> >
122
        ("ClassicalData::AudioFile*", "QSet<ClassicalData::AudioFile*>",
123
         ContainerBuilder::SetKind);
124
}
125

    
126
void
127
TypeRegistrar::addMappings(BasicStore *store, TypeMapping *mapping)
128
{
129
    if (store) {
130
        store->addPrefix("foaf", Uri("http://xmlns.com/foaf/0.1/"));
131
        store->addPrefix("mo", Uri("http://purl.org/ontology/mo/"));
132
        store->addPrefix("dc", Uri("http://purl.org/dc/elements/1.1/"));
133
        store->addPrefix("bio", Uri("http://purl.org/vocab/bio/0.1/"));
134
        store->addPrefix("owl", Uri("http://www.w3.org/2002/07/owl#"));
135
        store->addPrefix("rdfs", Uri("http://www.w3.org/2000/01/rdf-schema#"));
136
        store->addPrefix("db", Uri("http://dbtune.org/musicbrainz/resource/"));
137
        store->addPrefix("dbv", Uri("http://dbtune.org/musicbrainz/resource/vocab/"));
138
        store->addPrefix("cmn", Uri("http://purl.org/ontology/classicalmusicnav#"));
139
        store->addPrefix("sim", Uri("http://purl.org/ontology/similarity/"));
140
    }
141

    
142
    if (mapping) {
143
        mapping->setObjectTypePrefix(Uri("http://dbtune.org/classical/resource/"));
144
        mapping->setPropertyPrefix(Uri("http://dbtune.org/classical/resource/vocab/"));
145
        mapping->setRelationshipPrefix(Uri("http://dbtune.org/classical/resource/vocab/relationship/"));
146
    }
147

    
148
    if (store && mapping) {
149

    
150
        store->addPrefix("type", mapping->getObjectTypePrefix());
151
        store->addPrefix("classical", Uri(mapping->getObjectTypePrefix().toString() + "type/"));
152
        store->addPrefix("property", mapping->getPropertyPrefix());
153
        store->addPrefix("rel", mapping->getRelationshipPrefix());
154

    
155
        store->add(Triple("classical:Composer", "a", store->expand("owl:Class")));
156
        store->add(Triple("classical:Composer", "rdfs:subClassOf", store->expand("mo:MusicArtist")));
157

    
158
        store->add(Triple("property:birth", "a", store->expand("owl:ObjectProperty")));
159
        store->add(Triple("property:birth", "rdfs:subPropertyOf", store->expand("bio:event")));
160

    
161
        store->add(Triple("property:death", "a", store->expand("owl:ObjectProperty")));
162
        store->add(Triple("property:death", "rdfs:subPropertyOf", store->expand("bio:event")));
163

    
164
        mapping->addTypeMapping("ClassicalData::Composer", store->expand("classical:Composer"));
165
        mapping->addPropertyMapping("ClassicalData::Composer", "pages", store->expand("foaf:page"));
166
        mapping->addPropertyMapping("ClassicalData::Composer", "name", store->expand("foaf:name"));
167
        mapping->addPropertyMapping("ClassicalData::Composer", "aliases", store->expand("dbv:alias"));
168
        mapping->addPropertyMapping("ClassicalData::Composer", "birth", store->expand("property:birth"));
169
        mapping->addPropertyMapping("ClassicalData::Composer", "death", store->expand("property:death"));
170
        mapping->addPropertyMapping("ClassicalData::Composer", "geonameURIs", store->expand("foaf:based_near"));
171
        mapping->addPropertyMapping("ClassicalData::Composer", "otherURIs", store->expand("owl:sameAs"));
172
        mapping->addPropertyMapping("ClassicalData::Composer", "gender", store->expand("foaf:gender"));
173

    
174
        mapping->addTypeMapping("ClassicalData::Birth", store->expand("bio:Birth"));
175
        mapping->addTypeMapping("ClassicalData::Death", store->expand("bio:Death"));
176
        mapping->addTypeUriPrefixMapping("ClassicalData::Birth", store->expand(":event/"));
177
        mapping->addTypeUriPrefixMapping("ClassicalData::Death", store->expand(":event/"));
178
        mapping->addPropertyMapping("ClassicalData::Birth", "year", store->expand("dc:date"));
179
        mapping->addPropertyMapping("ClassicalData::Death", "year", store->expand("dc:date"));
180
        mapping->addPropertyMapping("ClassicalData::Composition", "year", store->expand("dc:date"));
181
        mapping->addPropertyMapping("ClassicalData::Birth", "place", store->expand("bio:place"));
182
        mapping->addPropertyMapping("ClassicalData::Death", "place", store->expand("bio:place"));
183
        mapping->addPropertyMapping("ClassicalData::Composition", "place", store->expand("bio:place"));
184

    
185
        mapping->addTypeMapping("ClassicalData::Document", store->expand("foaf:Document"));
186
        mapping->addPropertyMapping("ClassicalData::Document", "topic", store->expand("foaf:primaryTopic"));
187

    
188
        mapping->addTypeMapping("ClassicalData::Work", store->expand("mo:MusicalWork"));
189

    
190
        mapping->addPropertyMapping("ClassicalData::Work", "composition", store->expand("mo:composed_in"));
191
        mapping->addPropertyMapping("ClassicalData::Work", "opus", store->expand("mo:opus"));
192
        mapping->addPropertyMapping("ClassicalData::Work", "catalogue", store->expand("mo:catalogue"));
193
        mapping->addPropertyMapping("ClassicalData::Work", "number", store->expand("mo:number"));
194
        mapping->addPropertyMapping("ClassicalData::Work", "partOf", store->expand("dc:isPartOf"));
195
        mapping->addPropertyMapping("ClassicalData::Work", "parts", store->expand("dc:hasPart"));
196
        mapping->addPropertyMapping("ClassicalData::Work", "pages", store->expand("foaf:page"));
197
        mapping->addPropertyMapping("ClassicalData::Work", "forms", store->expand("property:form"));
198
        mapping->addPropertyMapping("ClassicalData::Work", "key", store->expand("mo:key"));
199
        mapping->addPropertyMapping("ClassicalData::Work", "aliases", store->expand("dbv:alias"));
200
        mapping->addPropertyMapping("ClassicalData::Work", "name", store->expand("dc:title"));
201

    
202
        mapping->addTypeMapping("ClassicalData::Composition", store->expand("mo:Composition"));
203
        mapping->addTypeUriPrefixMapping("ClassicalData::Composition", store->expand(":event/"));
204
        mapping->addPropertyMapping("ClassicalData::Composition", "composer", store->expand("mo:composer"));
205
        mapping->addPropertyMapping("ClassicalData::Composition", "works", store->expand("mo:produced_work"));
206

    
207
        mapping->addTypeMapping("ClassicalData::AudioFileTag", store->expand("classical:AudioFileTag"));
208

    
209
        mapping->addTypeMapping("ClassicalData::AudioFile", store->expand("mo:AudioFile"));
210
        mapping->addPropertyMapping("ClassicalData::AudioFile", "hash", store->expand("foaf:sha1"));
211

    
212
        mapping->addTypeMapping("ClassicalData::Signal", store->expand("mo:Signal"));
213
        mapping->addPropertyMapping("ClassicalData::Signal", "availableAs", store->expand("mo:available_as"));
214
        mapping->addPropertyMapping("ClassicalData::Signal", "puid", store->expand("mo:puid"));
215
        mapping->addPropertyMapping("ClassicalData::Signal", "composer", store->expand("mo:composer"));
216
        mapping->addPropertyMapping("ClassicalData::Signal", "work", store->expand("mo:"));
217
        mapping->addPropertyMapping("ClassicalData::Signal", "availableAs", store->expand("mo:available_as"));
218
    }
219
}
220

    
221
}
222