rdflib
Version:
an RDF library for node.js. Suitable for client and server side.
46 lines • 1.26 kB
JavaScript
import Collection from '../collection';
import CanonicalDataFactory from './canonical-data-factory';
import { CollectionTermType } from '../types';
import { Feature } from './factory-types';
import { isCollection, isVariable } from '../utils/terms';
import Variable from '../variable';
/**
* Data factory which also supports Collections
*
* Necessary for preventing circular dependencies.
*/
const ExtendedTermFactory = {
...CanonicalDataFactory,
supports: {
[Feature.collections]: true,
[Feature.defaultGraphType]: false,
[Feature.equalsMethod]: true,
[Feature.identity]: false,
[Feature.id]: true,
[Feature.reversibleId]: false,
[Feature.variableType]: true
},
/**
* Creates a new collection
* @param elements - The initial element
*/
collection(elements) {
return new Collection(elements);
},
id(term) {
if (isCollection(term)) {
return Collection.toNT(term);
}
if (isVariable(term)) {
return Variable.toString(term);
}
return CanonicalDataFactory.id(term);
},
termToNQ(term) {
if (term.termType === CollectionTermType) {
return Collection.toNT(term);
}
return CanonicalDataFactory.termToNQ(term);
}
};
export default ExtendedTermFactory;