void TestRdf::basicload() { RDEBUG; QString odt = QString(FILES_DATA_DIR) + "/weekend-hike.odt"; KoDocumentRdf *rdf = loadDocument(odt); QVERIFY(rdf); QSharedPointer<Soprano::Model> m = rdf->model(); QVERIFY(m); QCOMPARE (234, m->statementCount()); StatementIterator it; QList<Statement> allStatements; // check a triple it = m->listStatements( Node::createResourceNode(QUrl("uri:james")), Node::createResourceNode(QUrl("http://xmlns.com/foaf/0.1/name")), Node()); allStatements = it.allElements(); QCOMPARE (allStatements.size(), 1); foreach (Soprano::Statement s, allStatements) { // RDEBUG << "HAVE:" << s; QVERIFY (s.object().toString() == "James Smith"); }
QString KoRdfSemanticItemViewSite::getProperty(const QString &prop, const QString &defval) const { Soprano::Node ls = linkingSubject(); QString fqprop = "http://koffice.org/rdf/site#" + prop; KoDocumentRdf *rdf = d->m_semItem->documentRdf(); Soprano::Model *m = rdf->model(); StatementIterator it = m->listStatements(ls, Node::createResourceNode(QUrl(fqprop)), Node(), rdf->manifestRdfNode()); QList<Statement> allStatements = it.allElements(); foreach (Soprano::Statement s, allStatements) { return s.object().toString(); } return defval; }
QStringList KoRdfBasicSemanticItem::xmlIdList() const { QStringList ret; StatementIterator it = documentRdf()->model()->listStatements( linkingSubject(), Node::createResourceNode(QUrl("http://docs.oasis-open.org/ns/office/1.2/meta/pkg#idref")), Node(), documentRdf()->manifestRdfNode() ); QList<Statement> allStatements = it.allElements(); foreach (const Soprano::Statement &s, allStatements) { QString xmlid = s.object().toString(); ret << xmlid; }
Soprano::Node KoRdfSemanticItemViewSite::linkingSubject() const { KoDocumentRdf *rdf = d->m_semItem->documentRdf(); Soprano::Model *m = rdf->model(); Node pred(QUrl("http://koffice.org/rdf/site/package/common#idref")); Node obj = Node::createLiteralNode(d->m_xmlid); Node context = rdf->manifestRdfNode(); // try to find it if it already exists StatementIterator it = m->listStatements(Node(), pred, obj, context); QList<Statement> allStatements = it.allElements(); foreach (Soprano::Statement s, allStatements) { return s.subject(); } Node ret = m->createBlankNode(); m->addStatement(ret, pred, obj, context); return ret; }