Mercurial > hg > classical
view common/TypeRegistrar.cpp @ 24:2b574b88778e classical-rdf
* Add sameAs record to composer &c
* Add merge facility to composer
* Sort ntriples database file
author | Chris Cannam |
---|---|
date | Fri, 26 Feb 2010 15:26:55 +0000 |
parents | 9abc896958cf |
children | e856df83c57f |
line wrap: on
line source
#include "TypeRegistrar.h" #include "Objects.h" #include <dataquay/BasicStore.h> #include <dataquay/objectmapper/ObjectMapper.h> #include <dataquay/objectmapper/ObjectBuilder.h> #include <dataquay/objectmapper/ContainerBuilder.h> using namespace Dataquay; namespace ClassicalData { void TypeRegistrar::registerTypes() { qRegisterMetaType<Year> ("ClassicalData::Year"); qRegisterMetaType<HistoricalEvent *> ("ClassicalData::HistoricalEvent*"); qRegisterMetaType<Birth *> ("ClassicalData::Birth*"); qRegisterMetaType<Death *> ("ClassicalData::Death*"); qRegisterMetaType<Composition *> ("ClassicalData::Composition*"); qRegisterMetaType<Work *> ("ClassicalData::Work*"); qRegisterMetaType<Movement *> ("ClassicalData::Movement*"); qRegisterMetaType<Composer *> ("ClassicalData::Composer*"); qRegisterMetaType<Document *> ("ClassicalData::Document*"); qRegisterMetaType<Form *> ("ClassicalData::Form*"); qRegisterMetaType<QSet<Work *> > ("QSet<ClassicalData::Work*>"); qRegisterMetaType<QSet<Movement *> > ("QSet<ClassicalData::Movement*>"); qRegisterMetaType<QSet<Document *> > ("QSet<ClassicalData::Document*>"); qRegisterMetaType<QSet<Form *> > ("QSet<ClassicalData::Form*>"); qRegisterMetaType<QSet<QString> > ("QSet<QString>"); qRegisterMetaType<QSet<Dataquay::Uri> > ("QSet<Dataquay::Uri>"); Node::registerDatatype(Uri("http://www.w3.org/2001/XMLSchema#gYear"), "ClassicalData::Year", new Year::Encoder()); ObjectBuilder::getInstance()->registerClass <HistoricalEvent>("ClassicalData::HistoricalEvent*"); ObjectBuilder::getInstance()->registerClass <Birth>("ClassicalData::Birth*"); ObjectBuilder::getInstance()->registerClass <Death>("ClassicalData::Death*"); ObjectBuilder::getInstance()->registerClass <Composition>("ClassicalData::Composition*"); ObjectBuilder::getInstance()->registerClass <Work, QObject>("ClassicalData::Work*"); ObjectBuilder::getInstance()->registerClass <Movement, QObject>("ClassicalData::Movement*"); ObjectBuilder::getInstance()->registerClass <Composer, QObject>("ClassicalData::Composer*"); ObjectBuilder::getInstance()->registerClass <Document, QObject>("ClassicalData::Document*"); ObjectBuilder::getInstance()->registerClass <Form, QObject>("ClassicalData::Form*"); ContainerBuilder::getInstance()->registerContainer <QString, QSet<QString> > ("QString", "QSet<QString>", ContainerBuilder::SetKind); ContainerBuilder::getInstance()->registerContainer <Dataquay::Uri, QSet<Dataquay::Uri> > ("Dataquay::Uri", "QSet<Dataquay::Uri>", ContainerBuilder::SetKind); ContainerBuilder::getInstance()->registerContainer <Work*, QSet<Work*> > ("ClassicalData::Work*", "QSet<ClassicalData::Work*>", ContainerBuilder::SetKind); ContainerBuilder::getInstance()->registerContainer <Movement*, QSet<Movement*> > ("ClassicalData::Movement*", "QSet<ClassicalData::Movement*>", ContainerBuilder::SetKind); ContainerBuilder::getInstance()->registerContainer <Document*, QSet<Document*> > ("ClassicalData::Document*", "QSet<ClassicalData::Document*>", ContainerBuilder::SetKind); ContainerBuilder::getInstance()->registerContainer <Form*, QSet<Form*> > ("ClassicalData::Form*", "QSet<ClassicalData::Form*>", ContainerBuilder::SetKind); } void TypeRegistrar::addMappings(BasicStore *store, ObjectMapper *mapper) { store->addPrefix("foaf", Uri("http://xmlns.com/foaf/0.1/")); store->addPrefix("mo", Uri("http://purl.org/ontology/mo/")); store->addPrefix("dc", Uri("http://purl.org/dc/elements/1.1/")); store->addPrefix("bio", Uri("http://purl.org/vocab/bio/0.1/")); store->addPrefix("owl", Uri("http://www.w3.org/2002/07/owl#")); store->addPrefix("rdfs", Uri("http://www.w3.org/2000/01/rdf-schema#")); store->addPrefix("db", Uri("http://dbtune.org/musicbrainz/resource/")); store->addPrefix("dbv", Uri("http://dbtune.org/musicbrainz/resource/vocab/")); store->addPrefix("cmn", Uri("http://purl.org/ontology/classicalmusicnav#")); store->addPrefix("sim", Uri("http://purl.org/ontology/similarity/")); mapper->setObjectTypePrefix(Uri("http://dbtune.org/classical/resource/")); mapper->setPropertyPrefix(Uri("http://dbtune.org/classical/resource/vocab/")); mapper->setRelationshipPrefix(Uri("http://dbtune.org/classical/resource/vocab/relationship/")); store->addPrefix("type", mapper->getObjectTypePrefix()); store->addPrefix("classical", Uri(mapper->getObjectTypePrefix().toString() + "type/")); store->addPrefix("property", mapper->getPropertyPrefix()); store->addPrefix("rel", mapper->getRelationshipPrefix()); store->add(Triple("classical:Composer", "a", store->expand("owl:Class"))); store->add(Triple("classical:Composer", "rdfs:subClassOf", store->expand("mo:MusicArtist"))); store->add(Triple("property:birth", "a", store->expand("owl:ObjectProperty"))); store->add(Triple("property:birth", "rdfs:subPropertyOf", store->expand("bio:event"))); store->add(Triple("property:death", "a", store->expand("owl:ObjectProperty"))); store->add(Triple("property:death", "rdfs:subPropertyOf", store->expand("bio:event"))); mapper->addTypeMapping("ClassicalData::Composer", "classical:Composer"); mapper->addPropertyMapping("ClassicalData::Composer", "pages", "foaf:page"); mapper->addPropertyMapping("ClassicalData::Composer", "name", "foaf:name"); mapper->addPropertyMapping("ClassicalData::Composer", "aliases", "dbv:alias"); mapper->addPropertyMapping("ClassicalData::Composer", "birth", "property:birth"); mapper->addPropertyMapping("ClassicalData::Composer", "death", "property:death"); mapper->addPropertyMapping("ClassicalData::Composer", "geonameURIs", "foaf:based_near"); mapper->addPropertyMapping("ClassicalData::Composer", "otherURIs", "owl:sameAs"); mapper->addTypeMapping("ClassicalData::Birth", "bio:Birth"); mapper->addTypeMapping("ClassicalData::Death", "bio:Death"); mapper->addTypeUriPrefixMapping("ClassicalData::Birth", ":event/"); mapper->addTypeUriPrefixMapping("ClassicalData::Death", ":event/"); mapper->addPropertyMapping("ClassicalData::Birth", "year", "dc:date"); mapper->addPropertyMapping("ClassicalData::Death", "year", "dc:date"); mapper->addPropertyMapping("ClassicalData::Composition", "year", "dc:date"); mapper->addPropertyMapping("ClassicalData::Birth", "place", "bio:place"); mapper->addPropertyMapping("ClassicalData::Death", "place", "bio:place"); mapper->addPropertyMapping("ClassicalData::Composition", "place", "bio:place"); mapper->addTypeMapping("ClassicalData::Document", "foaf:Document"); mapper->addPropertyMapping("ClassicalData::Document", "topic", "foaf:primaryTopic"); mapper->addTypeMapping("ClassicalData::Work", "mo:MusicalWork"); mapper->addPropertyMapping("ClassicalData::Work", "composition", "mo:composed_in"); mapper->addPropertyMapping("ClassicalData::Work", "opus", "mo:opus"); mapper->addPropertyMapping("ClassicalData::Work", "catalogue", "mo:catalogue"); mapper->addPropertyMapping("ClassicalData::Work", "number", "mo:number"); mapper->addPropertyMapping("ClassicalData::Work", "partOf", "dc:isPartOf"); mapper->addPropertyMapping("ClassicalData::Work", "parts", "dc:hasPart"); mapper->addPropertyMapping("ClassicalData::Work", "pages", "foaf:page"); mapper->addPropertyMapping("ClassicalData::Work", "forms", "property:form"); mapper->addPropertyMapping("ClassicalData::Work", "key", "mo:key"); mapper->addPropertyMapping("ClassicalData::Work", "aliases", "dbv:alias"); mapper->addPropertyMapping("ClassicalData::Work", "name", "dc:title"); mapper->addTypeMapping("ClassicalData::Composition", "mo:Composition"); mapper->addTypeUriPrefixMapping("ClassicalData::Composition", ":event/"); mapper->addPropertyMapping("ClassicalData::Composition", "composer", "mo:composer"); mapper->addPropertyMapping("ClassicalData::Composition", "works", "mo:produced_work"); } }