diff import/Import.cpp @ 7:df999875c53b classical-rdf

* Test application for load/query (beginnings of)
author Chris Cannam
date Tue, 09 Feb 2010 17:33:39 +0000
parents 96bf272e74c5
children d35e5d769c87
line wrap: on
line diff
--- a/import/Import.cpp	Fri Dec 11 18:05:51 2009 +0000
+++ b/import/Import.cpp	Tue Feb 09 17:33:39 2010 +0000
@@ -17,6 +17,8 @@
 #include "ImportWikipediaWorksList.h"
 #include "ImportHoboken.h"
 
+#include "TypeRegistrar.h"
+
 #include <dataquay/Debug.h>
 
 using namespace ClassicalData;
@@ -522,37 +524,6 @@
 
 int main(int argc, char **argv)
 {
-    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<QUrl> >
-        ("QSet<QUrl>");
-
     qRegisterMetaType<ClassicalComposersOrgImporter *>
 	("ClassicalData::ClassicalComposersOrgImporter*");
     qRegisterMetaType<ClassicalDotNetImporter *>
@@ -571,25 +542,6 @@
 	("ClassicalData::HobokenImporter*");
 
     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*");
-
-    ObjectBuilder::getInstance()->registerClass
 	<ClassicalComposersOrgImporter>("ClassicalData::ClassicalComposersOrgImporter*");
     ObjectBuilder::getInstance()->registerClass
 	<ClassicalDotNetImporter>("ClassicalData::ClassicalDotNetImporter*");
@@ -606,34 +558,6 @@
     ObjectBuilder::getInstance()->registerClass
 	<HobokenImporter>("ClassicalData::HobokenImporter*");
 
-    ContainerBuilder::getInstance()->registerContainer
-        <QString, QSet<QString> >
-        ("QString", "QSet<QString>", ContainerBuilder::SetKind);
-
-    ContainerBuilder::getInstance()->registerContainer
-        <QUrl, QSet<QUrl> >
-        ("QUrl", "QSet<QUrl>", 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);
-
     BasicStore *store = BasicStore::load("file:importers.ttl");
     ObjectMapper mapper(store);
     QObject *parentObject = mapper.loadAllObjects(new QObject());
@@ -642,80 +566,12 @@
     outstore->setBaseUri("http://dbtune.org/classical/resource/");
     ObjectMapper outmapper(outstore);
 
+    TypeRegistrar::addMappings(outstore, &outmapper);
+
     outmapper.setPropertyStorePolicy(ObjectMapper::StoreIfChanged);
     outmapper.setObjectStorePolicy(ObjectMapper::StoreAllObjects);
     outmapper.setBlankNodePolicy(ObjectMapper::NoBlankNodes);
 
-    outmapper.setObjectTypePrefix("http://dbtune.org/classical/resource/");
-    outmapper.setPropertyPrefix("http://dbtune.org/classical/resource/vocab/");
-    outmapper.setRelationshipPrefix("http://dbtune.org/classical/resource/vocab/relationship/");
-    
-    outstore->addPrefix("type", outmapper.getObjectTypePrefix());
-    outstore->addPrefix("classical", outmapper.getObjectTypePrefix() + "type/");
-    outstore->addPrefix("property", outmapper.getPropertyPrefix());
-    outstore->addPrefix("rel", outmapper.getRelationshipPrefix());
-
-    outstore->addPrefix("foaf", "http://xmlns.com/foaf/0.1/");
-    outstore->addPrefix("mo", "http://purl.org/ontology/mo/");
-    outstore->addPrefix("dc", "http://purl.org/dc/elements/1.1/");
-    outstore->addPrefix("bio", "http://purl.org/vocab/bio/0.1/");
-    outstore->addPrefix("owl", "http://www.w3.org/2002/07/owl#");
-    outstore->addPrefix("rdfs", "http://www.w3.org/2000/01/rdf-schema#");
-    outstore->addPrefix("db", "http://dbtune.org/musicbrainz/resource/");
-    outstore->addPrefix("dbv", "http://dbtune.org/musicbrainz/resource/vocab/");
-    outstore->addPrefix("cmn", "http://purl.org/ontology/classicalmusicnav#");
-    outstore->addPrefix("sim", "http://purl.org/ontology/similarity/");
-
-    outmapper.addTypeMapping("ClassicalData::Composer", "classical:Composer");
-    outmapper.addPropertyMapping("ClassicalData::Composer", "pages", "foaf:page");
-    outmapper.addPropertyMapping("ClassicalData::Composer", "name", "foaf:name");
-    outmapper.addPropertyMapping("ClassicalData::Composer", "aliases", "dbv:alias");
-    outmapper.addPropertyMapping("ClassicalData::Composer", "birth", "property:birth");
-    outmapper.addPropertyMapping("ClassicalData::Composer", "death", "property:death");
-    outmapper.addPropertyMapping("ClassicalData::Composer", "geonameURIs", "foaf:based_near");
-
-    outmapper.addTypeMapping("ClassicalData::Birth", "bio:Birth");
-    outmapper.addTypeMapping("ClassicalData::Death", "bio:Death");
-    outmapper.addTypeUriPrefixMapping("ClassicalData::Birth", ":event/");
-    outmapper.addTypeUriPrefixMapping("ClassicalData::Death", ":event/");
-    outmapper.addPropertyMapping("ClassicalData::Birth", "year", "bio:date");
-    outmapper.addPropertyMapping("ClassicalData::Death", "year", "bio:date");
-    outmapper.addPropertyMapping("ClassicalData::Composition", "year", "bio:date");
-    outmapper.addPropertyMapping("ClassicalData::Birth", "place", "bio:place");
-    outmapper.addPropertyMapping("ClassicalData::Death", "place", "bio:place");
-    outmapper.addPropertyMapping("ClassicalData::Composition", "place", "bio:place");
-
-    outmapper.addTypeMapping("ClassicalData::Document", "foaf:Document");
-    outmapper.addPropertyMapping("ClassicalData::Document", "topic", "foaf:primaryTopic");
-
-    outmapper.addTypeMapping("ClassicalData::Work", "mo:MusicalWork");
-
-    outmapper.addPropertyMapping("ClassicalData::Work", "composition", "mo:composed_in");
-    outmapper.addPropertyMapping("ClassicalData::Work", "opus", "mo:opus");
-    outmapper.addPropertyMapping("ClassicalData::Work", "catalogue", "mo:catalogue");
-    outmapper.addPropertyMapping("ClassicalData::Work", "number", "mo:number");
-    outmapper.addPropertyMapping("ClassicalData::Work", "partOf", "dc:isPartOf");
-    outmapper.addPropertyMapping("ClassicalData::Work", "parts", "dc:hasPart");
-    outmapper.addPropertyMapping("ClassicalData::Work", "pages", "foaf:page");
-    outmapper.addPropertyMapping("ClassicalData::Work", "forms", "property:form");
-    outmapper.addPropertyMapping("ClassicalData::Work", "key", "mo:key");
-    outmapper.addPropertyMapping("ClassicalData::Work", "aliases", "dbv:alias");
-    outmapper.addPropertyMapping("ClassicalData::Work", "name", "dc:title");
-
-    outmapper.addTypeMapping("ClassicalData::Composition", "mo:Composition");
-    outmapper.addTypeUriPrefixMapping("ClassicalData::Composition", ":event/");
-    outmapper.addPropertyMapping("ClassicalData::Composition", "composer", "mo:composer");
-    outmapper.addPropertyMapping("ClassicalData::Composition", "works", "mo:produced_work");
-
-    outstore->add(Triple("classical:Composer", "a", outstore->expand("owl:Class")));
-    outstore->add(Triple("classical:Composer", "rdfs:subClassOf", outstore->expand("mo:MusicArtist")));
-
-    outstore->add(Triple("property:birth", "a", outstore->expand("owl:ObjectProperty")));
-    outstore->add(Triple("property:birth", "rdfs:subPropertyOf", outstore->expand("bio:event")));
-
-    outstore->add(Triple("property:death", "a", outstore->expand("owl:ObjectProperty")));
-    outstore->add(Triple("property:death", "rdfs:subPropertyOf", outstore->expand("bio:event")));
-
     QList<Importer *> importers = parentObject->findChildren<Importer *>();
     std::cerr << "have " << importers.size() << " importers" << std::endl;