comparison 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
comparison
equal deleted inserted replaced
6:96bf272e74c5 7:df999875c53b
14 #include "ImportWikipediaComposers.h" 14 #include "ImportWikipediaComposers.h"
15 #include "ImportWikipediaWorks.h" 15 #include "ImportWikipediaWorks.h"
16 #include "ImportWikipediaWorksK.h" 16 #include "ImportWikipediaWorksK.h"
17 #include "ImportWikipediaWorksList.h" 17 #include "ImportWikipediaWorksList.h"
18 #include "ImportHoboken.h" 18 #include "ImportHoboken.h"
19
20 #include "TypeRegistrar.h"
19 21
20 #include <dataquay/Debug.h> 22 #include <dataquay/Debug.h>
21 23
22 using namespace ClassicalData; 24 using namespace ClassicalData;
23 using namespace Dataquay; 25 using namespace Dataquay;
520 } 522 }
521 } 523 }
522 524
523 int main(int argc, char **argv) 525 int main(int argc, char **argv)
524 { 526 {
525 qRegisterMetaType<HistoricalEvent *>
526 ("ClassicalData::HistoricalEvent*");
527 qRegisterMetaType<Birth *>
528 ("ClassicalData::Birth*");
529 qRegisterMetaType<Death *>
530 ("ClassicalData::Death*");
531 qRegisterMetaType<Composition *>
532 ("ClassicalData::Composition*");
533 qRegisterMetaType<Work *>
534 ("ClassicalData::Work*");
535 qRegisterMetaType<Movement *>
536 ("ClassicalData::Movement*");
537 qRegisterMetaType<Composer *>
538 ("ClassicalData::Composer*");
539 qRegisterMetaType<Document *>
540 ("ClassicalData::Document*");
541 qRegisterMetaType<Form *>
542 ("ClassicalData::Form*");
543 qRegisterMetaType<QSet<Work *> >
544 ("QSet<ClassicalData::Work*>");
545 qRegisterMetaType<QSet<Movement *> >
546 ("QSet<ClassicalData::Movement*>");
547 qRegisterMetaType<QSet<Document *> >
548 ("QSet<ClassicalData::Document*>");
549 qRegisterMetaType<QSet<Form *> >
550 ("QSet<ClassicalData::Form*>");
551 qRegisterMetaType<QSet<QString> >
552 ("QSet<QString>");
553 qRegisterMetaType<QSet<QUrl> >
554 ("QSet<QUrl>");
555
556 qRegisterMetaType<ClassicalComposersOrgImporter *> 527 qRegisterMetaType<ClassicalComposersOrgImporter *>
557 ("ClassicalData::ClassicalComposersOrgImporter*"); 528 ("ClassicalData::ClassicalComposersOrgImporter*");
558 qRegisterMetaType<ClassicalDotNetImporter *> 529 qRegisterMetaType<ClassicalDotNetImporter *>
559 ("ClassicalData::ClassicalDotNetImporter*"); 530 ("ClassicalData::ClassicalDotNetImporter*");
560 qRegisterMetaType<ClassicalArchivesImporter *> 531 qRegisterMetaType<ClassicalArchivesImporter *>
569 ("ClassicalData::WikipediaWorksListImporter*"); 540 ("ClassicalData::WikipediaWorksListImporter*");
570 qRegisterMetaType<HobokenImporter *> 541 qRegisterMetaType<HobokenImporter *>
571 ("ClassicalData::HobokenImporter*"); 542 ("ClassicalData::HobokenImporter*");
572 543
573 ObjectBuilder::getInstance()->registerClass 544 ObjectBuilder::getInstance()->registerClass
574 <HistoricalEvent>("ClassicalData::HistoricalEvent*");
575 ObjectBuilder::getInstance()->registerClass
576 <Birth>("ClassicalData::Birth*");
577 ObjectBuilder::getInstance()->registerClass
578 <Death>("ClassicalData::Death*");
579 ObjectBuilder::getInstance()->registerClass
580 <Composition>("ClassicalData::Composition*");
581 ObjectBuilder::getInstance()->registerClass
582 <Work, QObject>("ClassicalData::Work*");
583 ObjectBuilder::getInstance()->registerClass
584 <Movement, QObject>("ClassicalData::Movement*");
585 ObjectBuilder::getInstance()->registerClass
586 <Composer, QObject>("ClassicalData::Composer*");
587 ObjectBuilder::getInstance()->registerClass
588 <Document, QObject>("ClassicalData::Document*");
589 ObjectBuilder::getInstance()->registerClass
590 <Form, QObject>("ClassicalData::Form*");
591
592 ObjectBuilder::getInstance()->registerClass
593 <ClassicalComposersOrgImporter>("ClassicalData::ClassicalComposersOrgImporter*"); 545 <ClassicalComposersOrgImporter>("ClassicalData::ClassicalComposersOrgImporter*");
594 ObjectBuilder::getInstance()->registerClass 546 ObjectBuilder::getInstance()->registerClass
595 <ClassicalDotNetImporter>("ClassicalData::ClassicalDotNetImporter*"); 547 <ClassicalDotNetImporter>("ClassicalData::ClassicalDotNetImporter*");
596 ObjectBuilder::getInstance()->registerClass 548 ObjectBuilder::getInstance()->registerClass
597 <ClassicalArchivesImporter>("ClassicalData::ClassicalArchivesImporter*"); 549 <ClassicalArchivesImporter>("ClassicalData::ClassicalArchivesImporter*");
604 ObjectBuilder::getInstance()->registerClass 556 ObjectBuilder::getInstance()->registerClass
605 <WikipediaWorksListImporter>("ClassicalData::WikipediaWorksListImporter*"); 557 <WikipediaWorksListImporter>("ClassicalData::WikipediaWorksListImporter*");
606 ObjectBuilder::getInstance()->registerClass 558 ObjectBuilder::getInstance()->registerClass
607 <HobokenImporter>("ClassicalData::HobokenImporter*"); 559 <HobokenImporter>("ClassicalData::HobokenImporter*");
608 560
609 ContainerBuilder::getInstance()->registerContainer
610 <QString, QSet<QString> >
611 ("QString", "QSet<QString>", ContainerBuilder::SetKind);
612
613 ContainerBuilder::getInstance()->registerContainer
614 <QUrl, QSet<QUrl> >
615 ("QUrl", "QSet<QUrl>", ContainerBuilder::SetKind);
616
617 ContainerBuilder::getInstance()->registerContainer
618 <Work*, QSet<Work*> >
619 ("ClassicalData::Work*", "QSet<ClassicalData::Work*>",
620 ContainerBuilder::SetKind);
621
622 ContainerBuilder::getInstance()->registerContainer
623 <Movement*, QSet<Movement*> >
624 ("ClassicalData::Movement*", "QSet<ClassicalData::Movement*>",
625 ContainerBuilder::SetKind);
626
627 ContainerBuilder::getInstance()->registerContainer
628 <Document*, QSet<Document*> >
629 ("ClassicalData::Document*", "QSet<ClassicalData::Document*>",
630 ContainerBuilder::SetKind);
631
632 ContainerBuilder::getInstance()->registerContainer
633 <Form*, QSet<Form*> >
634 ("ClassicalData::Form*", "QSet<ClassicalData::Form*>",
635 ContainerBuilder::SetKind);
636
637 BasicStore *store = BasicStore::load("file:importers.ttl"); 561 BasicStore *store = BasicStore::load("file:importers.ttl");
638 ObjectMapper mapper(store); 562 ObjectMapper mapper(store);
639 QObject *parentObject = mapper.loadAllObjects(new QObject()); 563 QObject *parentObject = mapper.loadAllObjects(new QObject());
640 564
641 BasicStore *outstore = new BasicStore(); 565 BasicStore *outstore = new BasicStore();
642 outstore->setBaseUri("http://dbtune.org/classical/resource/"); 566 outstore->setBaseUri("http://dbtune.org/classical/resource/");
643 ObjectMapper outmapper(outstore); 567 ObjectMapper outmapper(outstore);
644 568
569 TypeRegistrar::addMappings(outstore, &outmapper);
570
645 outmapper.setPropertyStorePolicy(ObjectMapper::StoreIfChanged); 571 outmapper.setPropertyStorePolicy(ObjectMapper::StoreIfChanged);
646 outmapper.setObjectStorePolicy(ObjectMapper::StoreAllObjects); 572 outmapper.setObjectStorePolicy(ObjectMapper::StoreAllObjects);
647 outmapper.setBlankNodePolicy(ObjectMapper::NoBlankNodes); 573 outmapper.setBlankNodePolicy(ObjectMapper::NoBlankNodes);
648
649 outmapper.setObjectTypePrefix("http://dbtune.org/classical/resource/");
650 outmapper.setPropertyPrefix("http://dbtune.org/classical/resource/vocab/");
651 outmapper.setRelationshipPrefix("http://dbtune.org/classical/resource/vocab/relationship/");
652
653 outstore->addPrefix("type", outmapper.getObjectTypePrefix());
654 outstore->addPrefix("classical", outmapper.getObjectTypePrefix() + "type/");
655 outstore->addPrefix("property", outmapper.getPropertyPrefix());
656 outstore->addPrefix("rel", outmapper.getRelationshipPrefix());
657
658 outstore->addPrefix("foaf", "http://xmlns.com/foaf/0.1/");
659 outstore->addPrefix("mo", "http://purl.org/ontology/mo/");
660 outstore->addPrefix("dc", "http://purl.org/dc/elements/1.1/");
661 outstore->addPrefix("bio", "http://purl.org/vocab/bio/0.1/");
662 outstore->addPrefix("owl", "http://www.w3.org/2002/07/owl#");
663 outstore->addPrefix("rdfs", "http://www.w3.org/2000/01/rdf-schema#");
664 outstore->addPrefix("db", "http://dbtune.org/musicbrainz/resource/");
665 outstore->addPrefix("dbv", "http://dbtune.org/musicbrainz/resource/vocab/");
666 outstore->addPrefix("cmn", "http://purl.org/ontology/classicalmusicnav#");
667 outstore->addPrefix("sim", "http://purl.org/ontology/similarity/");
668
669 outmapper.addTypeMapping("ClassicalData::Composer", "classical:Composer");
670 outmapper.addPropertyMapping("ClassicalData::Composer", "pages", "foaf:page");
671 outmapper.addPropertyMapping("ClassicalData::Composer", "name", "foaf:name");
672 outmapper.addPropertyMapping("ClassicalData::Composer", "aliases", "dbv:alias");
673 outmapper.addPropertyMapping("ClassicalData::Composer", "birth", "property:birth");
674 outmapper.addPropertyMapping("ClassicalData::Composer", "death", "property:death");
675 outmapper.addPropertyMapping("ClassicalData::Composer", "geonameURIs", "foaf:based_near");
676
677 outmapper.addTypeMapping("ClassicalData::Birth", "bio:Birth");
678 outmapper.addTypeMapping("ClassicalData::Death", "bio:Death");
679 outmapper.addTypeUriPrefixMapping("ClassicalData::Birth", ":event/");
680 outmapper.addTypeUriPrefixMapping("ClassicalData::Death", ":event/");
681 outmapper.addPropertyMapping("ClassicalData::Birth", "year", "bio:date");
682 outmapper.addPropertyMapping("ClassicalData::Death", "year", "bio:date");
683 outmapper.addPropertyMapping("ClassicalData::Composition", "year", "bio:date");
684 outmapper.addPropertyMapping("ClassicalData::Birth", "place", "bio:place");
685 outmapper.addPropertyMapping("ClassicalData::Death", "place", "bio:place");
686 outmapper.addPropertyMapping("ClassicalData::Composition", "place", "bio:place");
687
688 outmapper.addTypeMapping("ClassicalData::Document", "foaf:Document");
689 outmapper.addPropertyMapping("ClassicalData::Document", "topic", "foaf:primaryTopic");
690
691 outmapper.addTypeMapping("ClassicalData::Work", "mo:MusicalWork");
692
693 outmapper.addPropertyMapping("ClassicalData::Work", "composition", "mo:composed_in");
694 outmapper.addPropertyMapping("ClassicalData::Work", "opus", "mo:opus");
695 outmapper.addPropertyMapping("ClassicalData::Work", "catalogue", "mo:catalogue");
696 outmapper.addPropertyMapping("ClassicalData::Work", "number", "mo:number");
697 outmapper.addPropertyMapping("ClassicalData::Work", "partOf", "dc:isPartOf");
698 outmapper.addPropertyMapping("ClassicalData::Work", "parts", "dc:hasPart");
699 outmapper.addPropertyMapping("ClassicalData::Work", "pages", "foaf:page");
700 outmapper.addPropertyMapping("ClassicalData::Work", "forms", "property:form");
701 outmapper.addPropertyMapping("ClassicalData::Work", "key", "mo:key");
702 outmapper.addPropertyMapping("ClassicalData::Work", "aliases", "dbv:alias");
703 outmapper.addPropertyMapping("ClassicalData::Work", "name", "dc:title");
704
705 outmapper.addTypeMapping("ClassicalData::Composition", "mo:Composition");
706 outmapper.addTypeUriPrefixMapping("ClassicalData::Composition", ":event/");
707 outmapper.addPropertyMapping("ClassicalData::Composition", "composer", "mo:composer");
708 outmapper.addPropertyMapping("ClassicalData::Composition", "works", "mo:produced_work");
709
710 outstore->add(Triple("classical:Composer", "a", outstore->expand("owl:Class")));
711 outstore->add(Triple("classical:Composer", "rdfs:subClassOf", outstore->expand("mo:MusicArtist")));
712
713 outstore->add(Triple("property:birth", "a", outstore->expand("owl:ObjectProperty")));
714 outstore->add(Triple("property:birth", "rdfs:subPropertyOf", outstore->expand("bio:event")));
715
716 outstore->add(Triple("property:death", "a", outstore->expand("owl:ObjectProperty")));
717 outstore->add(Triple("property:death", "rdfs:subPropertyOf", outstore->expand("bio:event")));
718 574
719 QList<Importer *> importers = parentObject->findChildren<Importer *>(); 575 QList<Importer *> importers = parentObject->findChildren<Importer *>();
720 std::cerr << "have " << importers.size() << " importers" << std::endl; 576 std::cerr << "have " << importers.size() << " importers" << std::endl;
721 577
722 ComposerMap composers; 578 ComposerMap composers;