1.0.0-alpha.27 • Published 2 years ago
@shexjs/writer v1.0.0-alpha.27
@shexjs/writer
install
npm install --save @shexjs/writerQuick Start
Invoke from the command line:
node -e 'new (require("@shexjs/writer"))()
  .writeSchema(
    {
      "type": "Schema",
      "shapes": [
        {
          "id": "http://a.example/S1",
          "type": "Shape",
          "expression": {
            "type": "TripleConstraint",
            "predicate": "http://a.example/p1",
            "valueExpr": {
              "type": "NodeConstraint",
              "values": [
                {
                  "value": "1",
                  "type": "http://www.w3.org/2001/XMLSchema#integer"
                },
                {
                  "value": "2",
                  "type": "http://www.w3.org/2001/XMLSchema#integer"
                }
              ]
            }
          }
        }
      ]
    },
    (error, text, prefixes) => {
      if (error)
        throw error;
      console.log(text);
    })'The result is a ShExJ expression of the input schema:
<http://a.example/S1> {
  <http://a.example/p1> [1 2]
}option: base - Base IRI for terse relative URLs
Providing a Base IRI (see MDN docs for URL) allows you to parse schemas with relative URLs for e.g. shape and property names:
node -e 'new (require("@shexjs/writer"))({
    base: "http://a.example/"
  })
  .writeSchema(
    {
      "type": "Schema",
      "shapes": [
        {
          "id": "http://a.example/S1",
          "type": "Shape",
          "expression": {
            "type": "TripleConstraint",
            "predicate": "http://a.example/p1",
            "valueExpr": {
              "type": "NodeConstraint",
              "values": [
                {
                  "value": "1",
                  "type": "http://www.w3.org/2001/XMLSchema#integer"
                },
                {
                  "value": "2",
                  "type": "http://www.w3.org/2001/XMLSchema#integer"
                }
              ]
            }
          }
        }
      ]
    },
    (error, text, prefixes) => {
      if (error)
        throw error;
      console.log(text);
    })'BASE <http://a.example/>
<S1> {
  <p1> [1 2]
}option: prefixes - Pre-loaded namespace prefixes
A second parameter to construct is a map for prefixes that are not defined in the schema:
node -e 'new (require("@shexjs/writer"))({
    base: "http://a.example/",
    prefixes: {
      "": "http://a.example/path/path3#",
      v: "http://a.example/vocab#"
    }
  })
  .writeSchema(
    {
      "type": "Schema",
      "shapes": [
        {
          "id": "http://a.example/path/S1",
          "type": "Shape",
          "expression": {
            "type": "TripleConstraint",
            "predicate": "http://a.example/path/path3#p1",
            "valueExpr": {
              "type": "NodeConstraint",
              "values": [
                "http://a.example/vocab#v1",
                "http://a.example/vocab#v2"
              ]
            }
          }
        }
      ]
    },
    (error, text, prefixes) => {
      if (error)
        throw error;
      console.log(text);
    })'PREFIX : <http://a.example/path/path3#>
PREFIX v: <http://a.example/vocab#>
BASE <http://a.example/>
<path/S1> {
  :p1 [v:v1 v:v2]
}option: simplifyParentheses
simplifyParentheses: true eliminates ()s to the degree possible using the ShExC parsing precedunce rules. For example, a ()'d EachOf expression:
<S1> {
(    <p1> . ;
     <p2> @<S2>?)
}will be serialized without the ()s:
<S1> {
    <p1> . ;
    <p2> @<S2>?
}Lerna Monorepo
This repo uses lerna to manage multiple NPM packages. These packages are located in packages/*:
- shape-map-- a ShapeMap parser
- @shexjs/parser-- parse ShExC into ShExJ
- @shexjs/writer-- serialize ShExK as ShExC
- @shexjs/term-- RDF terms uses in ShEx
- @shexjs/util-- some utilities for transforming schemas or validation output
- @shexjs/visitor-- a visitor for schemas
- @shexjs/validator-- validate nodes in an RDF graph against shapes in a schema
- @shexjs/eval-validator-api-- API called by- @shexjs/validatorfor validating Shapes, with tripleExpressions and EXTENDS etc.
- @shexjs/eval-simple-1err-- Implementation of- @shexjs/eval-validator-apiwhich reports only one error.
- @shexjs/eval-threaded-nerr-- Implementation of- @shexjs/eval-validator-apiwhich exhaustively enumerate combinations of ways the data fails to satisfy a shape's expression.
- @shexjs/loader-- an API for loading and using ShEx schemas
- @shexjs/node-- additional API functionality for a node environment
- @shexjs/cli-- a set of command line tools for transformaing and validating with schemas
- @shexjs/webapp-- the shex-simple WEBApp
- @shexjs/shape-path-query-- traverse ShEx schemas with a path language
- @shexjs/extension-test-- a small language for testing semantic actions in ShEx implementations (more)
- @shexjs/extension-map-- an extension for transforming data from one schema to another (more)
- @shexjs/extension-eval-- simple extension which evaluates Javascript semantic action code (more)
1.0.0-alpha.27
2 years ago
1.0.0-alpha.25
3 years ago
1.0.0-alpha.24
3 years ago
1.0.0-alpha.22
3 years ago
1.0.0-alpha.19
4 years ago
1.0.0-alpha.15
4 years ago
1.0.0-alpha.12
4 years ago
