diff --git a/CHANGELOG.md b/CHANGELOG.md index cece4ba3..90c03325 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -166,6 +166,7 @@ - **BREAKING**: Remove deprecated `loadDocument` API and obsolete `DocumentCache`. - **BREAKING**: Remove deprecated support for parsing legacy dataset format. +- **BREAKING**: RDFa parser moved to `jsonld-rdfa` package. ## 1.8.1 - 2019-10-24 diff --git a/lib/Rdfa.js b/lib/Rdfa.js deleted file mode 100644 index d4c23617..00000000 --- a/lib/Rdfa.js +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 2017 Digital Bazaar, Inc. All rights reserved. - */ -/* global Node, XMLSerializer */ -'use strict'; - -const { - RDF_LANGSTRING, - RDF_PLAIN_LITERAL, - RDF_OBJECT, - RDF_XML_LITERAL, - XSD_STRING, -} = require('./constants'); - -let _Node; -if(typeof Node !== 'undefined') { - _Node = Node; -} else { - _Node = { - ELEMENT_NODE: 1, - ATTRIBUTE_NODE: 2, - TEXT_NODE: 3, - CDATA_SECTION_NODE: 4, - ENTITY_REFERENCE_NODE: 5, - ENTITY_NODE: 6, - PROCESSING_INSTRUCTION_NODE: 7, - COMMENT_NODE: 8, - DOCUMENT_NODE: 9, - DOCUMENT_TYPE_NODE: 10, - DOCUMENT_FRAGMENT_NODE: 11, - NOTATION_NODE: 12 - }; -} - -module.exports = class Rdfa { - /** - * Parses the RDF dataset found via the data object from the RDFa API. - * - * @param data the RDFa API data object. - * - * @return the RDF dataset. - */ - parse(data) { - const dataset = {}; - dataset['@default'] = []; - - const subjects = data.getSubjects(); - for(let si = 0; si < subjects.length; ++si) { - const subject = subjects[si]; - if(subject === null) { - continue; - } - - // get all related triples - const triples = data.getSubjectTriples(subject); - if(triples === null) { - continue; - } - const predicates = triples.predicates; - for(const predicate in predicates) { - // iterate over objects - const objects = predicates[predicate].objects; - for(let oi = 0; oi < objects.length; ++oi) { - const object = objects[oi]; - - // create RDF triple - const triple = {}; - - // add subject - if(subject.indexOf('_:') === 0) { - triple.subject = {type: 'blank node', value: subject}; - } else { - triple.subject = {type: 'IRI', value: subject}; - } - - // add predicate - if(predicate.indexOf('_:') === 0) { - triple.predicate = {type: 'blank node', value: predicate}; - } else { - triple.predicate = {type: 'IRI', value: predicate}; - } - - // serialize XML literal - let value = object.value; - if(object.type === RDF_XML_LITERAL) { - // initialize XMLSerializer - const XMLSerializer = getXMLSerializerClass(); - const serializer = new XMLSerializer(); - value = ''; - for(let x = 0; x < object.value.length; x++) { - if(object.value[x].nodeType === _Node.ELEMENT_NODE) { - value += serializer.serializeToString(object.value[x]); - } else if(object.value[x].nodeType === _Node.TEXT_NODE) { - value += object.value[x].nodeValue; - } - } - } - - // add object - triple.object = {}; - - // object is an IRI - if(object.type === RDF_OBJECT) { - if(object.value.indexOf('_:') === 0) { - triple.object.type = 'blank node'; - } else { - triple.object.type = 'IRI'; - } - } else { - // object is a literal - triple.object.type = 'literal'; - if(object.type === RDF_PLAIN_LITERAL) { - if(object.language) { - triple.object.datatype = RDF_LANGSTRING; - triple.object.language = object.language; - } else { - triple.object.datatype = XSD_STRING; - } - } else { - triple.object.datatype = object.type; - } - } - triple.object.value = value; - - // add triple to dataset in default graph - dataset['@default'].push(triple); - } - } - } - - return dataset; - } -}; - -function getXMLSerializerClass() { - if(typeof XMLSerializer === 'undefined') { - return require('xmldom').XMLSerializer; - } - return XMLSerializer; -} diff --git a/lib/jsonld.js b/lib/jsonld.js index 9aaa7133..d6eea661 100644 --- a/lib/jsonld.js +++ b/lib/jsonld.js @@ -40,7 +40,6 @@ const IdentifierIssuer = util.IdentifierIssuer; const JsonLdError = require('./JsonLdError'); const LRU = require('lru-cache'); const NQuads = require('./NQuads'); -const Rdfa = require('./Rdfa'); const {expand: _expand} = require('./expand'); const {flatten: _flatten} = require('./flatten'); @@ -989,9 +988,6 @@ jsonld.unregisterRDFParser = function(contentType) { jsonld.registerRDFParser('application/n-quads', NQuads.parse); jsonld.registerRDFParser('application/nquads', NQuads.parse); -// register the RDFa API RDF parser -jsonld.registerRDFParser('rdfa-api', Rdfa.parse); - /* URL API */ jsonld.url = require('./url'); diff --git a/package.json b/package.json index 7052d173..0154fb8e 100644 --- a/package.json +++ b/package.json @@ -35,8 +35,7 @@ "object.fromentries": "^2.0.2", "rdf-canonize": "^2.0.1", "request": "^2.88.0", - "semver": "^6.3.0", - "xmldom": "0.1.19" + "semver": "^6.3.0" }, "devDependencies": { "@babel/cli": "^7.7.5", @@ -86,8 +85,8 @@ }, "keywords": [ "JSON", - "Linked Data", "JSON-LD", + "Linked Data", "RDF", "Semantic Web", "jsonld" @@ -124,7 +123,6 @@ "jsonld-request": false, "request": false, "url": false, - "util": false, - "xmldom": false + "util": false } }