annotate common/TypeRegistrar.cpp @ 9:9e2b203254ab classical-rdf

* test matching of composer names
author Chris Cannam
date Fri, 12 Feb 2010 16:56:29 +0000
parents df999875c53b
children c8ef23d3888c
rev   line source
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@7 7 #include <dataquay/objectmapper/ObjectMapper.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@7 15 TypeRegistrar::TypeRegistrar()
Chris@7 16 {
Chris@7 17 qRegisterMetaType<HistoricalEvent *>
Chris@7 18 ("ClassicalData::HistoricalEvent*");
Chris@7 19 qRegisterMetaType<Birth *>
Chris@7 20 ("ClassicalData::Birth*");
Chris@7 21 qRegisterMetaType<Death *>
Chris@7 22 ("ClassicalData::Death*");
Chris@7 23 qRegisterMetaType<Composition *>
Chris@7 24 ("ClassicalData::Composition*");
Chris@7 25 qRegisterMetaType<Work *>
Chris@7 26 ("ClassicalData::Work*");
Chris@7 27 qRegisterMetaType<Movement *>
Chris@7 28 ("ClassicalData::Movement*");
Chris@7 29 qRegisterMetaType<Composer *>
Chris@7 30 ("ClassicalData::Composer*");
Chris@7 31 qRegisterMetaType<Document *>
Chris@7 32 ("ClassicalData::Document*");
Chris@7 33 qRegisterMetaType<Form *>
Chris@7 34 ("ClassicalData::Form*");
Chris@7 35 qRegisterMetaType<QSet<Work *> >
Chris@7 36 ("QSet<ClassicalData::Work*>");
Chris@7 37 qRegisterMetaType<QSet<Movement *> >
Chris@7 38 ("QSet<ClassicalData::Movement*>");
Chris@7 39 qRegisterMetaType<QSet<Document *> >
Chris@7 40 ("QSet<ClassicalData::Document*>");
Chris@7 41 qRegisterMetaType<QSet<Form *> >
Chris@7 42 ("QSet<ClassicalData::Form*>");
Chris@7 43 qRegisterMetaType<QSet<QString> >
Chris@7 44 ("QSet<QString>");
Chris@7 45 qRegisterMetaType<QSet<QUrl> >
Chris@7 46 ("QSet<QUrl>");
Chris@7 47
Chris@7 48 ObjectBuilder::getInstance()->registerClass
Chris@7 49 <HistoricalEvent>("ClassicalData::HistoricalEvent*");
Chris@7 50 ObjectBuilder::getInstance()->registerClass
Chris@7 51 <Birth>("ClassicalData::Birth*");
Chris@7 52 ObjectBuilder::getInstance()->registerClass
Chris@7 53 <Death>("ClassicalData::Death*");
Chris@7 54 ObjectBuilder::getInstance()->registerClass
Chris@7 55 <Composition>("ClassicalData::Composition*");
Chris@7 56 ObjectBuilder::getInstance()->registerClass
Chris@7 57 <Work, QObject>("ClassicalData::Work*");
Chris@7 58 ObjectBuilder::getInstance()->registerClass
Chris@7 59 <Movement, QObject>("ClassicalData::Movement*");
Chris@7 60 ObjectBuilder::getInstance()->registerClass
Chris@7 61 <Composer, QObject>("ClassicalData::Composer*");
Chris@7 62 ObjectBuilder::getInstance()->registerClass
Chris@7 63 <Document, QObject>("ClassicalData::Document*");
Chris@7 64 ObjectBuilder::getInstance()->registerClass
Chris@7 65 <Form, QObject>("ClassicalData::Form*");
Chris@7 66
Chris@7 67 ContainerBuilder::getInstance()->registerContainer
Chris@7 68 <QString, QSet<QString> >
Chris@7 69 ("QString", "QSet<QString>", ContainerBuilder::SetKind);
Chris@7 70
Chris@7 71 ContainerBuilder::getInstance()->registerContainer
Chris@7 72 <QUrl, QSet<QUrl> >
Chris@7 73 ("QUrl", "QSet<QUrl>", ContainerBuilder::SetKind);
Chris@7 74
Chris@7 75 ContainerBuilder::getInstance()->registerContainer
Chris@7 76 <Work*, QSet<Work*> >
Chris@7 77 ("ClassicalData::Work*", "QSet<ClassicalData::Work*>",
Chris@7 78 ContainerBuilder::SetKind);
Chris@7 79
Chris@7 80 ContainerBuilder::getInstance()->registerContainer
Chris@7 81 <Movement*, QSet<Movement*> >
Chris@7 82 ("ClassicalData::Movement*", "QSet<ClassicalData::Movement*>",
Chris@7 83 ContainerBuilder::SetKind);
Chris@7 84
Chris@7 85 ContainerBuilder::getInstance()->registerContainer
Chris@7 86 <Document*, QSet<Document*> >
Chris@7 87 ("ClassicalData::Document*", "QSet<ClassicalData::Document*>",
Chris@7 88 ContainerBuilder::SetKind);
Chris@7 89
Chris@7 90 ContainerBuilder::getInstance()->registerContainer
Chris@7 91 <Form*, QSet<Form*> >
Chris@7 92 ("ClassicalData::Form*", "QSet<ClassicalData::Form*>",
Chris@7 93 ContainerBuilder::SetKind);
Chris@7 94 }
Chris@7 95
Chris@7 96 void
Chris@7 97 TypeRegistrar::addMappings(BasicStore *store, ObjectMapper *mapper)
Chris@7 98 {
Chris@7 99 store->addPrefix("foaf", "http://xmlns.com/foaf/0.1/");
Chris@7 100 store->addPrefix("mo", "http://purl.org/ontology/mo/");
Chris@7 101 store->addPrefix("dc", "http://purl.org/dc/elements/1.1/");
Chris@7 102 store->addPrefix("bio", "http://purl.org/vocab/bio/0.1/");
Chris@7 103 store->addPrefix("owl", "http://www.w3.org/2002/07/owl#");
Chris@7 104 store->addPrefix("rdfs", "http://www.w3.org/2000/01/rdf-schema#");
Chris@7 105 store->addPrefix("db", "http://dbtune.org/musicbrainz/resource/");
Chris@7 106 store->addPrefix("dbv", "http://dbtune.org/musicbrainz/resource/vocab/");
Chris@7 107 store->addPrefix("cmn", "http://purl.org/ontology/classicalmusicnav#");
Chris@7 108 store->addPrefix("sim", "http://purl.org/ontology/similarity/");
Chris@7 109
Chris@7 110 store->add(Triple("classical:Composer", "a", store->expand("owl:Class")));
Chris@7 111 store->add(Triple("classical:Composer", "rdfs:subClassOf", store->expand("mo:MusicArtist")));
Chris@7 112
Chris@7 113 store->add(Triple("property:birth", "a", store->expand("owl:ObjectProperty")));
Chris@7 114 store->add(Triple("property:birth", "rdfs:subPropertyOf", store->expand("bio:event")));
Chris@7 115
Chris@7 116 store->add(Triple("property:death", "a", store->expand("owl:ObjectProperty")));
Chris@7 117 store->add(Triple("property:death", "rdfs:subPropertyOf", store->expand("bio:event")));
Chris@7 118
Chris@7 119 mapper->setObjectTypePrefix("http://dbtune.org/classical/resource/");
Chris@7 120 mapper->setPropertyPrefix("http://dbtune.org/classical/resource/vocab/");
Chris@7 121 mapper->setRelationshipPrefix("http://dbtune.org/classical/resource/vocab/relationship/");
Chris@7 122
Chris@7 123 store->addPrefix("type", mapper->getObjectTypePrefix());
Chris@7 124 store->addPrefix("classical", mapper->getObjectTypePrefix() + "type/");
Chris@7 125 store->addPrefix("property", mapper->getPropertyPrefix());
Chris@7 126 store->addPrefix("rel", mapper->getRelationshipPrefix());
Chris@7 127
Chris@7 128 mapper->addTypeMapping("ClassicalData::Composer", "classical:Composer");
Chris@7 129 mapper->addPropertyMapping("ClassicalData::Composer", "pages", "foaf:page");
Chris@7 130 mapper->addPropertyMapping("ClassicalData::Composer", "name", "foaf:name");
Chris@7 131 mapper->addPropertyMapping("ClassicalData::Composer", "aliases", "dbv:alias");
Chris@7 132 mapper->addPropertyMapping("ClassicalData::Composer", "birth", "property:birth");
Chris@7 133 mapper->addPropertyMapping("ClassicalData::Composer", "death", "property:death");
Chris@7 134 mapper->addPropertyMapping("ClassicalData::Composer", "geonameURIs", "foaf:based_near");
Chris@7 135
Chris@7 136 mapper->addTypeMapping("ClassicalData::Birth", "bio:Birth");
Chris@7 137 mapper->addTypeMapping("ClassicalData::Death", "bio:Death");
Chris@7 138 mapper->addTypeUriPrefixMapping("ClassicalData::Birth", ":event/");
Chris@7 139 mapper->addTypeUriPrefixMapping("ClassicalData::Death", ":event/");
Chris@7 140 mapper->addPropertyMapping("ClassicalData::Birth", "year", "bio:date");
Chris@7 141 mapper->addPropertyMapping("ClassicalData::Death", "year", "bio:date");
Chris@7 142 mapper->addPropertyMapping("ClassicalData::Composition", "year", "bio:date");
Chris@7 143 mapper->addPropertyMapping("ClassicalData::Birth", "place", "bio:place");
Chris@7 144 mapper->addPropertyMapping("ClassicalData::Death", "place", "bio:place");
Chris@7 145 mapper->addPropertyMapping("ClassicalData::Composition", "place", "bio:place");
Chris@7 146
Chris@7 147 mapper->addTypeMapping("ClassicalData::Document", "foaf:Document");
Chris@7 148 mapper->addPropertyMapping("ClassicalData::Document", "topic", "foaf:primaryTopic");
Chris@7 149
Chris@7 150 mapper->addTypeMapping("ClassicalData::Work", "mo:MusicalWork");
Chris@7 151
Chris@7 152 mapper->addPropertyMapping("ClassicalData::Work", "composition", "mo:composed_in");
Chris@7 153 mapper->addPropertyMapping("ClassicalData::Work", "opus", "mo:opus");
Chris@7 154 mapper->addPropertyMapping("ClassicalData::Work", "catalogue", "mo:catalogue");
Chris@7 155 mapper->addPropertyMapping("ClassicalData::Work", "number", "mo:number");
Chris@7 156 mapper->addPropertyMapping("ClassicalData::Work", "partOf", "dc:isPartOf");
Chris@7 157 mapper->addPropertyMapping("ClassicalData::Work", "parts", "dc:hasPart");
Chris@7 158 mapper->addPropertyMapping("ClassicalData::Work", "pages", "foaf:page");
Chris@7 159 mapper->addPropertyMapping("ClassicalData::Work", "forms", "property:form");
Chris@7 160 mapper->addPropertyMapping("ClassicalData::Work", "key", "mo:key");
Chris@7 161 mapper->addPropertyMapping("ClassicalData::Work", "aliases", "dbv:alias");
Chris@7 162 mapper->addPropertyMapping("ClassicalData::Work", "name", "dc:title");
Chris@7 163
Chris@7 164 mapper->addTypeMapping("ClassicalData::Composition", "mo:Composition");
Chris@7 165 mapper->addTypeUriPrefixMapping("ClassicalData::Composition", ":event/");
Chris@7 166 mapper->addPropertyMapping("ClassicalData::Composition", "composer", "mo:composer");
Chris@7 167 mapper->addPropertyMapping("ClassicalData::Composition", "works", "mo:produced_work");
Chris@7 168 }
Chris@7 169
Chris@7 170 TypeRegistrar
Chris@7 171 TypeRegistrar::m_instance;
Chris@7 172
Chris@7 173 }
Chris@7 174