@shexjs/term
v1.0.0-alpha.29
Published
Shape Expressions triple expression evaluator - simple regexp returning 1 error.
Readme
@shexjs/term
RDF terms as ShEx uses them: conversions between RDF/JS terms, ShExJ's JSON-LD-style values, and Turtle lexical forms — plus the Start sentinel and the string-unescaping shared by the ShExC and ShapeMap parsers.
Install
npm install @shexjs/termQuick start
const Term = require("@shexjs/term");
const {DataFactory} = require("n3");
// RDF/JS term → ShExJ value (an IRI is a string; a literal is an object)
Term.rdfJsTerm2Ld(DataFactory.namedNode("http://a.example/n1"));
// 'http://a.example/n1'
Term.rdfJsTerm2Ld(DataFactory.literal("chat", "fr"));
// { value: 'chat', language: 'fr' }
// … and back
Term.ld2RdfJsTerm({value: "chat", language: "fr"});
// a Literal RDF/JS term for "chat"@fr
// either form → Turtle lexical form
Term.rdfJsTerm2Turtle(DataFactory.literal("chat", "fr")); // '"chat"@fr'
Term.shExJsTerm2Turtle("http://a.example/n1"); // '<http://a.example/n1>'What's here
rdfJsTerm2Ld(term)/ld2RdfJsTerm(ld)— between RDF/JS terms and the values ShExJ writes (IRI as string,_:‑prefixed blank node, literal as{value, type?, language?}).rdfJsTerm2Turtle(term, meta?)/shExJsTerm2Turtle(term, meta?)— render a term in Turtle, abbreviating withmeta'sbaseandprefixeswhen given.Start/isStart(x)— the sentinel a shape map uses to say "the schema's start shape":{node, shape: Start}. There is one frozenStartobject;isStartalso recognizes a structural clone ({term: "START"}), which is what survives apostMessageacross a worker boundary.unescapeText(string, replacements)— the\uXXXX/\U…(and caller-supplied) escape decoding that the ShExC and ShapeMap grammars share.RdfLangString,XsdString— the two implicit literal datatypes.Terminals— regular expressions for RDF terminal productions (IRIREF,PNAME_LN, …).- Types used across the suite:
SchemaIndex,ShapeMapEntry,Metaand friends.
This package sits under everything else in the suite (the parsers, the validator, the neighborhoods), so it is versioned independently and depends on nothing else in it.
@shexjs/term is one of the shex.js packages; installing shex pulls in the whole suite, and its README maps them.
