Merge pull request #453 from aurimasv/rdflib-rdf-value
Correctly handle literals with attributes in RDF
This commit is contained in:
commit
015b37a85e
2 changed files with 10 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Add table
Reference in a new issue