rdf-ext
Version:
RDF-Ext is a developer-friendly extension for RDF/JS
75 lines (60 loc) • 1.67 kB
JavaScript
import fromTerm from '@rdfjs/data-model/lib/fromTerm.js'
import BlankNode from './lib/BlankNode.js'
import DefaultGraph from './lib/DefaultGraph.js'
import Literal from './lib/Literal.js'
import NamedNode from './lib/NamedNode.js'
import Quad from './lib/Quad.js'
import Variable from './lib/Variable.js'
const langStringDatatype = new NamedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString')
const stringDatatype = new NamedNode('http://www.w3.org/2001/XMLSchema#string')
class DataFactory {
init () {
this._data = {
blankNodeCounter: 0,
defaultGraph: new DefaultGraph()
}
}
namedNode (value) {
if (typeof value !== 'string') {
value = value.toString()
}
return new NamedNode(value)
}
blankNode (value) {
value = value || ('b' + (++this._data.blankNodeCounter))
return new BlankNode(value)
}
literal (value, languageOrDatatype) {
if (typeof languageOrDatatype === 'string') {
return new Literal(value, languageOrDatatype, langStringDatatype)
} else {
return new Literal(value, '', languageOrDatatype || stringDatatype)
}
}
variable (value) {
return new Variable(value)
}
defaultGraph () {
return this._data.defaultGraph
}
quad (subject, predicate, object, graph = this.defaultGraph()) {
return new Quad(subject, predicate, object, graph)
}
fromTerm (original) {
return fromTerm(this, original)
}
fromQuad (original) {
return fromTerm(this, original)
}
}
DataFactory.exports = [
'namedNode',
'blankNode',
'literal',
'variable',
'defaultGraph',
'quad',
'fromTerm',
'fromQuad'
]
export default DataFactory