Mercurial > hg > vamp-plugin-pack
changeset 50:6547119dbc54
Import all sets of RDF files; omit resources without titles; show any given library once only; warn to stderr if any are missing
author | Chris Cannam |
---|---|
date | Wed, 29 Jan 2020 15:00:32 +0000 |
parents | ba8d1129a062 |
children | cf2840ba1e07 |
files | installer.cpp |
diffstat | 1 files changed, 41 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/installer.cpp Wed Jan 29 14:16:47 2020 +0000 +++ b/installer.cpp Wed Jan 29 15:00:32 2020 +0000 @@ -50,33 +50,39 @@ return entries; } +void +loadLibraryRdf(BasicStore &store, QString filename) +{ + QFile f(filename); + if (!f.open(QFile::ReadOnly | QFile::Text)) { + cerr << "Failed to open RDF resource file " + << filename.toStdString() << endl; + return; + } + + QByteArray content = f.readAll(); + f.close(); + + try { + store.importString(QString::fromUtf8(content), + Uri("file:" + filename), + BasicStore::ImportIgnoreDuplicates); + } catch (const RDFException &ex) { + cerr << "Failed to import RDF resource file " + << filename.toStdString() << ": " << ex.what() << endl; + } +} + unique_ptr<BasicStore> loadLibrariesRdf() { - QDir dir(":out/"); - auto entries = dir.entryList({ "*.ttl", "*.n3" }); - unique_ptr<BasicStore> store(new BasicStore); - for (auto e: entries) { + vector<QString> dirs { ":rdf/plugins", ":out" }; - QFile f(":out/" + e); - if (!f.open(QFile::ReadOnly | QFile::Text)) { - cerr << "Failed to open RDF resource file " - << e.toStdString() << endl; - continue; - } - - QByteArray content = f.readAll(); - f.close(); - - try { - store->importString(QString::fromUtf8(content), - Uri("file:" + e), - BasicStore::ImportIgnoreDuplicates); - } catch (const RDFException &ex) { - cerr << "Failed to import RDF resource file " - << e.toStdString() << ": " << ex.what() << endl; + for (auto d: dirs) { + for (auto e: QDir(d).entryList({ "*.ttl", "*.n3" })) { + loadLibraryRdf(*store, d + "/" + e); } } @@ -126,18 +132,17 @@ continue; } + Node title = store.complete(Triple(t.subject(), + store.expand("dc:title"), + Node())); + if (title.type != Node::Literal) { + continue; + } + LibraryInfo info; info.id = wi->first; info.fileName = wi->second; - - Node title = store.complete(Triple(t.subject(), - store.expand("dc:title"), - Node())); - if (title.type == Node::Literal) { - info.title = title.value; - } else { - info.title = info.id; - } + info.title = title.value; Node maker = store.complete(Triple(t.subject(), store.expand("foaf:maker"), @@ -173,8 +178,14 @@ } results.push_back(info); + wanted.erase(libId.value); } + for (auto wp: wanted) { + cerr << "Failed to find any RDF information about library " + << wp.second << endl; + } + return results; }