Merge pull request #453 from aurimasv/rdflib-rdf-value

Correctly handle literals with attributes in RDF
This commit is contained in:
Simon Kornblith 2014-02-24 11:03:53 -05:00
commit 015b37a85e
2 changed files with 10 additions and 0 deletions

View file

@ -337,6 +337,11 @@ $rdf.RDFParser = function (store) {
if(dom['nodeType'] == RDFParser['nodeType']['TEXT']
|| dom['nodeType'] == RDFParser['nodeType']['CDATA_SECTION']) {
//we have a literal
if(frame['parent']['nodeType'] == frame['NODE']) {
//must have had attributes, store as rdf:value
frame['addArc'](RDFParser['ns']['RDF'] + 'value');
frame = this['buildFrame'](frame);
}
frame['addLiteral'](dom['nodeValue'])
} else if(elementURI(dom) != RDFParser['ns']['RDF'] + "RDF") {
// not root

View file

@ -2639,6 +2639,11 @@ Zotero.Translate.IO._RDFSandbox.prototype = {
*/
"getResourceURI":function(resource) {
if(typeof(resource) == "string") return resource;
const rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
var values = this.getTargets(resource, rdf + 'value');
if(values && values.length) return this.getResourceURI(values[0]);
if(resource.uri) return resource.uri;
if(resource.toNT == undefined) throw new Error("Zotero.RDF: getResourceURI called on invalid resource");
return resource.toNT();