diff --git a/chrome/content/zotero/xpcom/rdf/rdfparser.js b/chrome/content/zotero/xpcom/rdf/rdfparser.js index bbfa0f10e..b88cd641e 100644 --- a/chrome/content/zotero/xpcom/rdf/rdfparser.js +++ b/chrome/content/zotero/xpcom/rdf/rdfparser.js @@ -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 diff --git a/chrome/content/zotero/xpcom/translation/translate.js b/chrome/content/zotero/xpcom/translation/translate.js index ca827f806..d6b34e52e 100644 --- a/chrome/content/zotero/xpcom/translation/translate.js +++ b/chrome/content/zotero/xpcom/translation/translate.js @@ -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();