Mercurial > hg > classical
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; |