@bahulneel/rdflib
Version:
an RDF library for node.js. Suitable for client and server side.
137 lines (112 loc) • 4.87 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _nodeInternal = _interopRequireDefault(require("./node-internal"));
var _types = require("./types");
var _defaultGraphUri = require("./utils/default-graph-uri");
/** A Statement represents an RDF Triple or Quad. */
var Statement =
/*#__PURE__*/
function () {
/** The subject of the triple. What the Statement is about. */
/** The relationship which is asserted between the subject and object */
/** The thing or data value which is asserted to be related to the subject */
/**
* The graph param is a named node of the document in which the triple when
* it is stored on the web.
*/
/**
* Construct a new statement
*
* @param subject - The subject of the triple. What the fact is about
* @param predicate - The relationship which is asserted between the subject and object
* @param object - The thing or data value which is asserted to be related to the subject
* @param {NamedNode} graph - The document where the triple is or was or will be stored on the web.
*
* The graph param is a named node of the document in which the triple when it is stored
* on the web. It exists because when you have read data from various places in the web,
* the “graph” tells you _why_ you have the triple. (At the moment, it is just the
* document, in future it could be an inference step)
*
* When you do UpdateManager.update() then the graph’s of all the statements must be the same,
* and give the document you are patching. In future, we may have a more
* powerful update() which can update more than one document.
*/
function Statement(subject, predicate, object, graph) {
(0, _classCallCheck2.default)(this, Statement);
(0, _defineProperty2.default)(this, "subject", void 0);
(0, _defineProperty2.default)(this, "predicate", void 0);
(0, _defineProperty2.default)(this, "object", void 0);
(0, _defineProperty2.default)(this, "graph", void 0);
this.subject = _nodeInternal.default.fromValue(subject);
this.predicate = _nodeInternal.default.fromValue(predicate);
this.object = _nodeInternal.default.fromValue(object);
this.graph = graph == undefined ? _defaultGraphUri.defaultGraphNode : _nodeInternal.default.fromValue(graph); // property currently used by rdflib
}
/** @deprecated use {graph} instead */
(0, _createClass2.default)(Statement, [{
key: "equals",
/**
* Checks whether two statements are the same
* @param other - The other statement
*/
value: function equals(other) {
return other.subject.equals(this.subject) && other.predicate.equals(this.predicate) && other.object.equals(this.object) && other.graph.equals(this.graph);
}
/**
* Creates a statement with the bindings substituted
* @param bindings The bindings
*/
}, {
key: "substitute",
value: function substitute(bindings) {
var y = new Statement(this.subject.substitute(bindings), this.predicate.substitute(bindings), this.object.substitute(bindings), this.graph.substitute(bindings)); // 2016
console.log('@@@ statement substitute:' + y);
return y;
}
/** Creates a canonical string representation of this statement. */
}, {
key: "toCanonical",
value: function toCanonical() {
var terms = [this.subject.toCanonical(), this.predicate.toCanonical(), this.object.toCanonical()];
if (this.graph && this.graph.termType !== _types.DefaultGraphTermType) {
terms.push(this.graph.toCanonical());
}
return terms.join(' ') + ' .';
}
/** Creates a n-triples string representation of this statement */
}, {
key: "toNT",
value: function toNT() {
return [this.subject.toNT(), this.predicate.toNT(), this.object.toNT()].join(' ') + ' .';
}
/** Creates a n-quads string representation of this statement */
}, {
key: "toNQ",
value: function toNQ() {
return [this.subject.toNT(), this.predicate.toNT(), this.object.toNT(), this.graph.toNT()].join(' ') + ' .';
}
/** Creates a string representation of this statement */
}, {
key: "toString",
value: function toString() {
return this.toNT();
}
}, {
key: "why",
get: function get() {
return this.graph;
},
set: function set(g) {
this.graph = g;
}
}]);
return Statement;
}();
exports.default = Statement;