23 #include "modelmaker.h"
30 #include "statement.h"
32 #include <QtXml/QDomElement>
33 #include <QtCore/QString>
35 namespace Syndication {
46 QDomElement rdfNode = doc.documentElement();
48 QDomNodeList list = rdfNode.childNodes();
50 for (uint i = 0; i < list.length(); ++i)
52 if (list.item(i).isElement())
54 QDomElement el = list.item(i).toElement();
55 readResource(model, el);
62 ResourcePtr ModelMaker::readResource(Model& model,
const QDomElement& el)
65 QString about = QLatin1String(
"about");
66 QString resource = QLatin1String(
"resource");
67 QString descriptionStr = QLatin1String(
"Description");
71 ResourcePtr type = model.createResource(el.namespaceURI() + el.localName());
75 SequencePtr seq = model.createSequence(el.attribute(about));
81 res = model.createResource(el.attribute(about));
86 QDomNodeList children = el.childNodes();
88 bool isSeq = res->isSequence();
90 for (uint i = 0; i < children.length(); ++i)
92 if (children.item(i).isElement())
94 QDomElement ce = children.item(i).toElement();
96 PropertyPtr pred = model.createProperty(ce.namespaceURI() + ce.localName());
98 if (ce.hasAttribute(resource))
100 NodePtr obj = model.createResource(ce.attribute(resource));
104 SequencePtr tseq = boost::static_pointer_cast<Sequence>(res);
108 model.addStatement(res, pred, obj);
110 else if (!ce.text().isEmpty() && ce.lastChildElement().isNull())
112 NodePtr obj = model.createLiteral(ce.text());
116 SequencePtr tseq = boost::static_pointer_cast<Sequence>(res);
120 model.addStatement(res, pred, obj);
124 QDomElement re = ce.lastChildElement();
126 QString uri = re.attribute(about);
129 NodePtr obj = readResource(model, re);
133 SequencePtr tseq = boost::static_pointer_cast<Sequence>(res);
137 model.addStatement(res, pred, obj);
Model createFromXML(const QDomDocument &doc)
parses an RDF model from RDF/XML
QString namespaceURI()
the RDF namespace, which is http://www.w3.org/1999/02/22-rdf-syntax-ns#
static RDFVocab * self()
returns the singleton instance