graph-rdfa-processor
Version:
Green turtle GraphRdfaProcessor extracted and available as a commonJS module
256 lines (202 loc) • 9.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _rdfaProcessor = _interopRequireDefault(require("./rdfa-processor"));
var _rdfaGraph = require("./rdfa-graph");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
var GraphRDFaProcessor =
/*#__PURE__*/
function (_RDFaProcessor) {
_inherits(GraphRDFaProcessor, _RDFaProcessor);
function GraphRDFaProcessor(target) {
_classCallCheck(this, GraphRDFaProcessor);
return _possibleConstructorReturn(this, _getPrototypeOf(GraphRDFaProcessor).call(this, target));
}
_createClass(GraphRDFaProcessor, [{
key: "getObjectSize",
value: function getObjectSize(obj) {
var size = 0;
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
size++;
}
}
return size;
}
}, {
key: "init",
value: function init() {
var thisObj = this;
this.finishedHandlers.push(function (node) {
for (var subject in thisObj.target.graph.subjects) {
var snode = thisObj.target.graph.subjects[subject];
if (thisObj.getObjectSize(snode.predicates) == 0) {
delete thisObj.target.graph.subjects[subject];
}
}
});
}
}, {
key: "newBlankNode",
value: function newBlankNode() {
return this.target.graph.newBlankNode();
}
}, {
key: "newSubjectOrigin",
value: function newSubjectOrigin(origin, subject) {
var snode = this.newSubject(null, subject);
for (var i = 0; i < snode.origins.length; i++) {
if (snode.origins[i] === origin) {
return;
}
}
snode.origins.push(origin);
if (!origin.data) {
Object.defineProperty(origin, "data", {
value: snode,
writable: false,
configurable: true,
enumerable: true
});
}
}
}, {
key: "newSubject",
value: function newSubject(origin, subject) {
var snode = this.target.graph.subjects[subject];
if (!snode) {
snode = new _rdfaGraph.RDFaSubject(this.target.graph, subject);
this.target.graph.subjects[subject] = snode;
}
return snode;
}
}, {
key: "addTriple",
value: function addTriple(origin, subject, predicate, object) {
var snode = this.newSubject(origin, subject);
var pnode = snode.predicates[predicate];
if (!pnode) {
pnode = new _rdfaGraph.RDFaPredicate(predicate);
snode.predicates[predicate] = pnode;
}
for (var i = 0; i < pnode.objects.length; i++) {
if (pnode.objects[i].type == object.type && pnode.objects[i].value == object.value) {
if (pnode.objects[i].origin !== origin) {
if (!Array.isArray(pnode.objects[i].origin)) {
var origins = [];
origins.push(pnode.objects[i].origin);
pnode.objects[i].origin = origins;
}
pnode.objects[i].origin.push(origin);
}
return;
}
}
pnode.objects.push(object);
object.origin = origin;
if (predicate == _rdfaProcessor.default.typeURI) {
snode.types.push(object.value);
}
}
}, {
key: "copyProperties",
value: function copyProperties() {
var copySubjects = [];
var patternSubjects = {};
for (var subject in this.target.graph.subjects) {
var snode = this.target.graph.subjects[subject];
var pnode = snode.predicates[GraphRDFaProcessor.rdfaCopyPredicate];
if (!pnode) {
continue;
}
copySubjects.push(subject);
for (var i = 0; i < pnode.objects.length; i++) {
if (pnode.objects[i].type != _rdfaProcessor.default.objectURI) {
continue;
}
var target = pnode.objects[i].value;
var patternSubjectNode = this.target.graph.subjects[target];
if (!patternSubjectNode) {
continue;
}
var patternTypes = patternSubjectNode.predicates[_rdfaProcessor.default.typeURI];
if (!patternTypes) {
continue;
}
var isPattern = false;
for (var j = 0; j < patternTypes.objects.length && !isPattern; j++) {
if (patternTypes.objects[j].value == GraphRDFaProcessor.rdfaPatternType && patternTypes.objects[j].type == _rdfaProcessor.default.objectURI) {
isPattern = true;
}
}
if (!isPattern) {
continue;
}
patternSubjects[target] = true;
for (var predicate in patternSubjectNode.predicates) {
var targetPNode = patternSubjectNode.predicates[predicate];
if (predicate == _rdfaProcessor.default.typeURI) {
if (targetPNode.objects.length == 1) {
continue;
}
for (var j = 0; j < targetPNode.objects.length; j++) {
if (targetPNode.objects[j].value != GraphRDFaProcessor.rdfaPatternType) {
var subjectPNode = snode.predicates[predicate];
if (!subjectPNode) {
subjectPNode = new _rdfaGraph.RDFaPredicate(predicate);
snode.predicates[predicate] = subjectPNode;
}
subjectPNode.objects.push({
type: targetPNode.objects[j].type,
value: targetPNode.objects[j].value,
language: targetPNode.objects[j].language,
origin: targetPNode.objects[j].origin
});
snode.types.push(targetPNode.objects[j].value);
}
}
} else {
var subjectPNode = snode.predicates[predicate];
if (!subjectPNode) {
subjectPNode = new _rdfaGraph.RDFaPredicate(predicate);
snode.predicates[predicate] = subjectPNode;
}
for (var j = 0; j < targetPNode.objects.length; j++) {
subjectPNode.objects.push({
type: targetPNode.objects[j].type,
value: targetPNode.objects[j].value,
language: targetPNode.objects[j].language,
origin: targetPNode.objects[j].origin
});
}
}
}
}
}
for (var i = 0; i < copySubjects.length; i++) {
var snode = this.target.graph.subjects[copySubjects[i]];
delete snode.predicates[GraphRDFaProcessor.rdfaCopyPredicate];
}
for (var subject in patternSubjects) {
delete this.target.graph.subjects[subject];
}
}
}]);
return GraphRDFaProcessor;
}(_rdfaProcessor.default);
exports.default = GraphRDFaProcessor;
;
GraphRDFaProcessor.rdfaCopyPredicate = "http://www.w3.org/ns/rdfa#copy";
GraphRDFaProcessor.rdfaPatternType = "http://www.w3.org/ns/rdfa#Pattern";
module.exports = exports.default;