changeset 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 71cf328c2a9d
files common/TypeRegistrar.cpp common/TypeRegistrar.h common/common.pro import/Import.cpp import/import.pro testapp/Loader.cpp testapp/testapp.pro testapp/testapp.qrc
diffstat 8 files changed, 301 insertions(+), 151 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/TypeRegistrar.cpp	Tue Feb 09 17:33:39 2010 +0000
@@ -0,0 +1,174 @@
+
+#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 {
+
+TypeRegistrar::TypeRegistrar()
+{
+    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>");
+
+    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
+	<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);
+}
+
+void
+TypeRegistrar::addMappings(BasicStore *store, ObjectMapper *mapper)
+{
+    store->addPrefix("foaf", "http://xmlns.com/foaf/0.1/");
+    store->addPrefix("mo", "http://purl.org/ontology/mo/");
+    store->addPrefix("dc", "http://purl.org/dc/elements/1.1/");
+    store->addPrefix("bio", "http://purl.org/vocab/bio/0.1/");
+    store->addPrefix("owl", "http://www.w3.org/2002/07/owl#");
+    store->addPrefix("rdfs", "http://www.w3.org/2000/01/rdf-schema#");
+    store->addPrefix("db", "http://dbtune.org/musicbrainz/resource/");
+    store->addPrefix("dbv", "http://dbtune.org/musicbrainz/resource/vocab/");
+    store->addPrefix("cmn", "http://purl.org/ontology/classicalmusicnav#");
+    store->addPrefix("sim", "http://purl.org/ontology/similarity/");
+
+    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->setObjectTypePrefix("http://dbtune.org/classical/resource/");
+    mapper->setPropertyPrefix("http://dbtune.org/classical/resource/vocab/");
+    mapper->setRelationshipPrefix("http://dbtune.org/classical/resource/vocab/relationship/");
+    
+    store->addPrefix("type", mapper->getObjectTypePrefix());
+    store->addPrefix("classical", mapper->getObjectTypePrefix() + "type/");
+    store->addPrefix("property", mapper->getPropertyPrefix());
+    store->addPrefix("rel", mapper->getRelationshipPrefix());
+
+    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->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", "bio:date");
+    mapper->addPropertyMapping("ClassicalData::Death", "year", "bio:date");
+    mapper->addPropertyMapping("ClassicalData::Composition", "year", "bio: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");
+}
+
+TypeRegistrar
+TypeRegistrar::m_instance;
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/TypeRegistrar.h	Tue Feb 09 17:33:39 2010 +0000
@@ -0,0 +1,27 @@
+
+#ifndef _TYPE_REGISTRAR_H_
+#define _TYPE_REGISTRAR_H_
+
+namespace Dataquay {
+    class BasicStore;
+    class ObjectMapper;
+}
+
+namespace ClassicalData
+{
+
+class TypeRegistrar
+{
+public:
+    static void addMappings(Dataquay::BasicStore *, Dataquay::ObjectMapper *);
+
+private:
+    TypeRegistrar();
+    static TypeRegistrar m_instance;
+};
+
+}
+
+#endif
+
+
--- a/common/common.pro	Fri Dec 11 18:05:51 2009 +0000
+++ b/common/common.pro	Tue Feb 09 17:33:39 2010 +0000
@@ -8,8 +8,8 @@
 MOC_DIR = m
 
 # Input
-HEADERS += Objects.h 
-SOURCES += Objects.cpp 
+HEADERS += Objects.h TypeRegistrar.h
+SOURCES += Objects.cpp TypeRegistrar.cpp
 
 solaris* {
 	 
@@ -20,3 +20,4 @@
 
 }
 
+	QMAKE_CXXFLAGS_DEBUG += -Wall -Woverloaded-virtual -Wextra -Wformat-nonliteral -Wformat-security -Winit-self -O1 -pg
--- 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;
 
--- a/import/import.pro	Fri Dec 11 18:05:51 2009 +0000
+++ b/import/import.pro	Tue Feb 09 17:33:39 2010 +0000
@@ -23,4 +23,3 @@
 	}
 
 }
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testapp/Loader.cpp	Tue Feb 09 17:33:39 2010 +0000
@@ -0,0 +1,56 @@
+
+#include "Objects.h"
+#include "TypeRegistrar.h"
+
+#include <dataquay/BasicStore.h>
+#include <dataquay/objectmapper/ObjectMapper.h>
+
+#include <QTemporaryFile>
+
+#include <iostream>
+
+using namespace Dataquay;
+using namespace ClassicalData;
+
+bool
+load(BasicStore *store, QString resourceName)
+{
+    QTemporaryFile tf;
+    if (!tf.open()) return false;
+    tf.setAutoRemove(true);
+    QFile f(resourceName);
+    if (!f.open(QFile::ReadOnly)) return false;
+    QByteArray buffer;
+    int bufsiz = 10240;
+    while (!f.atEnd()) {
+	buffer = f.read(bufsiz);
+	tf.write(buffer);
+    }
+    std::cerr << "unpacked, importing..." << std::endl;
+    store->import("file://" + tf.fileName(),
+		  BasicStore::ImportPermitDuplicates, // fastest mode
+		  "ntriples");
+    return true;
+}
+
+int main(int argc, char **argv)
+{
+    BasicStore *store = new BasicStore();
+    store->setBaseUri("http://dbtune.org/classical/resource/");
+    ObjectMapper *mapper = new ObjectMapper(store);
+
+    TypeRegistrar::addMappings(store, mapper);
+
+    if (!load(store, ":data.ntriples")) {
+	std::cerr << "Failed to unpack and load resource" << std::endl;
+	return 1;
+    }
+
+    std::cerr << "imported, mapping..." << std::endl;
+
+    QObject *parent = mapper->loadAllObjects(0);
+    
+    delete mapper;
+    delete store;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testapp/testapp.pro	Tue Feb 09 17:33:39 2010 +0000
@@ -0,0 +1,31 @@
+TEMPLATE = app
+TARGET = testapp
+CONFIG += debug
+
+OBJECTS_DIR = o
+MOC_DIR = m
+
+DEPENDPATH += .
+INCLUDEPATH += . ../common ../../turbot
+
+PRE_TARGETDEPS += ../common/libcommon.a
+
+SOURCES += Loader.cpp
+
+RESOURCES += testapp.qrc
+
+LIBS += ../common/libcommon.a ../../turbot/dataquay/libdataquay.a ../../turbot/ext/libext.a
+
+solaris* {
+	 
+	debug {
+              QMAKE_CXXFLAGS_DEBUG += -xprofile=tcov
+	      LIBS += -xprofile=tcov
+	}
+
+}
+
+
+QMAKE_CXXFLAGS_DEBUG += -Wall -Woverloaded-virtual -Wextra -Wformat-nonliteral -Wformat-security -Winit-self -O1 -pg
+
+LIBS += -pg
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testapp/testapp.qrc	Tue Feb 09 17:33:39 2010 +0000
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC>
+<RCC version="1.0">
+<qresource>
+   <file>data.ntriples</file>
+</qresource>
+</RCC>