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 @ 44:ed2befdf1e98

History | View | Annotate | Download (8.55 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

    
51
    Node::registerDatatype(Uri("http://www.w3.org/2001/XMLSchema#gYear"),
52
                           "ClassicalData::Year", new Year::Encoder());
53

    
54
    ObjectBuilder::getInstance()->registerClass
55
        <HistoricalEvent>("ClassicalData::HistoricalEvent*");
56
    ObjectBuilder::getInstance()->registerClass
57
        <Birth>("ClassicalData::Birth*");
58
    ObjectBuilder::getInstance()->registerClass
59
        <Death>("ClassicalData::Death*");
60
    ObjectBuilder::getInstance()->registerClass
61
        <Composition>("ClassicalData::Composition*");
62
    ObjectBuilder::getInstance()->registerClass
63
        <Work, QObject>("ClassicalData::Work*");
64
    ObjectBuilder::getInstance()->registerClass
65
        <Movement, QObject>("ClassicalData::Movement*");
66
    ObjectBuilder::getInstance()->registerClass
67
        <Composer, QObject>("ClassicalData::Composer*");
68
    ObjectBuilder::getInstance()->registerClass
69
        <Document, QObject>("ClassicalData::Document*");
70
    ObjectBuilder::getInstance()->registerClass
71
        <Form, QObject>("ClassicalData::Form*");
72

    
73
    ContainerBuilder::getInstance()->registerContainer
74
        <QString, QSet<QString> >
75
        ("QString", "QSet<QString>", ContainerBuilder::SetKind);
76

    
77
    ContainerBuilder::getInstance()->registerContainer
78
        <Dataquay::Uri, QSet<Dataquay::Uri> >
79
        ("Dataquay::Uri", "QSet<Dataquay::Uri>", ContainerBuilder::SetKind);
80

    
81
    ContainerBuilder::getInstance()->registerContainer
82
        <Work*, QSet<Work*> >
83
        ("ClassicalData::Work*", "QSet<ClassicalData::Work*>",
84
         ContainerBuilder::SetKind);
85

    
86
    ContainerBuilder::getInstance()->registerContainer
87
        <Movement*, QSet<Movement*> >
88
        ("ClassicalData::Movement*", "QSet<ClassicalData::Movement*>",
89
         ContainerBuilder::SetKind);
90

    
91
    ContainerBuilder::getInstance()->registerContainer
92
        <Document*, QSet<Document*> >
93
        ("ClassicalData::Document*", "QSet<ClassicalData::Document*>",
94
         ContainerBuilder::SetKind);
95

    
96
    ContainerBuilder::getInstance()->registerContainer
97
        <Form*, QSet<Form*> >
98
        ("ClassicalData::Form*", "QSet<ClassicalData::Form*>",
99
         ContainerBuilder::SetKind);
100
}
101

    
102
void
103
TypeRegistrar::addMappings(BasicStore *store, TypeMapping *mapping)
104
{
105
    if (store) {
106
        store->addPrefix("foaf", Uri("http://xmlns.com/foaf/0.1/"));
107
        store->addPrefix("mo", Uri("http://purl.org/ontology/mo/"));
108
        store->addPrefix("dc", Uri("http://purl.org/dc/elements/1.1/"));
109
        store->addPrefix("bio", Uri("http://purl.org/vocab/bio/0.1/"));
110
        store->addPrefix("owl", Uri("http://www.w3.org/2002/07/owl#"));
111
        store->addPrefix("rdfs", Uri("http://www.w3.org/2000/01/rdf-schema#"));
112
        store->addPrefix("db", Uri("http://dbtune.org/musicbrainz/resource/"));
113
        store->addPrefix("dbv", Uri("http://dbtune.org/musicbrainz/resource/vocab/"));
114
        store->addPrefix("cmn", Uri("http://purl.org/ontology/classicalmusicnav#"));
115
        store->addPrefix("sim", Uri("http://purl.org/ontology/similarity/"));
116
    }
117

    
118
    if (mapping) {
119
        mapping->setObjectTypePrefix(Uri("http://dbtune.org/classical/resource/"));
120
        mapping->setPropertyPrefix(Uri("http://dbtune.org/classical/resource/vocab/"));
121
        mapping->setRelationshipPrefix(Uri("http://dbtune.org/classical/resource/vocab/relationship/"));
122
    }
123

    
124
    if (store && mapping) {
125

    
126
        store->addPrefix("type", mapping->getObjectTypePrefix());
127
        store->addPrefix("classical", Uri(mapping->getObjectTypePrefix().toString() + "type/"));
128
        store->addPrefix("property", mapping->getPropertyPrefix());
129
        store->addPrefix("rel", mapping->getRelationshipPrefix());
130

    
131
        store->add(Triple("classical:Composer", "a", store->expand("owl:Class")));
132
        store->add(Triple("classical:Composer", "rdfs:subClassOf", store->expand("mo:MusicArtist")));
133

    
134
        store->add(Triple("property:birth", "a", store->expand("owl:ObjectProperty")));
135
        store->add(Triple("property:birth", "rdfs:subPropertyOf", store->expand("bio:event")));
136

    
137
        store->add(Triple("property:death", "a", store->expand("owl:ObjectProperty")));
138
        store->add(Triple("property:death", "rdfs:subPropertyOf", store->expand("bio:event")));
139

    
140
        mapping->addTypeMapping("ClassicalData::Composer", store->expand("classical:Composer"));
141
        mapping->addPropertyMapping("ClassicalData::Composer", "pages", store->expand("foaf:page"));
142
        mapping->addPropertyMapping("ClassicalData::Composer", "name", store->expand("foaf:name"));
143
        mapping->addPropertyMapping("ClassicalData::Composer", "aliases", store->expand("dbv:alias"));
144
        mapping->addPropertyMapping("ClassicalData::Composer", "birth", store->expand("property:birth"));
145
        mapping->addPropertyMapping("ClassicalData::Composer", "death", store->expand("property:death"));
146
        mapping->addPropertyMapping("ClassicalData::Composer", "geonameURIs", store->expand("foaf:based_near"));
147
        mapping->addPropertyMapping("ClassicalData::Composer", "otherURIs", store->expand("owl:sameAs"));
148
        mapping->addPropertyMapping("ClassicalData::Composer", "gender", store->expand("foaf:gender"));
149

    
150
        mapping->addTypeMapping("ClassicalData::Birth", store->expand("bio:Birth"));
151
        mapping->addTypeMapping("ClassicalData::Death", store->expand("bio:Death"));
152
        mapping->addTypeUriPrefixMapping("ClassicalData::Birth", store->expand(":event/"));
153
        mapping->addTypeUriPrefixMapping("ClassicalData::Death", store->expand(":event/"));
154
        mapping->addPropertyMapping("ClassicalData::Birth", "year", store->expand("dc:date"));
155
        mapping->addPropertyMapping("ClassicalData::Death", "year", store->expand("dc:date"));
156
        mapping->addPropertyMapping("ClassicalData::Composition", "year", store->expand("dc:date"));
157
        mapping->addPropertyMapping("ClassicalData::Birth", "place", store->expand("bio:place"));
158
        mapping->addPropertyMapping("ClassicalData::Death", "place", store->expand("bio:place"));
159
        mapping->addPropertyMapping("ClassicalData::Composition", "place", store->expand("bio:place"));
160

    
161
        mapping->addTypeMapping("ClassicalData::Document", store->expand("foaf:Document"));
162
        mapping->addPropertyMapping("ClassicalData::Document", "topic", store->expand("foaf:primaryTopic"));
163

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

    
166
        mapping->addPropertyMapping("ClassicalData::Work", "composition", store->expand("mo:composed_in"));
167
        mapping->addPropertyMapping("ClassicalData::Work", "opus", store->expand("mo:opus"));
168
        mapping->addPropertyMapping("ClassicalData::Work", "catalogue", store->expand("mo:catalogue"));
169
        mapping->addPropertyMapping("ClassicalData::Work", "number", store->expand("mo:number"));
170
        mapping->addPropertyMapping("ClassicalData::Work", "partOf", store->expand("dc:isPartOf"));
171
        mapping->addPropertyMapping("ClassicalData::Work", "parts", store->expand("dc:hasPart"));
172
        mapping->addPropertyMapping("ClassicalData::Work", "pages", store->expand("foaf:page"));
173
        mapping->addPropertyMapping("ClassicalData::Work", "forms", store->expand("property:form"));
174
        mapping->addPropertyMapping("ClassicalData::Work", "key", store->expand("mo:key"));
175
        mapping->addPropertyMapping("ClassicalData::Work", "aliases", store->expand("dbv:alias"));
176
        mapping->addPropertyMapping("ClassicalData::Work", "name", store->expand("dc:title"));
177

    
178
        mapping->addTypeMapping("ClassicalData::Composition", store->expand("mo:Composition"));
179
        mapping->addTypeUriPrefixMapping("ClassicalData::Composition", store->expand(":event/"));
180
        mapping->addPropertyMapping("ClassicalData::Composition", "composer", store->expand("mo:composer"));
181
        mapping->addPropertyMapping("ClassicalData::Composition", "works", store->expand("mo:produced_work"));
182

    
183
        mapping->addTypeMapping("ClassicalData::TrackFile", store->expand("mo:AudioFile"));
184
    }
185
}
186

    
187
}
188