From 485919e0e4a93cc13309537041a4d2cbe44c4760 Mon Sep 17 00:00:00 2001 From: Eric Prud'hommeaux Date: Fri, 2 Oct 2026 01:02:36 -0500 Subject: [PATCH] SPIKE: YAML-LD manifests in place of the authoritative Turtle Beside each */manifest.ttl, a manifest.yaml that says the same thing: - bin/ttl2yamlld.js writes it from the Turtle heuristically -- a transliteration of the token stream (a comment-keeping lexer, a parser for the shape a manifest has, an emitter driven by the context), not a parse to a graph and back -- so every comment comes across, where it was. The mf:entries collection and the definitions become one list of the tests themselves, in the collection's order. - manifest-context.jsonld is the context under which that YAML is, as JSON-LD, the same RDF graph as the Turtle. context.jsonld is not: it maps schema, data, shape and focus into sx: where the Turtle says sht:, and has no term for trait. - bin/yaml2jsonld.js writes from the YAML the manifest.jsonld that bin/genJSON.js writes from the Turtle, byte for byte, for all five manifests. shex.js (branch manifest-refactor) holds the evidence: packages/shex-manifest/test/TestSuiteManifest-spike-test.js checks, per manifest, that the YAML is what the converter writes, carries every comment line, is the Turtle's graph (canonical N-Quads equal), and derives the committed manifest.jsonld; and TEST_yaml_manifest=true runs its validation and parser suites (5708 tests) from the YAML. js-yaml joins the devDependencies for yaml2jsonld's command line. Co-Authored-By: Claude Fable 5.1 vocab: mk_vocab.js maintains a second vocabulary, the ShEx manifest vocabulary http://www.w3.org/ns/shex-manifest#, from vocab/manifest-vocab.csv: what a manifest of ShEx validations is written in -- Manifest and Entry, entries (an ordered list), name, an entry's schema, data and queryMap with their ...URL (by reference) and ...Label spellings -- with a context that also has comment (rdfs:comment) and node, shape and status aliased to the ShEx vocabulary's own shape-map terms. The test suite's manifests and implementations' example manifests share it. mk_vocab.js takes --vocab shex|shex-manifest; what was hard-wired to the ShEx vocabulary (prefix, title, description, file names, the page's abstract) is per-vocabulary configuration. The ShEx outputs are byte-identical before and after. Co-Authored-By: Claude Fable 5.1 SPIKE: the manifests in the ShEx manifest vocabulary, the legacy Turtle generated from them manifest.yaml (beside each */manifest.ttl) is no longer the Turtle transliterated: it is the manifest in the format implementations use for their own examples -- the ShEx manifest vocabulary (https://www.w3.org/ns/shex-manifest, vocab/manifest-vocab.csv) plus this suite's terms (manifest-context.jsonld) -- so the legacy expression goes: - no test is typed: a validation test is an entry with a status, conformant or nonconformant; a schema that must be rejected says how (schemaError: syntax | structure); a representation test names its schema's three serializations; - an entry is named (name), its inputs are its own (no mf:action node), and approval is what mf:status was; - entries is one list of the tests themselves, in mf:entries order; - no @base: a reference is relative to the manifest. bin/manifest-terms.js is the one table of which key is which legacy predicate. bin/ttl2yamlld.js (the migration, comments carried across) reads it one way; bin/yaml2ttl.js, new, and bin/yaml2jsonld.js read it the other way and write the legacy manifest.ttl and manifest.jsonld from the YAML. For all five manifests the generated Turtle's graph is the original's and the generated manifest.jsonld is the committed file byte for byte, so nothing was lost; shex.js's spike test checks it. Quirks of the Turtle carried so that it can be written back: one test whose mf:name is not its fragment keeps both; mf:proposed/mf:Proposed stay distinct approval values; negativeStructure's mf:comment arcs stay mf:comment. Co-Authored-By: Claude Fable 5.1 SPIKE: a blank-node or literal focus is a query map, not a node node and shape are IRI references. A focus node that is a blank node or a literal (31 validation tests), or a shape that is a blank node, is now written as a ShapeMap association -- queryMap: "_:abcd@" -- because that is text. As a JSON-LD node reference a blank node's label does not survive (a processor relabels it), and the label is what those tests are about; a literal is no reference at all. bin/manifest-terms.js parses and writes the association; yaml2ttl and yaml2jsonld put sht:focus and sht:shape back from it. The generated Turtle and manifest.jsonld are still the originals, graph for graph and byte for byte. Co-Authored-By: Claude Fable 5.1 SPIKE: README says what shex.js checks of the YAML manifests, and what a reader of their graph should know The claim that shex.js's validate runs validation/manifest.yaml as it runs its own examples was loose: validate runs the entries but does not compare them with their status. What is checked (shex.js, branch manifest-refactor, packages/shex-manifest/test/TestSuiteManifest-spike-test.js): each manifest read as JSON-LD drops nothing; @shexjs/manifest reads all five, plainly and as JSON-LD, into the same entries; and shex.js's examples runner gets the stated status for the 1239 of 1309 validation entries that need only what an example does. Also notes that an entry is identified by its name, so the 23 test-to-test references are IRIs the YAML's own graph does not describe (the generated Turtle does), and that the contexts are published only once this is. Co-Authored-By: Claude Fable 5.1 --- README.md | 42 + bin/manifest-terms.js | 134 + bin/ttl2yamlld.js | 632 ++ bin/yaml2jsonld.js | 112 + bin/yaml2ttl.js | 145 + manifest-context.jsonld | 32 + negativeStructure/manifest.yaml | 190 + negativeSyntax/manifest.yaml | 952 ++ package-lock.json | 46 + package.json | 2 + schemas/manifest.yaml | 3087 +++++++ validation-contrib/manifest.yaml | 96 + validation/manifest.yaml | 13924 +++++++++++++++++++++++++++++ vocab/README.md | 17 + vocab/manifest-vocab.csv | 25 + vocab/mk_vocab.js | 192 +- 16 files changed, 19573 insertions(+), 55 deletions(-) create mode 100644 bin/manifest-terms.js create mode 100755 bin/ttl2yamlld.js create mode 100755 bin/yaml2jsonld.js create mode 100755 bin/yaml2ttl.js create mode 100644 manifest-context.jsonld create mode 100644 negativeStructure/manifest.yaml create mode 100644 negativeSyntax/manifest.yaml create mode 100644 schemas/manifest.yaml create mode 100644 validation-contrib/manifest.yaml create mode 100644 validation/manifest.yaml create mode 100644 vocab/manifest-vocab.csv diff --git a/README.md b/README.md index 882ee394..e230da5d 100644 --- a/README.md +++ b/README.md @@ -83,3 +83,45 @@ them: disagree about what a schema may say, with the evidence for each. Notably, ShExR admits a `ShapeDecl` as `start` where neither of the others can express one. + +## SPIKE: YAML-LD manifests (branch `manifest-refactor`) + +Can the manifests drop their authoritative Turtle -- the SPARQL WG's test-manifest format -- for the YAML-LD manifest format ShEx implementations use for their own examples? Beside each `*/manifest.ttl` this branch has a `manifest.yaml` that says the same thing in that format: + +``` yaml +"@context": + - https://www.w3.org/ns/shex-manifest.jsonld + - ../manifest-context.jsonld +comment: "ShEx validation tests" +entries: + ## empty { + - name: "0_empty" + status: conformant + trait: [Empty] + comment: " { } on { }" + approval: Approved + schemaURL: ../schemas/0.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/dummy +``` + +* Nothing types a test. A validation test is an entry with a `status`, and the status says what `sht:ValidationTest` and `sht:ValidationFailure` said: `conformant` or `nonconformant`. A schema that must be rejected says how (`schemaError: syntax` or `structure`); a representation test names the schema's three serializations (`schemaURL`, `shexjURL`, `shexrURL`). +* An entry is named (`name`), where the Turtle had both `<#name>` and `mf:name`; its inputs are its own, where the Turtle had an `mf:action` node; `approval` is what `mf:status` was, since `status` is the outcome expected. +* `node` and `shape` are IRIs. A focus node that is a blank node or a literal is said as a query map instead -- `queryMap: "_:abcd@"` -- because that is text: read as JSON-LD, a blank node's label would be lost, and the label is the point of those tests. +* One list replaces the Turtle's two: `entries` holds the tests themselves, in `mf:entries` order, so a test cannot be listed and not defined, or defined and not listed. +* The vocabulary is the [ShEx manifest vocabulary](https://www.w3.org/ns/shex-manifest) (`entries`, `name`, `schema`/`data`/`queryMap` with their `URL` and `Label` spellings, `comment`, and `node`, `shape`, `status` from the ShEx vocabulary), whose source is [`vocab/manifest-vocab.csv`](vocab/manifest-vocab.csv), plus this suite's own terms in [`manifest-context.jsonld`](manifest-context.jsonld). Read as JSON-LD, a manifest is an RDF graph in those vocabularies. + +The scripts, with [`bin/manifest-terms.js`](bin/manifest-terms.js) as the one table of which key is which legacy predicate: + +* `bin/ttl2yamlld.js manifest.ttl > manifest.yaml` is the migration: it writes the YAML from the Turtle *heuristically* -- from the token stream, not from a graph -- so the Turtle's comments come across, each where it was. +* `bin/yaml2ttl.js manifest.yaml > manifest.ttl` writes the legacy Turtle from the YAML, for the implementations that read it. Its graph is the graph of the Turtle the YAML came from, for all five manifests: nothing was lost. +* `bin/yaml2jsonld.js manifest.yaml > manifest.jsonld` writes the `manifest.jsonld` that `bin/genJSON.js` writes from the Turtle, byte for byte. + +shex.js's `packages/shex-manifest/test/TestSuiteManifest-spike-test.js` (its own `manifest-refactor` branch) checks all of that, and `TEST_yaml_manifest=true` drives its validation and parser suites from the YAML. It also checks that these manifests are what they set out to be, the format of shex.js's own examples manifests: + +* read as JSON-LD, each is a graph in which nothing it says is dropped; +* `@shexjs/manifest`, the reader for shex.js's examples, reads all five, and what it reads plainly is what a JSON-LD processor reads (`negativeStructure`'s seven `mf:comment` keys, carried across as they were, are the one thing that needs the processor); +* shex.js's examples runner, which knows nothing of this suite, gets the `status` each validation entry states -- for all 1239 of the 1309 that need only what an example does. The other 70 need an import, a semantic-action extension, a query map in a file, or a literal focus or blank-node shape in a query map. + +Two things a reader of the graph should know. An entry is identified by its `name`, not by an IRI, so a reference from one test to another (`sameSemanticsAs: "#1dotRefLNex1"`, 23 of them) names an IRI the YAML's graph says nothing else about; `bin/yaml2ttl.js` gives each entry that IRI, `<#name>`, in the Turtle. And the context is published only once this branch is: until then `https://www.w3.org/ns/shex-manifest.jsonld` and `manifest-context.jsonld` are found in the checkouts (shex.js carries a copy of both). diff --git a/bin/manifest-terms.js b/bin/manifest-terms.js new file mode 100644 index 00000000..0a66b3a2 --- /dev/null +++ b/bin/manifest-terms.js @@ -0,0 +1,134 @@ +/* manifest-terms - SPIKE: the correspondence between this suite's YAML-LD + * manifests and the legacy Turtle. + * + * The YAML-LD manifests (manifest.yaml in each suite directory) are written + * in the ShEx manifest vocabulary (https://www.w3.org/ns/shex-manifest, the + * one implementations' own example manifests use) plus this suite's own + * terms (../manifest-context.jsonld). The legacy manifest.ttl is the + * SPARQL WG's test-manifest format: mf:Manifest and mf:entries, each test + * typed sht:ValidationTest, sht:ValidationFailure, ... with its inputs in + * an mf:action node. + * + * bin/ttl2yamlld.js reads this table left to right (to write the YAML from + * the Turtle, once, with its comments); bin/yaml2ttl.js and + * bin/yaml2jsonld.js read it right to left (to write the legacy files from + * the YAML, from now on). + * + * What a row says: `key` in an entry is `legacy` in the Turtle, on the test + * itself (`in: "test"`), in its mf:action node (`"action"`), or in a member + * of its mf:extensionResults list (`"ext"`). `kind` is how the value is + * written: + * iri an IRI reference, as written (relative stays relative) + * term an IRI, a blank node ("_:x"), or a literal ({"@value", "@type"}) + * names sht: names without their namespace, as a list + * mfname an mf: name without its namespace + * text a string + * number an integer + * list a collection of nodes, as a list of mappings + * A validation test's node and shape are IRIs. A focus node that is a + * blank node or a literal (or a shape that is a blank node) cannot be: read + * as JSON-LD, a blank node's label is lost and a literal is not a + * reference. Such a test says the same thing as a query map, in ShapeMap + * syntax, which is text: `queryMap: "_:abcd@"`. + * parseAssociation / writeAssociation go between that and the Turtle's + * sht:focus and sht:shape. + * Several values of one predicate are a list. A reference to another test + * is written as the Turtle wrote it, "#name": an entry is named, and + * # is the IRI the generated Turtle gives it. + * `only` restricts a row to entries of that sort when a key serves two + * (schemaURL is an action's sht:schema in a validation test and the test's + * own sx:shex in a schema test). + */ +"use strict"; + +const PREFIXES = { + rdf: "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + rdfs: "http://www.w3.org/2000/01/rdf-schema#", + mf: "http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#", + sht: "http://www.w3.org/ns/shacl/test-suite#", + sx: "https://shexspec.github.io/shexTest/ns#", + prov: "http://www.w3.org/ns/prov#", + xsd: "http://www.w3.org/2001/XMLSchema#", +}; + +const TERMS = [ + {key: "trait", legacy: "sht:trait", in: "test", kind: "names"}, + {key: "comment", legacy: "rdfs:comment", in: "test", kind: "text"}, + {key: "mf:comment", legacy: "mf:comment", in: "test", kind: "text"}, + {key: "approval", legacy: "mf:status", in: "test", kind: "mfname"}, + {key: "schemaURL", legacy: "sht:schema", in: "action", kind: "iri", only: "validation"}, + {key: "shape", legacy: "sht:shape", in: "action", kind: "term"}, + {key: "dataURL", legacy: "sht:data", in: "action", kind: "iri"}, + {key: "node", legacy: "sht:focus", in: "action", kind: "term"}, + {key: "queryMapURL", legacy: "sht:map", in: "action", kind: "iri"}, + {key: "semActsURL", legacy: "sht:semActs", in: "action", kind: "iri"}, + {key: "shapeExternsURL", legacy: "sht:shapeExterns", in: "action", kind: "iri"}, + {key: "resultURL", legacy: "mf:result", in: "test", kind: "iri"}, + {key: "extensionResults", legacy: "mf:extensionResults", in: "test", kind: "list"}, + {key: "extension", legacy: "mf:extension", in: "ext", kind: "iri"}, + {key: "prints", legacy: "mf:prints", in: "ext", kind: "text"}, + {key: "wasDerivedFrom", legacy: "prov:wasDerivedFrom", in: "test", kind: "iri"}, + {key: "seeAlso", legacy: "rdfs:seeAlso", in: "test", kind: "iri"}, + {key: "sameSemanticsAs", legacy: "mf:sameSemanticsAs", in: "test", kind: "iri"}, + {key: "schemaURL", legacy: "sx:shex", in: "test", kind: "iri", only: "schema"}, + {key: "shexjURL", legacy: "sx:json", in: "test", kind: "iri"}, + {key: "shexrURL", legacy: "sx:ttl", in: "test", kind: "iri"}, + {key: "startRow", legacy: "mf:startRow", in: "test", kind: "number"}, + {key: "startColumn", legacy: "mf:startColumn", in: "test", kind: "number"}, + {key: "endRow", legacy: "mf:endRow", in: "test", kind: "number"}, + {key: "endColumn", legacy: "mf:endColumn", in: "test", kind: "number"}, +]; + +/** the legacy type of a test, and what says it in the YAML: a validation + * test's expected status; a schema test's expected rejection, or none */ +const TYPES = [ + {legacy: "sht:ValidationTest", sort: "validation", says: {status: "conformant"}}, + {legacy: "sht:ValidationFailure", sort: "validation", says: {status: "nonconformant"}}, + {legacy: "sht:NegativeSyntax", sort: "schema", says: {schemaError: "syntax"}}, + {legacy: "sht:NegativeStructure", sort: "schema", says: {schemaError: "structure"}}, + {legacy: "sht:RepresentationTest", sort: "schema", says: {}}, +]; + +/** an entry's legacy type */ +function typeOf (entry) { + if ("status" in entry) + return TYPES.find(t => t.says.status === entry.status); + if ("schemaError" in entry) + return TYPES.find(t => t.says.schemaError === entry.schemaError); + return TYPES.find(t => t.legacy === "sht:RepresentationTest"); +} + +/** the suite's conventional base: where genJSON.js has always said a + * manifest lives, whatever checkout or branch it was read from */ +const baseOf = (dirName) => `https://raw.githubusercontent.com/shexSpec/shexTest/master/${dirName}/manifest`; + +/** the YAML's two contexts: the shared vocabulary, then this suite's terms */ +const CONTEXTS = ["https://www.w3.org/ns/shex-manifest.jsonld", "../manifest-context.jsonld"]; + +/** one ShapeMap association as its node and shape: {node, shape}, each + * {iri} | {bnode} | {value, datatype?, language?}; shape null for START */ +function parseAssociation (text) { + const m = /^([\s\S]*)@(<[^>]*>|_:[\w.-]+|START)\s*$/.exec(text.trim()); + if (!m) + throw new Error("not a single node@shape association: " + JSON.stringify(text)); + const term = (t) => { + let l; + if (/^<[^>]*>$/.test(t)) + return {iri: t.slice(1, -1)}; + if (/^_:[\w.-]+$/.test(t)) + return {bnode: t}; + if ((l = /^("(?:[^"\\]|\\.)*")(?:\^\^<([^>]*)>|@([A-Za-z]+(?:-[A-Za-z0-9]+)*))?$/.exec(t))) + return Object.assign({value: JSON.parse(l[1])}, l[2] !== undefined ? {datatype: l[2]} : {}, l[3] !== undefined ? {language: l[3]} : {}); + throw new Error("not a node: " + JSON.stringify(t)); + }; + return {node: term(m[1].trim()), shape: m[2] === "START" ? null : term(m[2])}; +} + +/** ...and back: the association as ShapeMap text */ +function writeAssociation ({node, shape}) { + const term = (t) => "iri" in t ? `<${t.iri}>` : "bnode" in t ? t.bnode + : JSON.stringify(t.value) + (t.language ? "@" + t.language : t.datatype ? `^^<${t.datatype}>` : ""); + return term(node) + "@" + (shape === null ? "START" : term(shape)); +} + +module.exports = {PREFIXES, TERMS, TYPES, typeOf, baseOf, CONTEXTS, parseAssociation, writeAssociation}; diff --git a/bin/ttl2yamlld.js b/bin/ttl2yamlld.js new file mode 100755 index 00000000..65692c4b --- /dev/null +++ b/bin/ttl2yamlld.js @@ -0,0 +1,632 @@ +#!/usr/bin/env node +/* ttl2yamlld - SPIKE: write a suite manifest's YAML-LD from its legacy + * Turtle, carrying the comments across. A migration tool: run once per + * manifest; from then on manifest.yaml is the text people edit, and + * bin/yaml2ttl.js writes the Turtle from it. + * + * bin/ttl2yamlld.js validation/manifest.ttl -o validation/manifest.yaml + * + * The YAML is not the Turtle transliterated. It is the manifest in the + * format implementations use for their own examples -- the ShEx manifest + * vocabulary (https://www.w3.org/ns/shex-manifest) plus this suite's terms + * (../manifest-context.jsonld) -- so the legacy expression goes: + * + * - no test is typed. A validation test is an entry with a `status`, and + * the status says what sht:ValidationTest and sht:ValidationFailure said: + * conformant or nonconformant. A schema that must be rejected says how + * (`schemaError: syntax` or `structure`); a representation test says + * nothing, having three serializations of one schema to compare. + * - an entry is named, not identified: `name: 1dot_pass` where the Turtle + * had both <#1dot_pass> and mf:name "1dot_pass". (Where those two + * disagree, the entry keeps both, with a note.) + * - there is no mf:action node: an entry's schemaURL, dataURL, node and + * shape are its own. + * - mf:status, the community's verdict on the test itself, is `approval`, + * since `status` is the outcome the test expects. + * - the mf:entries collection and the definitions are ONE list, `entries`, + * of the tests themselves, in the collection's order. + * - there is no @base: a reference is relative to the manifest, wherever it + * is. (bin/yaml2ttl.js supplies the suite's conventional base.) + * + * It is deliberately NOT parse-to-a-graph-and-serialize: a graph has no + * comments, and the manifests' comments (section markers, TODO lists, + * commented-out tests, notes on why a test is the way it is) are what a + * maintainer navigates by. A small Turtle lexer keeps each comment as a + * token; a parser for the shape a manifest has (subject blocks of + * predicate-object lists, blank-node property lists, collections) keeps + * each where it was; and the emitter writes them at the same places: a + * comment in the collection before the test it preceded there, a comment + * among the definitions before the definition it preceded (a section's + * closing `## }` marker after the one it followed). + * + * bin/manifest-terms.js is the table of which legacy predicate becomes + * which key, shared with the scripts that go the other way. + */ +"use strict"; + +const Fs = require("fs"); +const Path = require("path"); +const {PREFIXES, TERMS, TYPES, CONTEXTS, writeAssociation} = require("./manifest-terms.js"); + +// --- arguments ------------------------------------------------------------------ + +const args = process.argv.slice(2); +if (args.length === 0 || args.includes("--help") || args.includes("-h")) { + console.error("usage: ttl2yamlld.js manifest.ttl [-o manifest.yaml]"); + process.exit(args.length === 0 ? 1 : 0); +} +const optionValue = (flag) => { + const i = args.indexOf(flag); + if (i === -1) + return null; + const [, value] = args.splice(i, 2); + return value; +}; +const OUTFILE = optionValue("-o"); +const INFILE = args[0]; + +const expandWith = (prefixes, pname) => { + const i = pname.indexOf(":"); + const prefix = pname.slice(0, i); + return prefix in prefixes ? prefixes[prefix] + pname.slice(i + 1) : null; +}; +/** legacy predicate IRI -> its rows in the table */ +const byLegacy = new Map(); +for (const row of TERMS) { + const iri = expandWith(PREFIXES, row.legacy); + byLegacy.set(iri, (byLegacy.get(iri) || []).concat([row])); +} +const typeByLegacy = new Map(TYPES.map(t => [expandWith(PREFIXES, t.legacy), t])); +const RDF_TYPE = PREFIXES.rdf + "type"; +const MF = PREFIXES.mf; + +// --- the lexer: Turtle tokens, comments among them -------------------------------- + +function lex (text) { + const tokens = []; + let i = 0, line = 1, sawTokenOnLine = false, blankLines = 0; + const push = (type, value, extra) => { + tokens.push(Object.assign({type, value, line, blankBefore: blankLines > 0}, extra)); + blankLines = 0; + sawTokenOnLine = true; + }; + while (i < text.length) { + const c = text[i]; + if (c === "\n") { + if (!sawTokenOnLine) + ++blankLines; + sawTokenOnLine = false; + ++line; + ++i; + } else if (c === " " || c === "\t" || c === "\r") { + ++i; + } else if (c === "#") { + let j = text.indexOf("\n", i); + if (j === -1) + j = text.length; + // a comment after a token on its line trails that token; one on a + // line of its own leads whatever comes next + const trailing = sawTokenOnLine; + tokens.push({type: "comment", value: text.slice(i, j).replace(/\s+$/, ""), line, trailing, blankBefore: blankLines > 0}); + blankLines = 0; + sawTokenOnLine = true; + i = j; + } else if (c === "<") { + const j = text.indexOf(">", i); + push("iri", text.slice(i + 1, j)); + i = j + 1; + } else if (c === '"' || c === "'") { + const long = text.startsWith(c.repeat(3), i); + const quote = long ? c.repeat(3) : c; + let j = i + quote.length, value = ""; + while (!text.startsWith(quote, j)) { + if (text[j] === "\\") { + const e = text[j + 1]; + if (e === "u") { value += String.fromCodePoint(parseInt(text.slice(j + 2, j + 6), 16)); j += 6; } + else if (e === "U") { value += String.fromCodePoint(parseInt(text.slice(j + 2, j + 10), 16)); j += 10; } + else { value += ({n: "\n", t: "\t", r: "\r", b: "\b", f: "\f"})[e] || e; j += 2; } + } else { + if (text[j] === "\n") + ++line; + value += text[j++]; + } + } + j += quote.length; + const extra = {}; + if (text.startsWith("^^", j)) { + j += 2; + if (text[j] === "<") { + const k = text.indexOf(">", j); + extra.datatype = {type: "iri", value: text.slice(j + 1, k)}; + j = k + 1; + } else { + const m = /^[A-Za-z][\w.-]*:[\w.-]*/.exec(text.slice(j)); + extra.datatype = {type: "pname", value: m[0]}; + j += m[0].length; + } + } else if (text[j] === "@") { + const m = /^@[A-Za-z]+(?:-[A-Za-z0-9]+)*/.exec(text.slice(j)); + extra.language = m[0].slice(1); + j += m[0].length; + } + push("literal", value, extra); + i = j; + } else if (".;,[]()".includes(c) && !(c === "." && /[0-9]/.test(text[i + 1] || ""))) { + push(c, c); + ++i; + } else if (c === "_" && text[i + 1] === ":") { + const m = /^_:[\w.-]*\w/.exec(text.slice(i)); + push("bnode", m[0]); + i += m[0].length; + } else { + // a directive, `a`, a number, a boolean or a prefixed name + const m = /^(?:@prefix|@base|[+-]?\d+\.\d+(?:[eE][+-]?\d+)?|[+-]?\d+|[A-Za-z][\w-]*(?:\.[\w-]+)*:(?:[\w%-]|\.(?=[\w%-]))*|[A-Za-z][\w-]*:|[A-Za-z]+)/.exec(text.slice(i)); + if (!m) + throw new Error(`${INFILE}:${line}: cannot lex ${JSON.stringify(text.slice(i, i + 30))}`); + const word = m[0]; + if (word === "@prefix" || word === "@base" || /^(?:PREFIX|BASE)$/i.test(word)) + push("directive", word.replace("@", "").toLowerCase(), {sparqlStyle: !word.startsWith("@")}); + else if (/^[+-]?\d/.test(word)) + push("number", word); + else if (word === "true" || word === "false") + push("boolean", word); + else if (word === "a") + push("a", "a"); + else + push("pname", word); + i += word.length; + } + } + return tokens; +} + +// --- the parser: the shape a manifest has, each comment kept where it was --------- + +function parse (tokens) { + let p = 0; + const peek = () => tokens[p]; + const fail = (what) => { + const t = tokens[p] || {line: "EOF", value: ""}; + throw new Error(`${INFILE}:${t.line}: expected ${what}, got ${JSON.stringify(t.value)}`); + }; + /** the comments at the cursor: [leading, ...] with a flag on each */ + const comments = () => { + const found = []; + while (p < tokens.length && tokens[p].type === "comment") + found.push(tokens[p++]); + return found; + }; + const expect = (type) => { + if (!peek() || peek().type !== type) + fail(`"${type}"`); + return tokens[p++]; + }; + const prefixes = {}; + let base = null; + const items = []; // top-level: comments and subject blocks, in order + + const object = () => { + const t = peek(); + if (!t) + fail("an object"); + if (["iri", "pname", "bnode", "literal", "number", "boolean"].includes(t.type)) { + ++p; + return t; + } + if (t.type === "[") { + ++p; + const node = {type: "node", statements: predicateObjectList("]")}; + expect("]"); + return node; + } + if (t.type === "(") { + ++p; + const members = []; + for (;;) { + const lead = comments(); + if (peek() && peek().type === ")") { + ++p; + return {type: "list", members, closing: lead}; + } + const member = object(); + member.lead = lead; + // a comment on the member's own line trails it + if (peek() && peek().type === "comment" && peek().trailing) + member.trail = tokens[p++]; + members.push(member); + } + } + fail("an object"); + }; + + /** verb objectList (';' (verb objectList)?)* up to (not past) `end` */ + const predicateObjectList = (end) => { + const statements = []; + for (;;) { + const lead = comments(); + const t = peek(); + if (!t) + fail(`"${end}"`); + if (t.type === end) { + if (lead.length) + statements.push({closing: lead}); + return statements; + } + if (t.type === ";") { // a stray `;` before the end + ++p; + if (lead.length) + statements.push({closing: lead}); + continue; + } + if (t.type !== "pname" && t.type !== "a" && t.type !== "iri") + fail("a predicate"); + ++p; + const statement = {verb: t, objects: [], lead}; + for (;;) { + const between = comments(); + const o = object(); + o.lead = (o.lead || []).concat(between); + statement.objects.push(o); + if (peek() && peek().type === ",") { + ++p; + continue; + } + break; + } + if (peek() && peek().type === ";") + ++p; + if (peek() && peek().type === "comment" && peek().trailing) + statement.trail = tokens[p++]; + statements.push(statement); + } + }; + + while (p < tokens.length) { + const lead = comments(); + lead.forEach(c => items.push(c)); + const t = peek(); + if (!t) + break; + if (t.type === "directive") { + ++p; + if (t.value === "base") { + base = expect("iri").value; + } else { + const prefix = expect("pname").value.replace(/:$/, ""); + prefixes[prefix] = expect("iri").value; + } + if (!t.sparqlStyle) + expect("."); + continue; + } + if (t.type !== "iri" && t.type !== "pname" && t.type !== "bnode") + fail("a subject"); + ++p; + const block = {type: "block", subject: t, statements: predicateObjectList(".")}; + expect("."); + if (peek() && peek().type === "comment" && peek().trailing) + block.trail = tokens[p++]; + items.push(block); + } + return {prefixes, base, items}; +} + +// --- the emitter ------------------------------------------------------------------ + +const RESERVED = /^(?:true|false|yes|no|on|off|null|y|n|~)$/i; +/** a string as a YAML scalar: plain when that is unmistakably a string and + * unmistakably this string, else double-quoted (JSON's quoting is YAML's) */ +function scalar (s, {flow = false} = {}) { + if (typeof s !== "string") + return String(s); + const plain = s.length > 0 + && /^[A-Za-z_.\/][^\s"'`#]*$/.test(s) && !/^\.+$/.test(s) // one word, starting like a name or a path + && !/[:,]$/.test(s) && !/[\[\]{}*&!|>%@\\]/.test(s) + && !(flow && /[,\[\]{}]/.test(s)) + && !RESERVED.test(s); + return plain ? s : JSON.stringify(s); +} + +const out = []; +const emit = (indent, text) => out.push(text === "" ? "" : " ".repeat(indent) + text); +const emitComment = (indent, c) => { + if (c.blankBefore && out.length && out[out.length - 1] !== "") + out.push(""); + // an editor's mode line said this was N3; it is YAML now + emit(indent, c.value.replace(/(-\*-.*\bmode:\s*)n3\b/, "$1yaml")); +}; + +function convert (text) { + const {prefixes, items} = parse(lex(text)); + const expand = (t) => t.type === "a" ? RDF_TYPE : t.type === "iri" ? t.value : expandWith(prefixes, t.value); + const oops = (t, what) => { throw new Error(`${INFILE}:${t.line}: ${what}`); }; + + /** one object as a YAML value, the way its row's kind says */ + const value = (o, row, flow = false) => { + switch (row.kind) { + case "iri": + if (o.type !== "iri") + oops(o, `${row.legacy} wants an IRI`); + return scalar(o.value, {flow}); + case "term": + if (o.type === "iri") + return scalar(o.value, {flow}); + if (o.type === "pname") + return scalar(expand(o), {flow}); + if (o.type === "bnode") + return JSON.stringify(o.value); + if (o.type === "literal") { + // a value object: a literal where the term would make a string an IRI + const parts = [`"@value": ${JSON.stringify(o.value)}`]; + if (o.language) + parts.push(`"@language": ${JSON.stringify(o.language)}`); + if (o.datatype) + parts.push(`"@type": ${JSON.stringify(o.datatype.type === "iri" ? o.datatype.value : expandWith(prefixes, o.datatype.value))}`); + return `{${parts.join(", ")}}`; + } + return oops(o, `${row.legacy} wants a term`); + case "text": + if (o.type !== "literal") + oops(o, `${row.legacy} wants a string`); + return JSON.stringify(o.value); // prose is always quoted: it is full of YAML's punctuation + case "number": + if (o.type !== "number") + oops(o, `${row.legacy} wants a number`); + return o.value; + case "mfname": { + const iri = expand(o); + if (!iri || !iri.startsWith(MF)) + oops(o, `${row.legacy} wants an mf: name`); + return scalar(iri.slice(MF.length)); + } + default: + return oops(o, `${row.legacy}: unexpected ${row.kind}`); + } + }; + + /** the statements of a test (or of its action node, or of a member of its + * extensionResults), as the keys of a YAML mapping at `indent`. `where` + * is which rows of the table apply; `sort` whether this is a validation + * test or a schema test */ + const emitStatements = (indent, statements, where, sort, skip) => { + for (const s of statements) { + if (s.closing) { + s.closing.forEach(c => emitComment(indent, c)); + continue; + } + (s.lead || []).forEach(c => emitComment(indent, c)); + s.objects.forEach(o => (o.lead || []).forEach(c => emitComment(indent, c))); + const trail = s.trail ? " " + s.trail.value : ""; + const predicate = expand(s.verb); + if (skip && skip(s, predicate, trail)) + continue; + if (where === "test" && predicate === MF + "action") { + // no action node: its contents are the entry's own + if (s.objects.length !== 1 || s.objects[0].type !== "node") + oops(s.verb, "mf:action wants one blank node"); + if (trail) + emit(indent, trail.trim()); + emitAction(indent, s.objects[0].statements, sort); + continue; + } + const rows = (byLegacy.get(predicate) || []).filter(r => r.in === where && (!r.only || r.only === sort)); + if (rows.length !== 1) + oops(s.verb, `no place in the YAML for ${s.verb.value} ${where === "test" ? "on a test" : "in " + where}`); + const row = rows[0]; + const key = /^[A-Za-z_][\w.-]*(?::[\w.-]+)?$/.test(row.key) ? row.key : JSON.stringify(row.key); + if (row.kind === "list") { + if (s.objects.length !== 1 || s.objects[0].type !== "list") + oops(s.verb, `${row.legacy} wants a collection`); + emit(indent, `${key}:${trail}`); + for (const member of s.objects[0].members) { + (member.lead || []).forEach(c => emitComment(indent + 2, c)); + if (member.type !== "node") + oops(s.verb, `${row.legacy} wants a collection of nodes`); + const mark = out.length; + emitStatements(indent + 4, member.statements, "ext", sort); + // the mapping's first key takes the list item's dash + for (let i = mark; i < out.length; ++i) + if (out[i] !== "" && !out[i].trimStart().startsWith("#")) { + out[i] = " ".repeat(indent + 2) + "- " + out[i].slice(indent + 4); + break; + } + } + (s.objects[0].closing || []).forEach(c => emitComment(indent + 2, c)); + } else if (row.kind === "names") { + const names = s.objects.map(o => { + const iri = expand(o); + if (!iri || !iri.startsWith(PREFIXES.sht)) + oops(o, `${row.legacy} wants sht: names`); + return scalar(iri.slice(PREFIXES.sht.length), {flow: true}); + }); + emit(indent, `${key}: [${names.join(", ")}]${trail}`); + } else if (s.objects.length === 1) { + emit(indent, `${key}: ${value(s.objects[0], row)}${trail}`); + } else { + // several values of one predicate + emit(indent, `${key}: [${s.objects.map(o => value(o, row, true)).join(", ")}]${trail}`); + } + } + }; + + /** an action node's contents, as the entry's own. A focus and a shape + * that are IRIs are `node` and `shape`; a blank node or a literal among + * them cannot be a reference, so the pair is said as a query map */ + const emitAction = (indent, statements, sort) => { + const of = (local) => statements.find(s => s.verb && expand(s.verb) === PREFIXES.sht + local); + const focus = of("focus"), shape = of("shape"); + const isIri = (s) => s.objects.length === 1 && s.objects[0].type === "iri"; + if (!focus || (isIri(focus) && (!shape || isIri(shape)))) { + emitStatements(indent, statements, "action", sort); + return; + } + const termOf = (o) => { + if (o.type === "iri") { + if (!/^[a-z][a-z0-9+.-]*:/i.test(o.value)) + oops(o, "a relative IRI in a test whose focus or shape is not an IRI: a query map would resolve it differently"); + return {iri: o.value}; + } + if (o.type === "bnode") + return {bnode: o.value}; + if (o.type === "literal") + return Object.assign({value: o.value}, + o.datatype ? {datatype: o.datatype.type === "iri" ? o.datatype.value : expandWith(prefixes, o.datatype.value)} : {}, + o.language ? {language: o.language} : {}); + return oops(o, "not a node"); + }; + const association = writeAssociation({node: termOf(focus.objects[0]), shape: shape ? termOf(shape.objects[0]) : null}); + let written = false; + emitStatements(indent, statements, "action", sort, (s, predicate, trail) => { + if (s !== focus && s !== shape) + return false; + if (!written) { + // where the first of the two was + emit(indent, `queryMap: ${JSON.stringify(association)}${trail}`); + written = true; + } else if (trail) { + emit(indent, trail.trim()); + } + return true; + }); + }; + + // the manifest block, and the definitions by subject + const isEntries = (s) => s.verb && expand(s.verb) === MF + "entries"; + const manifestIndex = items.findIndex(it => it.type === "block" && it.statements.some(isEntries)); + if (manifestIndex === -1) + throw new Error(`${INFILE}: no subject with mf:entries`); + const manifest = items[manifestIndex]; + const listed = manifest.statements.find(isEntries).objects[0]; + + /** each definition with the comments that travel with it: those before it + * lead it -- but a section's closing marker (`## } name`, or a `}` line) + * belongs after the definition before it */ + const definitions = new Map(); + const preamble = []; + let pending = []; + let previous = null; + const isCloser = (c) => /^#+\s*\}/.test(c.value); + items.forEach((it, i) => { + if (i < manifestIndex) { + preamble.push(it); + } else if (i === manifestIndex) { + // emitted below + } else if (it.type === "comment") { + if (isCloser(it) && previous && pending.length === 0) + previous.trailing.push(it); + else + pending.push(it); + } else { + if (it.subject.type !== "iri" || !it.subject.value.startsWith("#")) + oops(it.subject, "a test is expected to be <#name>"); + if (definitions.has(it.subject.value)) + oops(it.subject, `${it.subject.value} is defined twice`); + const def = {block: it, leading: pending, trailing: []}; + definitions.set(it.subject.value, def); + pending = []; + previous = def; + } + }); + const after = pending; + + // --- write it + preamble.forEach(it => { + if (it.type !== "comment") + oops(it.subject, "a subject before the manifest"); + emitComment(0, it); + }); + if (out.length && out[out.length - 1] !== "") + out.push(""); + emit(0, `"@context":`); + CONTEXTS.forEach(c => emit(2, `- ${scalar(c)}`)); + for (const s of manifest.statements) { + if (s.closing) { + s.closing.forEach(c => emitComment(0, c)); + continue; + } + (s.lead || []).forEach(c => emitComment(0, c)); + const predicate = expand(s.verb); + if (predicate === RDF_TYPE) { + if (expand(s.objects[0]) !== MF + "Manifest") + oops(s.verb, "the manifest is expected to be an mf:Manifest"); + } else if (predicate === PREFIXES.rdfs + "comment") { + emit(0, `comment: ${JSON.stringify(s.objects[0].value)}${s.trail ? " " + s.trail.value : ""}`); + } else if (!isEntries(s)) { + oops(s.verb, `no place in the YAML for ${s.verb.value} on the manifest`); + } + } + emit(0, "entries:"); + (listed.lead || []).forEach(c => emitComment(2, c)); + + const emitDefinition = (def, id) => { + def.leading.forEach(c => emitComment(2, c)); + if (out.length && out[out.length - 1] !== "" && !out[out.length - 1].trimStart().startsWith("#")) + out.push(""); + const fragment = id.slice(1); + const statements = def.block.statements; + const typeStatement = statements.find(s => s.verb && expand(s.verb) === RDF_TYPE); + if (!typeStatement) + oops(def.block.subject, `${id} has no type`); + const type = typeByLegacy.get(expand(typeStatement.objects[0])); + if (!type) + oops(typeStatement.verb, `${id}: no place in the YAML for the type ${typeStatement.objects[0].value}`); + const names = statements.filter(s => s.verb && expand(s.verb) === MF + "name"); + if (names.length !== 1) + oops(def.block.subject, `${id} has ${names.length} names`); + const name = names[0].objects[0].value; + if (name === fragment) { + emit(2, `- name: ${scalar(name)}`); + } else { + // the Turtle's own inconsistency, kept so that it can be written back + emit(2, `# The Turtle identified this test as <${id}> and named it ${JSON.stringify(name)}.`); + emit(2, `- "@id": ${JSON.stringify(id)}`); + emit(4, `name: ${scalar(name)}`); + } + emitStatements(4, statements, "test", type.sort, (s, predicate, trail) => { + if (predicate === MF + "name") { + if (trail) + emit(4, trail.trim()); + return true; + } + if (predicate === RDF_TYPE) { + // what the type said, said by the entry's own attributes + for (const [key, v] of Object.entries(type.says)) + emit(4, `${key}: ${v}${trail}`); + return true; + } + return false; + }); + if (def.block.trail) + emitComment(4, def.block.trail); + def.trailing.forEach(c => emitComment(2, c)); + }; + + const written = new Set(); + for (const member of listed.members) { + (member.lead || []).forEach(c => emitComment(2, c)); + if (member.type !== "iri") + oops(member, "mf:entries wants <#name> references"); + const id = member.value; + const def = definitions.get(id); + if (written.has(id)) + oops(member, `${id} is listed twice in mf:entries`); + if (def === undefined) + oops(member, `${id} is listed in mf:entries and never defined`); + emitDefinition(def, id); + written.add(id); + if (member.trail) + emitComment(4, member.trail); + } + (listed.closing || []).forEach(c => emitComment(2, c)); + for (const [id, def] of definitions) + if (!written.has(id)) + oops(def.block.subject, `${id} is defined and not listed in mf:entries`); + after.forEach(c => emitComment(0, c)); + return out.join("\n") + "\n"; +} + +const yaml = convert(Fs.readFileSync(INFILE, "utf8")); +if (OUTFILE) + Fs.writeFileSync(OUTFILE, yaml); +else + process.stdout.write(yaml); diff --git a/bin/yaml2jsonld.js b/bin/yaml2jsonld.js new file mode 100755 index 00000000..2146223c --- /dev/null +++ b/bin/yaml2jsonld.js @@ -0,0 +1,112 @@ +#!/usr/bin/env node +/* yaml2jsonld - SPIKE: write the manifest.jsonld that bin/genJSON.js writes + * from the legacy Turtle, from manifest.yaml instead. + * + * cd validation && ../bin/yaml2jsonld.js manifest.yaml > manifest.jsonld + * + * manifest.jsonld is the legacy manifest as JSON: each test with its @id, + * its sht: @type and its inputs under `action`. Consumers that have not + * moved to manifest.yaml read it, so it is still written -- from the YAML, + * putting back what the YAML does without (bin/manifest-terms.js), in + * genJSON's own spelling, byte for byte: each validation test's keys in + * genJSON's order with an (often empty) extensionResults; traits sorted; a + * reference within the manifest's directory by its name there, a schema + * always from the suite's root; a literal focus with its datatype spelled + * out. What genJSON never copied (wasDerivedFrom, seeAlso, a schema + * test's comment) is not copied here either: it is in the YAML. + * + * As a module, `project(doc, dirName)` takes the parsed YAML and the name + * of the suite directory it is in. + */ +"use strict"; + +const {typeOf, baseOf, parseAssociation} = require("./manifest-terms.js"); + +const XSD_STRING = "http://www.w3.org/2001/XMLSchema#string"; + +function project (doc, dirName) { + const base = baseOf(dirName); + const dirPath = base.replace(/manifest$/, ""); + const basePath = dirPath.replace(/[^/]*\/$/, ""); + const abs = v => new URL(v, base).href; + /** genJSON's spellings: a reference within the manifest's directory by its + * name there, another within the suite as ../dir/name, anything else whole */ + const rel = v => { + if (typeof v !== "string" || v.startsWith("_:")) + return v; + const a = abs(v); + return a.startsWith(dirPath) ? a.slice(dirPath.length) : a.startsWith(basePath) ? "../" + a.slice(basePath.length) : a; + }; + /** ...except a schema (or its semActs, its externs), always from the suite's root */ + const fromRoot = v => "../" + abs(v).slice(basePath.length); + /** a parsed association's node or shape, in genJSON's spelling */ + const term = t => "iri" in t ? rel(t.iri) : "bnode" in t ? t.bnode + : Object.assign({"@value": t.value}, t.language ? {"@language": t.language} : {}, {"@type": t.datatype || XSD_STRING}); + const set = (target, key, source, from, convert = rel) => { + if (from in source) + target[key] = convert(source[from]); + }; + const asIs = v => v; + const sorted = t => t.slice().sort(); + const status = v => "mf:" + v; + return { + "@context": [{"@base": base}, "../context.jsonld"], + "@graph": [{ + "@id": "", + "@type": "mf:Manifest", + "rdfs:comment": doc.comment, + entries: doc.entries.map(e => { + const type = typeOf(e); + const out = {"@id": e["@id"] || "#" + e.name, "@type": type.legacy}; + if (type.sort === "schema") { + set(out, "name", e, "name", asIs); + set(out, "trait", e, "trait", sorted); + set(out, "status", e, "approval", status); + set(out, "shex", e, "schemaURL"); + set(out, "json", e, "shexjURL"); + set(out, "ttl", e, "shexrURL"); + for (const k of ["startRow", "startColumn", "endRow", "endColumn"]) + set(out, k, e, k, asIs); + return out; + } + out.action = {}; + out.extensionResults = []; + set(out, "name", e, "name", asIs); + set(out, "trait", e, "trait", sorted); + set(out, "comment", e, "comment", asIs); + set(out, "status", e, "approval", status); + set(out.action, "schema", e, "schemaURL", fromRoot); + const said = "queryMap" in e ? parseAssociation(e.queryMap) : null; + if (said === null) + set(out.action, "shape", e, "shape"); + else if (said.shape !== null) + out.action.shape = term(said.shape); + set(out.action, "data", e, "dataURL"); + set(out.action, "map", e, "queryMapURL"); + if (said === null) + set(out.action, "focus", e, "node"); + else + out.action.focus = term(said.node); + set(out.action, "semActs", e, "semActsURL", fromRoot); + set(out.action, "shapeExterns", e, "shapeExternsURL", fromRoot); + set(out, "result", e, "resultURL"); + if ("extensionResults" in e) + out.extensionResults = e.extensionResults.map(x => ({extension: x.extension, prints: x.prints})); + return out; + }), + }], + }; +} + +module.exports = {project}; + +if (require.main === module) { + const args = process.argv.slice(2); + if (args.length !== 1 || args[0].startsWith("-")) { + console.error("usage: yaml2jsonld.js manifest.yaml > manifest.jsonld"); + process.exit(1); + } + const Path = require("path"); + const doc = require("js-yaml").load(require("fs").readFileSync(args[0], "utf8")); + console.log(JSON.stringify(project(doc, Path.basename(Path.dirname(Path.resolve(args[0])))), null, " ") + "\n"); +} diff --git a/bin/yaml2ttl.js b/bin/yaml2ttl.js new file mode 100755 index 00000000..2c7ddf04 --- /dev/null +++ b/bin/yaml2ttl.js @@ -0,0 +1,145 @@ +#!/usr/bin/env node +/* yaml2ttl - SPIKE: write a suite manifest's legacy Turtle from its YAML-LD. + * + * cd validation && ../bin/yaml2ttl.js manifest.yaml > manifest.ttl + * + * manifest.yaml is the text people edit: the manifest in the ShEx manifest + * vocabulary, the format implementations use for their own examples. The + * Turtle -- the SPARQL WG's test-manifest format, with sht: types and an + * mf:action node per test -- is what implementations of the suite have + * always read, so it is still written, from the YAML, by putting back what + * the YAML does without (bin/manifest-terms.js is the table): + * + * - the type a test's `status` (or `schemaError`, or neither) stands for; + * - <#name> and mf:name, both from `name`; + * - the mf:action node, around the entry's schemaURL, shape, dataURL, node; + * - mf:status, from `approval`; + * - the mf:entries collection, in the entries' order; + * - the @base the suite's manifests have always declared. + * + * That this loses nothing is checked, not assumed: the graph of the Turtle + * written here is the graph of the Turtle the YAML was converted from + * (shex.js, packages/shex-manifest/test/TestSuiteManifest-spike-test.js). + * + * As a module, `toTurtle(doc, dirName)` takes the parsed YAML and the name + * of the suite directory it is in. + */ +"use strict"; + +const {PREFIXES, TERMS, typeOf, baseOf, parseAssociation} = require("./manifest-terms.js"); + +const string = (s) => '"' + String(s).replace(/[\\"\n\r\t]/g, c => ({"\\": "\\\\", '"': '\\"', "\n": "\\n", "\r": "\\r", "\t": "\\t"})[c]) + '"'; +const iri = (v) => `<${v}>`; +const asArray = (v) => Array.isArray(v) ? v : [v]; + +/** a parsed association's node or shape, as Turtle */ +const term = (t) => "iri" in t ? iri(t.iri) : "bnode" in t ? t.bnode + : string(t.value) + (t.language ? "@" + t.language : t.datatype ? "^^" + iri(t.datatype) : ""); + +function object (value, row) { + switch (row.kind) { + case "iri": return asArray(value).map(iri).join(", "); + case "term": return asArray(value).map(iri).join(", "); + case "names": return asArray(value).map(n => "sht:" + n).join(" , "); + case "mfname": return "mf:" + value; + case "text": return asArray(value).map(string).join(", "); + case "number": return String(value); + default: throw new Error("cannot write a " + row.kind); + } +} + +function toTurtle (doc, dirName) { + if (!doc || !Array.isArray(doc.entries)) + throw new Error("expected a manifest with `entries`"); + const used = new Set(["rdf", "rdfs", "mf", "sht"]); + const out = []; + const blocks = []; + const ids = []; + + for (const entry of doc.entries) { + if (typeof entry.name !== "string") + throw new Error("an entry needs a name: " + JSON.stringify(entry).slice(0, 80)); + const id = entry["@id"] || "#" + entry.name; + ids.push(id); + const type = typeOf(entry); + if (!type) + throw new Error(`${entry.name}: no legacy type for status ${JSON.stringify(entry.status)} / schemaError ${JSON.stringify(entry.schemaError)}`); + const lines = [`mf:name ${string(entry.name)}`]; + const action = []; + let actionAt = -1; + for (const [key, value] of Object.entries(entry)) { + if (["@id", "name", "status", "schemaError"].includes(key)) + continue; + if (key === "queryMap") { + // the focus and shape a query map says, where node and shape could not + const {node, shape} = parseAssociation(value); + if (actionAt === -1) { + actionAt = lines.length; + lines.push(null); + } + if (shape !== null) + action.push(` sht:shape ${term(shape)}`); + action.push(` sht:focus ${term(node)}`); + continue; + } + const rows = TERMS.filter(r => r.key === key && r.in !== "ext" && (!r.only || r.only === type.sort)); + if (rows.length !== 1) + throw new Error(`${entry.name}: no legacy predicate for "${key}"`); + const row = rows[0]; + used.add(row.legacy.split(":")[0]); + if (row.kind === "list") { + const members = value.map(member => { + const inner = Object.entries(member).map(([k, v]) => { + const r = TERMS.find(r => r.key === k && r.in === "ext"); + if (!r) + throw new Error(`${entry.name}: no legacy predicate for "${k}" in ${key}`); + return ` ${r.legacy} ${object(v, r)}`; + }); + return " [\n" + inner.join(" ;\n") + "\n ]"; + }); + lines.push(`${row.legacy} (\n${members.join("\n")}\n )`); + } else if (row.in === "action") { + if (actionAt === -1) { + actionAt = lines.length; + lines.push(null); // the action node goes where its first member was + } + action.push(` ${row.legacy} ${object(value, row)}`); + } else { + lines.push(`${row.legacy} ${object(value, row)}`); + } + } + if (actionAt !== -1) + lines[actionAt] = "mf:action [\n" + action.join(" ;\n") + "\n ]"; + blocks.push(`${iri(id)} a ${type.legacy} ;\n ` + lines.join(" ;\n ") + "\n ."); + } + + out.push(`@base ${iri(baseOf(dirName))} .`); + for (const prefix of Object.keys(PREFIXES)) + if (used.has(prefix)) + out.push(`@prefix ${prefix}: ${iri(PREFIXES[prefix])} .`); + out.push(""); + out.push("# GENERATED from manifest.yaml by bin/yaml2ttl.js; edit that, not this."); + out.push(""); + out.push("<> a mf:Manifest ;"); + if ("comment" in doc) + out.push(` rdfs:comment ${string(doc.comment)} ;`); + out.push(" mf:entries ("); + ids.forEach(id => out.push(` ${iri(id)}`)); + out.push(" ) ."); + out.push(""); + blocks.forEach(b => out.push(b, "")); + return out.join("\n"); +} + +module.exports = {toTurtle}; + +if (require.main === module) { + const args = process.argv.slice(2); + if (args.length !== 1 || args[0].startsWith("-")) { + console.error("usage: yaml2ttl.js manifest.yaml > manifest.ttl"); + process.exit(1); + } + const Path = require("path"); + const doc = require("js-yaml").load(require("fs").readFileSync(args[0], "utf8")); + process.stdout.write(toTurtle(doc, Path.basename(Path.dirname(Path.resolve(args[0]))))); +} diff --git a/manifest-context.jsonld b/manifest-context.jsonld new file mode 100644 index 00000000..8d441780 --- /dev/null +++ b/manifest-context.jsonld @@ -0,0 +1,32 @@ +{ + "_comment": "SPIKE (branch manifest-refactor): this suite's own manifest terms, stacked onto the ShEx manifest vocabulary's context (https://www.w3.org/ns/shex-manifest.jsonld: entries, name, schema/data/queryMap with their URL and Label spellings, comment, node, shape, status). A */manifest.yaml stacks the two, and is then both a plain list of entries any YAML parser reads and, as JSON-LD, an RDF graph. What is here is what a conformance suite says about a test beyond what it validates: its traits (names in this namespace: `trait: [Empty]` is sx:trait sx:Empty), whether the community has approved it, the reference result a passing test produced, what its semantic actions must print, the files an implementation needs besides schema and data (semActsURL, shapeExternsURL), and where it came from. A schema test names the schema's two other serializations (shexjURL, shexrURL; schemaURL is its ShExC) or, for a schema that must be rejected, says how (schemaError: syntax or structure) and where. Nothing here types a test: a validation test is one with a status, and its status says whether it must pass. bin/manifest-terms.js maps each term to the legacy Turtle's (mf:, sht:), which bin/yaml2ttl.js still writes for the implementations that read it; mf: is declared only for the few legacy mf:comment arcs carried across as they were.", + + "@context": { + "@version": 1.1, + "sx": "https://shexspec.github.io/shexTest/ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + "prov": "http://www.w3.org/ns/prov#", + "mf": "http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#", + + "trait": {"@id": "sx:trait", "@type": "@vocab", "@context": {"@vocab": "https://shexspec.github.io/shexTest/ns#"}}, + "approval": "sx:approval", + "wasDerivedFrom": {"@id": "prov:wasDerivedFrom", "@type": "@id"}, + "seeAlso": {"@id": "rdfs:seeAlso", "@type": "@id"}, + "sameSemanticsAs": {"@id": "sx:sameSemanticsAs", "@type": "@id"}, + + "resultURL": {"@id": "sx:result", "@type": "@id"}, + "semActsURL": {"@id": "sx:semActs", "@type": "@id"}, + "shapeExternsURL": {"@id": "sx:shapeExterns", "@type": "@id"}, + "extensionResults": {"@id": "sx:extensionResults", "@container": "@list"}, + "extension": {"@id": "sx:extension", "@type": "@id"}, + "prints": "sx:prints", + + "shexjURL": {"@id": "sx:json", "@type": "@id"}, + "shexrURL": {"@id": "sx:ttl", "@type": "@id"}, + "schemaError": "sx:schemaError", + "startRow": "sx:startRow", + "startColumn": "sx:startColumn", + "endRow": "sx:endRow", + "endColumn": "sx:endColumn" + } +} diff --git a/negativeStructure/manifest.yaml b/negativeStructure/manifest.yaml new file mode 100644 index 00000000..a4c99e7b --- /dev/null +++ b/negativeStructure/manifest.yaml @@ -0,0 +1,190 @@ +"@context": + - https://www.w3.org/ns/shex-manifest.jsonld + - ../manifest-context.jsonld +comment: "ShEx negative structure tests" +entries: + + - name: "1MissingRef" + schemaError: structure + approval: Proposed + schemaURL: "1MissingRef.shex" + startRow: 3 + startColumn: 24 + endRow: 4 + endColumn: 1 + + - name: "1focusMissingRefdot" + schemaError: structure + approval: Proposed + schemaURL: "1focusMissingRefdot.shex" + startRow: 2 + startColumn: 22 + endRow: 3 + endColumn: 28 + + - name: "1focusRefANDSelfdot" + schemaError: structure + approval: Proposed + schemaURL: "1focusRefANDSelfdot.shex" + startRow: 4 + startColumn: 6 + endRow: 5 + endColumn: 6 + + - name: includeExpressionNotFound + schemaError: structure + approval: Proposed + schemaURL: includeExpressionNotFound.shex + startRow: 3 + startColumn: 3 + endRow: 4 + endColumn: 3 + + - name: includeSimpleShape + schemaError: structure + approval: Proposed + schemaURL: includeSimpleShape.shex + startRow: 3 + startColumn: 3 + endRow: 4 + endColumn: 3 + + - name: includeNonSimpleShape + schemaError: structure + approval: Proposed + schemaURL: includeNonSimpleShape.shex + startRow: 3 + startColumn: 3 + endRow: 4 + endColumn: 3 + + - name: includeWithCardinality + schemaError: structure + approval: Proposed + schemaURL: includeWithCardinality.shex + startRow: 6 + startColumn: 3 + endRow: 7 + endColumn: 2 + + - name: includeWithLabel + schemaError: structure + approval: Proposed + schemaURL: includeWithLabel.shex + startRow: 4 + startColumn: 3 + endRow: 5 + endColumn: 2 + + - name: Cycle1Negation1 + schemaError: structure + trait: [FailedStratifiedNegation] + mf:comment: ":S NOT { :a { :b @:S } }" + approval: Approved + schemaURL: Cycle1Negation1.shex + startRow: 6 + startColumn: 8 + endRow: 7 + endColumn: 4 + + - name: Cycle1Negation2 + schemaError: structure + trait: [FailedStratifiedNegation] + mf:comment: ":S { :a { :b NOT @:S } }" + approval: Approved + schemaURL: Cycle1Negation2.shex + startRow: 6 + startColumn: 8 + endRow: 7 + endColumn: 4 + + - name: Cycle1Negation3 + schemaError: structure + trait: [FailedStratifiedNegation] + mf:comment: ":S { :a NOT { :b @:S } }" + approval: Approved + schemaURL: Cycle1Negation3.shex + startRow: 6 + startColumn: 8 + endRow: 7 + endColumn: 4 + + - name: TwoNegation + schemaError: structure + trait: [FailedStratifiedNegation] + mf:comment: ":S ( (NOT @:T) AND (NOT @:U) ) :T { :a @:S } :U { :b . }" + approval: Approved + schemaURL: TwoNegation.shex + startRow: 8 + startColumn: 6 + endRow: 9 + endColumn: 2 + + - name: TwoNegation2 + schemaError: structure + trait: [FailedStratifiedNegation] + mf:comment: ":S ( (NOT @:T) AND @:U ) :T { :a NOT @:S } :U { :b @:S }" + approval: Proposed + schemaURL: TwoNegation2.shex + startRow: 8 + startColumn: 6 + endRow: 9 + endColumn: 2 + + - name: Cycle2Negation + schemaError: structure + trait: [FailedStratifiedNegation] + mf:comment: ":S NOT { :a @:S }" + approval: Approved + schemaURL: Cycle2Negation.shex + startRow: 5 + startColumn: 6 + endRow: 6 + endColumn: 2 + + - name: Cycle2Extra + schemaError: structure + trait: [FailedStratifiedNegation] + mf:comment: ":S EXTRA :a { :a @:S }" + approval: Approved + schemaURL: Cycle2Extra.shex + startRow: 5 + startColumn: 6 + endRow: 6 + endColumn: 2 + + - name: Cycle2ExtendsNegation + schemaError: structure + approval: Proposed + schemaURL: Cycle2ExtendsNegation.shex + startRow: 5 + startColumn: 8 + endRow: 5 + endColumn: 11 + + - name: Cycle1Extends + schemaError: structure + approval: Proposed + schemaURL: Cycle1Extends.shex + startRow: 5 + startColumn: 12 + endRow: 5 + endColumn: 15 + + - name: Cycle2Extends + schemaError: structure + approval: Proposed + schemaURL: Cycle2Extends.shex + startRow: 6 + startColumn: 12 + endRow: 6 + endColumn: 15 + + - name: Cycle2ExtendsOr + schemaError: structure + approval: Proposed + schemaURL: Cycle2ExtendsOr.shex + startRow: 15 + startColumn: 12 + endRow: 15 + endColumn: 17 diff --git a/negativeSyntax/manifest.yaml b/negativeSyntax/manifest.yaml new file mode 100644 index 00000000..79cbbd02 --- /dev/null +++ b/negativeSyntax/manifest.yaml @@ -0,0 +1,952 @@ +# For the best user feedback, errors should include a location. The startRow, +# startColumn, endRow and endColumn should bracket this location. They are +# calculated by taking the 1-based column and row before any whitespace before +# the offending token and the column and row after the offending token and any +# whitespace. +# +# These ranges are negotiable. Feel free to write a github issue making a case +# for expanding or contracting them. + +"@context": + - https://www.w3.org/ns/shex-manifest.jsonld + - ../manifest-context.jsonld +comment: "ShEx negative syntax tests" +entries: + + - name: "1decimalMininclusiveroman-numeral" + schemaError: syntax + approval: Approved + schemaURL: "1decimalMininclusiveroman-numeral.shex" + startRow: 2 + startColumn: 81 + endRow: 3 + endColumn: 1 + + - name: "1ProductionShapeCollision" + schemaError: syntax + approval: Proposed + schemaURL: "1ProductionShapeCollision.shex" + startRow: 8 + startColumn: 3 + endRow: 9 + endColumn: 2 + + - name: "1ShapeProductionCollision" + schemaError: syntax + approval: Proposed + schemaURL: "1ShapeProductionCollision.shex" + startRow: 3 + startColumn: 3 + endRow: 6 + endColumn: 22 # 1st token after closing curly brace + + - name: "1dotAnnot_AIRIREF" + schemaError: syntax + approval: Approved + schemaURL: "1dotAnnot_AIRIREF.shex" + startRow: 3 + startColumn: 31 + endRow: 4 + endColumn: 1 + + - name: "1dotUnlabeledCode1" + schemaError: syntax + approval: Approved + schemaURL: "1dotUnlabeledCode1.shex" + startRow: 3 + startColumn: 6 + endRow: 4 + endColumn: 1 + + - name: "1dotDuplicateShapeLabel" + schemaError: syntax + approval: Proposed + schemaURL: "1dotDuplicateShapeLabel.shex" + # shex.js notices at the end of the schema, not at the second declaration. + startRow: 6 + startColumn: 1 + endRow: 9 + endColumn: 1 + + - name: "1dotDuplicateProductionLabel" + schemaError: syntax + approval: Proposed + schemaURL: "1dotDuplicateProductionLabel.shex" + startRow: 7 + startColumn: 3 + endRow: 8 + endColumn: 2 + + - name: "1doubleMininclusiveroman-numeral" + schemaError: syntax + approval: Approved + schemaURL: "1doubleMininclusiveroman-numeral.shex" + startRow: 2 + startColumn: 80 + endRow: 3 + endColumn: 1 + + - name: "1floatMininclusiveroman-numeral" + schemaError: syntax + approval: Approved + schemaURL: "1floatMininclusiveroman-numeral.shex" + startRow: 2 + startColumn: 79 + endRow: 3 + endColumn: 1 + + - name: "1integerMininclusiveroman-numeral" + schemaError: syntax + approval: Approved + schemaURL: "1integerMininclusiveroman-numeral.shex" + startRow: 2 + startColumn: 81 + endRow: 3 + endColumn: 1 + + - name: "1inverseinversedot" + schemaError: syntax + approval: Approved + schemaURL: "1inverseinversedot.shex" + startRow: 1 + startColumn: 32 + endRow: 2 + endColumn: 28 + + - name: "1iriLength2" + schemaError: syntax + approval: Approved + schemaURL: "1iriLength2.shex" + startRow: 2 + startColumn: 39 + endRow: 3 + endColumn: 1 + + - name: "1iriMaxexclusive" + schemaError: syntax + approval: Approved + schemaURL: "1iriMaxexclusive.shex" + startRow: 2 + startColumn: 29 + endRow: 2 + endColumn: 43 + + - name: "1iriMaxinclusive" + schemaError: syntax + approval: Approved + schemaURL: "1iriMaxinclusive.shex" + startRow: 2 + startColumn: 29 + endRow: 2 + endColumn: 43 + + - name: "1iriMinexclusive" + schemaError: syntax + approval: Approved + schemaURL: "1iriMinexclusive.shex" + startRow: 2 + startColumn: 29 + endRow: 2 + endColumn: 43 + + - name: "1iriMininclusive" + schemaError: syntax + approval: Approved + schemaURL: "1iriMininclusive.shex" + startRow: 2 + startColumn: 29 + endRow: 2 + endColumn: 43 + + - name: "1literalFractiondigitsxsd-integer" + schemaError: syntax + approval: Approved + schemaURL: "1literalFractiondigitsxsd-integer.shex" + startRow: 2 + startColumn: 48 + endRow: 3 + endColumn: 1 + + - name: "1literalLength2" + schemaError: syntax + approval: Approved + schemaURL: "1literalLength2.shex" + startRow: 2 + startColumn: 43 + endRow: 3 + endColumn: 1 + + - name: "1literalTotaldigitsxsd-integer" + schemaError: syntax + approval: Approved + schemaURL: "1literalTotaldigitsxsd-integer.shex" + startRow: 2 + startColumn: 45 + endRow: 3 + endColumn: 1 + + - name: "1negatedinversenegateddot" + schemaError: syntax + approval: Approved + schemaURL: "1negatedinversenegateddot.shex" + startRow: 1 + startColumn: 32 + endRow: 2 + endColumn: 5 + + - name: "1negatednegateddot" + schemaError: syntax + approval: Approved + schemaURL: "1negatednegateddot.shex" + startRow: 1 + startColumn: 32 + endRow: 2 + endColumn: 5 + + - name: "1datatypeRef1" + schemaError: syntax + approval: Approved + schemaURL: "1datatypeRef1.shex" + startRow: 3 + startColumn: 48 + endRow: 4 + endColumn: 1 + + - name: "1unknowndatatypeMaxInclusive" + schemaError: syntax + approval: Proposed + schemaURL: "1unknowndatatypeMaxInclusive.shex" + startRow: 2 + startColumn: 48 + endRow: 3 + endColumn: 1 + + - name: "1val1bnode" + schemaError: syntax + approval: Approved + schemaURL: "1val1bnode.shex" + startRow: 2 + startColumn: 26 + endRow: 2 + endColumn: 30 + + - name: "1val1iriMinusiri1" + schemaError: syntax + approval: Approved + schemaURL: "1val1iriMinusiri1.shex" + startRow: 2 + startColumn: 48 + endRow: 2 + endColumn: 51 + + - name: "1val1vcrefSTRING_LITERAL1" + schemaError: syntax + approval: Approved + schemaURL: "1val1vcrefSTRING_LITERAL1.shex" + startRow: 3 + startColumn: 1 + endRow: 3 + endColumn: 7 + + - name: "1valA" + schemaError: syntax + approval: Approved + schemaURL: "1valA.shex" + startRow: 2 + startColumn: 27 + endRow: 2 + endColumn: 28 + + - name: DECIMAL-123.abc + schemaError: syntax + approval: Approved + schemaURL: DECIMAL-123.abc.shex + startRow: 4 + startColumn: 31 + endRow: 4 + endColumn: 34 + + - name: DOUBLE-123e + schemaError: syntax + approval: Approved + schemaURL: DOUBLE-123e.shex + startRow: 4 + startColumn: 26 + endRow: 4 + endColumn: 31 + + - name: INTEGER-+-1 + schemaError: syntax + approval: Approved + schemaURL: INTEGER-+-1.shex + startRow: 4 + startColumn: 27 + endRow: 4 + endColumn: 28 + + - name: INTEGER-123abc + schemaError: syntax + approval: Approved + schemaURL: INTEGER-123abc.shex + startRow: 4 + startColumn: 26 + endRow: 4 + endColumn: 34 + + - name: IRIREF-with-ECHAR + schemaError: syntax + approval: Approved + schemaURL: IRIREF-with-ECHAR.shex + startRow: 3 + startColumn: 32 + endRow: 4 + endColumn: 28 + + - name: IRIREF-with-PN_LOCAL_ESC + schemaError: syntax + approval: Approved + schemaURL: IRIREF-with-PN_LOCAL_ESC.shex + startRow: 3 + startColumn: 32 + endRow: 4 + endColumn: 29 + + - name: IRIREF-with-SPACE + schemaError: syntax + approval: Approved + schemaURL: IRIREF-with-SPACE.shex + startRow: 3 + startColumn: 32 + endRow: 4 + endColumn: 28 + + - name: IRIREF-with-bad-UCHAR.1 + schemaError: syntax + approval: Approved + schemaURL: IRIREF-with-bad-UCHAR.1.shex + startRow: 3 + startColumn: 32 + endRow: 4 + endColumn: 30 + + - name: IRIREF-with-bad-UCHAR.2 + schemaError: syntax + approval: Approved + schemaURL: IRIREF-with-bad-UCHAR.2.shex + startRow: 3 + startColumn: 32 + endRow: 4 + endColumn: 35 + + - name: PNAME_NS-dot-at-end-declared + schemaError: syntax + approval: Approved + schemaURL: PNAME_NS-dot-at-end-declared.shex + startRow: 4 + startColumn: 7 + endRow: 4 + endColumn: 17 + + - name: PNAME_NS-dot-at-end-undeclared + schemaError: syntax + approval: Approved + schemaURL: PNAME_NS-dot-at-end-undeclared.shex + startRow: 6 + startColumn: 16 + endRow: 6 + endColumn: 26 + + - name: PNAME_NS-dot-at-start-declared + schemaError: syntax + approval: Approved + schemaURL: PNAME_NS-dot-at-start-declared.shex + startRow: 4 + startColumn: 7 + endRow: 4 + endColumn: 17 + + - name: PNAME_NS-dot-at-start-undeclared + schemaError: syntax + approval: Approved + schemaURL: PNAME_NS-dot-at-start-undeclared.shex + startRow: 6 + startColumn: 16 + endRow: 6 + endColumn: 26 + + - name: PN_LOCAL-PERCENT-end + schemaError: syntax + approval: Approved + schemaURL: PN_LOCAL-PERCENT-end.shex + startRow: 6 + startColumn: 7 + endRow: 6 + endColumn: 11 + + - name: PN_LOCAL-PERCENT-mid + schemaError: syntax + approval: Approved + schemaURL: PN_LOCAL-PERCENT-mid.shex + startRow: 6 + startColumn: 7 + endRow: 6 + endColumn: 12 + + - name: PN_LOCAL-PERCENT-start + schemaError: syntax + approval: Approved + schemaURL: PN_LOCAL-PERCENT-start.shex + startRow: 6 + startColumn: 7 + endRow: 6 + endColumn: 11 + + - name: PN_LOCAL-dash-start + schemaError: syntax + approval: Approved + schemaURL: PN_LOCAL-dash-start.shex + startRow: 6 + startColumn: 7 + endRow: 6 + endColumn: 11 + + - name: PN_LOCAL-unescaped-TILDE + schemaError: syntax + approval: Approved + schemaURL: PN_LOCAL-unescaped-TILDE.shex + startRow: 6 + startColumn: 7 + endRow: 6 + endColumn: 11 + + - name: PN_LOCAL-with-UCHAR.1 + schemaError: syntax + approval: Approved + schemaURL: PN_LOCAL-with-UCHAR.1.shex + startRow: 6 + startColumn: 7 + endRow: 6 + endColumn: 15 + + - name: "1literalPattern-bad-delim" + schemaError: syntax + approval: Approved + schemaURL: "1literalPattern-bad-delim.shex" + startRow: 2 + startColumn: 25 + endRow: 3 + endColumn: 1 + + - name: "1literalPattern_with_ECHAR_escape_1" + schemaError: syntax + approval: Approved + schemaURL: "1literalPattern_with_ECHAR_escape_1.shex" + startRow: 2 + startColumn: 25 + endRow: 3 + endColumn: 1 + + - name: "1literalPattern_with_ECHAR_escape_b" + schemaError: syntax + approval: Approved + schemaURL: "1literalPattern_with_ECHAR_escape_b.shex" + startRow: 2 + startColumn: 25 + endRow: 3 + endColumn: 1 + + - name: "1literalPattern_with_ECHAR_escape_f" + schemaError: syntax + approval: Approved + schemaURL: "1literalPattern_with_ECHAR_escape_f.shex" + startRow: 2 + startColumn: 25 + endRow: 3 + endColumn: 1 + + - name: "1literalPattern_with_UCHAR_escape_U0000061" + schemaError: syntax + approval: Approved + schemaURL: "1literalPattern_with_UCHAR_escape_U0000061.shex" + startRow: 2 + startColumn: 27 + endRow: 2 + endColumn: 39 + + - name: "1literalPattern_with_UCHAR_escape_u061" + schemaError: syntax + approval: Approved + schemaURL: "1literalPattern_with_UCHAR_escape_u061.shex" + startRow: 2 + startColumn: 27 + endRow: 2 + endColumn: 34 + + - name: "1val1STRING_LITERAL1_bad_delim" + schemaError: syntax + approval: Approved + schemaURL: "1val1STRING_LITERAL1_bad_delim.shex" + startRow: 2 + startColumn: 27 + endRow: 3 + endColumn: 1 + + - name: "1val1STRING_LITERAL1_with_ECHAR_escape_1" + schemaError: syntax + approval: Approved + schemaURL: "1val1STRING_LITERAL1_with_ECHAR_escape_1.shex" + startRow: 2 + startColumn: 27 + endRow: 2 + endColumn: 31 + + - name: "1val1STRING_LITERAL1_with_ECHAR_escape_a" + schemaError: syntax + approval: Approved + schemaURL: "1val1STRING_LITERAL1_with_ECHAR_escape_a.shex" + startRow: 2 + startColumn: 27 + endRow: 2 + endColumn: 31 + + - name: "1val1STRING_LITERAL1_with_ECHAR_escape_z" + schemaError: syntax + approval: Approved + schemaURL: "1val1STRING_LITERAL1_with_ECHAR_escape_z.shex" + startRow: 2 + startColumn: 27 + endRow: 2 + endColumn: 31 + + - name: "1val1STRING_LITERAL1_with_UCHAR_escape_u061" + schemaError: syntax + approval: Approved + schemaURL: "1val1STRING_LITERAL1_with_UCHAR_escape_u061.shex" + startRow: 2 + startColumn: 27 + endRow: 2 + endColumn: 34 + + - name: "1val1STRING_LITERAL1_with_UCHAR_escape_U0000061" + schemaError: syntax + approval: Approved + schemaURL: "1val1STRING_LITERAL1_with_UCHAR_escape_U0000061.shex" + startRow: 2 + startColumn: 27 + endRow: 2 + endColumn: 38 + + - name: STRING_LITERAL1-ending-QUOTATION_MARK + schemaError: syntax + approval: Approved + schemaURL: STRING_LITERAL1-ending-QUOTATION_MARK.shex + startRow: 4 + startColumn: 27 + endRow: 5 + endColumn: 1 + + - name: STRING_LITERAL2-bad-ECHAR + schemaError: syntax + approval: Approved + schemaURL: STRING_LITERAL2-bad-ECHAR.shex + startRow: 4 + startColumn: 27 + endRow: 4 + endColumn: 33 + + - name: STRING_LITERAL2-bad-LANGTAG + schemaError: syntax + approval: Approved + schemaURL: STRING_LITERAL2-bad-LANGTAG.shex + startRow: 4 + startColumn: 27 + endRow: 4 + endColumn: 37 + + - name: STRING_LITERAL2-bad-UCHAR1 + schemaError: syntax + approval: Approved + schemaURL: STRING_LITERAL2-bad-UCHAR1.shex + startRow: 4 + startColumn: 27 + endRow: 4 + endColumn: 35 + + - name: STRING_LITERAL2-bad-UCHAR2-value + schemaError: syntax + approval: Approved + schemaURL: STRING_LITERAL2-bad-UCHAR2-value.shex + startRow: 4 + startColumn: 27 + endRow: 4 + endColumn: 39 + + - name: STRING_LITERAL2-ending-APOSTROPHE + schemaError: syntax + approval: Approved + schemaURL: STRING_LITERAL2-ending-APOSTROPHE.shex + startRow: 4 + startColumn: 27 + endRow: 5 + endColumn: 1 + + - name: STRING_LITERAL2-illegal-UCHAR1-value + schemaError: syntax + approval: Approved + schemaURL: STRING_LITERAL2-illegal-UCHAR1-value.shex + startRow: 4 + startColumn: 27 + endRow: 4 + endColumn: 39 + + - name: STRING_LITERAL2-with-LANGTAG-and-datatype + schemaError: syntax + approval: Approved + schemaURL: STRING_LITERAL2-with-LANGTAG-and-datatype.shex + startRow: 4 + startColumn: 27 + endRow: 4 + endColumn: 60 + + - name: STRING_LITERAL_LONG1-ending-APOSTROPHE4 + schemaError: syntax + approval: Approved + schemaURL: STRING_LITERAL_LONG1-ending-APOSTROPHE4.shex + startRow: 4 + startColumn: 27 + endRow: 4 + endColumn: 37 + + - name: STRING_LITERAL_LONG2-ending-APOSTROPHE3 + schemaError: syntax + approval: Approved + schemaURL: STRING_LITERAL_LONG2-ending-APOSTROPHE3.shex + startRow: 4 + startColumn: 27 + endRow: 6 + endColumn: 1 + + - name: STRING_LITERAL_LONG2-ending-QUOTATION_MARK4 + schemaError: syntax + approval: Approved + schemaURL: STRING_LITERAL_LONG2-ending-QUOTATION_MARK4.shex + startRow: 4 + startColumn: 27 + endRow: 4 + endColumn: 41 + + - name: STRING_LITERAL_LONG2-unterminated + schemaError: syntax + approval: Approved + schemaURL: STRING_LITERAL_LONG2-unterminated.shex + startRow: 4 + startColumn: 27 + endRow: 6 + endColumn: 1 + + - name: a + schemaError: syntax + approval: Approved + schemaURL: a.shex + startRow: 1 + startColumn: 1 + endRow: 2 + endColumn: 1 + + - name: Dot-Minus-emptylanguageStem + schemaError: syntax + approval: Approved + schemaURL: Dot-Minus-emptylanguageStem.shex + startRow: 1 + startColumn: 28 + endRow: 1 + endColumn: 29 + + - name: emptylanguageStem-Minus-emptylanguageStem + schemaError: syntax + approval: Approved + schemaURL: emptylanguageStem-Minus-emptylanguageStem.shex + startRow: 1 + startColumn: 29 + endRow: 1 + endColumn: 30 + + - name: base-no-uri + schemaError: syntax + approval: Approved + schemaURL: base-no-uri.shex + startRow: 3 + startColumn: 5 + endRow: 4 + endColumn: 1 + + - name: base-uri-dot + schemaError: syntax + approval: Approved + schemaURL: base-uri-dot.shex + startRow: 3 + startColumn: 44 + endRow: 4 + endColumn: 1 + + - name: bnodedot + schemaError: syntax + approval: Approved + schemaURL: bnodedot.shex + startRow: 2 + startColumn: 1 + endRow: 2 + endColumn: 15 + + - name: capitol-A + schemaError: syntax + approval: Approved + schemaURL: capitol-A.shex + startRow: 3 + startColumn: 32 + endRow: 4 + endColumn: 6 + + - name: group-no-SEMICOLON-separators + schemaError: syntax + approval: Approved + schemaURL: group-no-SEMICOLON-separators.shex + startRow: 3 + startColumn: 27 + endRow: 4 + endColumn: 27 + + - name: groupShapeConstr-trailing-OR + schemaError: syntax + approval: Approved + schemaURL: groupShapeConstr-trailing-OR.shex + startRow: 3 + startColumn: 59 + endRow: 4 + endColumn: 1 + + - name: literal-0x123 + schemaError: syntax + approval: Approved + schemaURL: literal-0x123.shex + startRow: 4 + startColumn: 27 + endRow: 4 + endColumn: 32 + + - name: open1dotcloseAnnot3 + schemaError: syntax + approval: Approved + schemaURL: open1dotcloseAnnot3.shex + startRow: 3 + startColumn: 39 + endRow: 4 + endColumn: 37 + + - name: predicate-ANON + schemaError: syntax + approval: Approved + schemaURL: predicate-ANON.shex + startRow: 3 + startColumn: 32 + endRow: 4 + endColumn: 5 + + - name: predicate-BLANK_NODE_LABEL + schemaError: syntax + approval: Approved + schemaURL: predicate-BLANK_NODE_LABEL.shex + startRow: 3 + startColumn: 32 + endRow: 4 + endColumn: 9 + + - name: predicate-literal + schemaError: syntax + approval: Approved + schemaURL: predicate-literal.shex + startRow: 3 + startColumn: 32 + endRow: 4 + endColumn: 9 + + - name: predicate-true + schemaError: syntax + approval: Approved + schemaURL: predicate-true.shex + startRow: 3 + startColumn: 32 + endRow: 4 + endColumn: 9 + + - name: prefix-missing + schemaError: syntax + approval: Approved + schemaURL: prefix-missing.shex + startRow: 6 + startColumn: 16 + endRow: 7 + endColumn: 10 + + - name: prefix-missing-1 + schemaError: syntax + approval: Approved + schemaURL: prefix-missing-1.shex + startRow: 4 + startColumn: 32 + endRow: 5 + endColumn: 10 + + - name: prefix-missing-2 + schemaError: syntax + approval: Proposed + schemaURL: prefix-missing-2.shex + # no start/end: the error names both prefixes, so it has no one location. + - name: prefix-no-COLON + schemaError: syntax + approval: Approved + schemaURL: prefix-no-COLON.shex + startRow: 3 + startColumn: 7 + endRow: 3 + endColumn: 11 + + - name: prefix-no-PNAME_NS + schemaError: syntax + approval: Approved + schemaURL: prefix-no-PNAME_NS.shex + startRow: 3 + startColumn: 7 + endRow: 3 + endColumn: 27 + + - name: prefix-no-uri + schemaError: syntax + approval: Approved + schemaURL: prefix-no-uri.shex + startRow: 3 + startColumn: 11 + endRow: 4 + endColumn: 1 + + - name: shapename-a + schemaError: syntax + approval: Approved + schemaURL: shapename-a.shex + startRow: 3 + startColumn: 1 + endRow: 3 + endColumn: 3 + + - name: shapename-literal + schemaError: syntax + approval: Approved + schemaURL: shapename-literal.shex + startRow: 3 + startColumn: 1 + endRow: 3 + endColumn: 14 + + - name: shapename-true + schemaError: syntax + approval: Approved + schemaURL: shapename-true.shex + startRow: 3 + startColumn: 1 + endRow: 3 + endColumn: 6 + + - name: tripleConsraint-no-valueClass + schemaError: syntax + approval: Approved + schemaURL: tripleConsraint-no-valueClass.shex + startRow: 4 + startColumn: 25 + endRow: 5 + endColumn: 1 + + - name: tripleConsraint-with-datatype-and-dot + schemaError: syntax + approval: Approved + schemaURL: tripleConsraint-with-datatype-and-dot.shex + startRow: 3 + startColumn: 48 + endRow: 4 + endColumn: 1 + + - name: tripleConsraint-with-datatype-and-valueSet + schemaError: syntax + approval: Approved + schemaURL: tripleConsraint-with-datatype-and-valueSet.shex + startRow: 3 + startColumn: 48 + endRow: 3 + endColumn: 74 + + - name: tripleConsraint-with-dot-and-datatype + schemaError: syntax + approval: Approved + schemaURL: tripleConsraint-with-dot-and-datatype.shex + startRow: 3 + startColumn: 27 + endRow: 3 + endColumn: 50 + + - name: tripleConsraint-with-two-cardinalities + schemaError: syntax + approval: Approved + schemaURL: tripleConsraint-with-two-cardinalities.shex + startRow: 3 + startColumn: 29 + endRow: 4 + endColumn: 1 + + - name: "1val1iriStemMinusliteral3" + schemaError: syntax + approval: Approved + schemaURL: "1val1iriStemMinusliteral3.shex" + startRow: 3 + startColumn: 28 + endRow: 4 + endColumn: 27 + + - name: "1val1languageStemMinusliteral3" + schemaError: syntax + approval: Approved + schemaURL: "1val1languageStemMinusliteral3.shex" + startRow: 3 + startColumn: 28 + endRow: 4 + endColumn: 27 + + - name: "1val1literalStemMinusiri3" + schemaError: syntax + approval: Approved + schemaURL: "1val1literalStemMinusiri3.shex" + startRow: 3 + startColumn: 28 + endRow: 4 + endColumn: 27 + + - name: "1val1literalStemMinuslanguage3" + schemaError: syntax + approval: Approved + schemaURL: "1val1literalStemMinuslanguage3.shex" + startRow: 3 + startColumn: 28 + endRow: 4 + endColumn: 27 + + - name: INTEGER-in-shape-expression + schemaError: syntax + approval: Approved + schemaURL: INTEGER-in-shape-expression.shex + startRow: 2 + startColumn: 25 + endRow: 2 + endColumn: 28 + + - name: "1dotExtends3" + schemaError: syntax + approval: proposed + schemaURL: "1dotExtends3.shex" diff --git a/package-lock.json b/package-lock.json index 26bf35b1..468ffd68 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "devDependencies": { "@shexjs/parser": "^1.0.0-alpha.28", "@types/shexj": "^2.1.2", + "js-yaml": "^5.4.2", "json-grammar": "^0.3.2", "jsonld": "^9.0.0", "n3": "^2.7.12", @@ -153,6 +154,13 @@ "node": ">=0.8" } }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -299,6 +307,29 @@ ], "license": "BSD-3-Clause" }, + "node_modules/js-yaml": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.4.2.tgz", + "integrity": "sha512-m+aqu+LwO1O6sIopafj8HUVl5aawITwZQe/yHpMCKjaWBaA/d07B/QdMb3529REftiU+RMMHL3Vlsw3hON7vWg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.mjs" + } + }, "node_modules/json-grammar": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/json-grammar/-/json-grammar-0.3.2.tgz", @@ -648,6 +679,12 @@ "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", "dev": true }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -722,6 +759,15 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, + "js-yaml": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.4.2.tgz", + "integrity": "sha512-m+aqu+LwO1O6sIopafj8HUVl5aawITwZQe/yHpMCKjaWBaA/d07B/QdMb3529REftiU+RMMHL3Vlsw3hON7vWg==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "json-grammar": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/json-grammar/-/json-grammar-0.3.2.tgz", diff --git a/package.json b/package.json index bbfd1407..47575cd5 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "test-schema-imports": "bin/checkSchemaImports.js schemas", "vocab": "node vocab/mk_vocab.js", "vocab-check": "node vocab/mk_vocab.js --check", + "vocab-manifest": "node vocab/mk_vocab.js --vocab shex-manifest", "shexr": "node bin/mkShExR.js", "shexr-check": "node bin/mkShExR.js --check" }, @@ -52,6 +53,7 @@ "devDependencies": { "@shexjs/parser": "^1.0.0-alpha.28", "@types/shexj": "^2.1.2", + "js-yaml": "^5.4.2", "json-grammar": "^0.3.2", "jsonld": "^9.0.0", "n3": "^2.7.12", diff --git a/schemas/manifest.yaml b/schemas/manifest.yaml new file mode 100644 index 00000000..b1984b01 --- /dev/null +++ b/schemas/manifest.yaml @@ -0,0 +1,3087 @@ +"@context": + - https://www.w3.org/ns/shex-manifest.jsonld + - ../manifest-context.jsonld +comment: "ShEx representation tests" +entries: + + - name: "0" + approval: Approved + schemaURL: "0.shex" + shexjURL: "0.json" + shexrURL: "0.ttl" + + - name: "1dot" + approval: Approved + schemaURL: "1dot.shex" + shexjURL: "1dot.json" + shexrURL: "1dot.ttl" + + - name: open1dotclose + approval: Approved + schemaURL: open1dotclose.shex + shexjURL: "1dot.json" + shexrURL: "1dot.ttl" + + - name: "1dot-base" + approval: Approved + schemaURL: "1dot-base.shex" + shexjURL: "1dot-base.json" + shexrURL: "1dot-base.ttl" + + - name: "1dot-baseEmptyRef" + approval: Proposed + schemaURL: "1dot-baseEmptyRef.shex" + shexjURL: "1dot-baseEmptyRef.json" + shexrURL: "1dot-baseEmptyRef.ttl" + + - name: "1dot-baseQueryRef" + approval: Proposed + schemaURL: "1dot-baseQueryRef.shex" + shexjURL: "1dot-baseQueryRef.json" + shexrURL: "1dot-baseQueryRef.ttl" + + - name: "1dot-baseDotSegments" + approval: Proposed + schemaURL: "1dot-baseDotSegments.shex" + shexjURL: "1dot-baseDotSegments.json" + shexrURL: "1dot-baseDotSegments.ttl" + + - name: "1dot-baseDotSegmentsTrailing" + approval: Proposed + schemaURL: "1dot-baseDotSegmentsTrailing.shex" + shexjURL: "1dot-baseDotSegmentsTrailing.json" + shexrURL: "1dot-baseDotSegmentsTrailing.ttl" + + - name: "1dotSemi" + approval: Approved + schemaURL: "1dotSemi.shex" + shexjURL: "1dotSemi.json" + shexrURL: "1dotSemi.ttl" + + - name: "1dotLNex" + approval: Approved + schemaURL: "1dotLNex.shex" + shexjURL: "1dotLNex.json" + shexrURL: "1dotLNex.ttl" + + - name: "1dotNS2" + approval: Approved + schemaURL: "1dotNS2.shex" + shexjURL: "1dotNS2.json" + shexrURL: "1dotNS2.ttl" + + - name: "1dotNS2SingleComment" + approval: Approved + schemaURL: "1dotNS2SingleComment.shex" + shexjURL: "1dotNS2SingleComment.json" + shexrURL: "1dotNS2SingleComment.ttl" + + - name: "1dotLNexSingleComment" + approval: Approved + schemaURL: "1dotLNexSingleComment.shex" + shexjURL: "1dotLNexSingleComment.json" + shexrURL: "1dotLNexSingleComment.ttl" + + - name: "1dotNS2MultiComment" + approval: Approved + schemaURL: "1dotNS2MultiComment.shex" + shexjURL: "1dotNS2MultiComment.json" + shexrURL: "1dotNS2MultiComment.ttl" + + - name: "1dotLNexMultiComment" + approval: Approved + schemaURL: "1dotLNexMultiComment.shex" + shexjURL: "1dotLNexMultiComment.json" + shexrURL: "1dotLNexMultiComment.ttl" + + - name: "1dotLNdefault" + approval: Approved + schemaURL: "1dotLNdefault.shex" + shexjURL: "1dotLNdefault.json" + shexrURL: "1dotLNdefault.ttl" + + - name: "1dotNSdefault" + approval: Approved + schemaURL: "1dotNSdefault.shex" + shexjURL: "1dotNSdefault.json" + shexrURL: "1dotNSdefault.ttl" + + - name: "1dotLNex-HYPHEN_MINUS" + approval: Approved + schemaURL: "1dotLNex-HYPHEN_MINUS.shex" + shexjURL: "1dotLNex-HYPHEN_MINUS.json" + shexrURL: "1dotLNex-HYPHEN_MINUS.ttl" + + - name: bnode1dot + approval: Approved + schemaURL: bnode1dot.shex + shexjURL: bnode1dot.json + shexrURL: bnode1dot.ttl + + - name: "1inversedot" + approval: Approved + schemaURL: "1inversedot.shex" + shexjURL: "1inversedot.json" + shexrURL: "1inversedot.ttl" + + - name: "1inversedotIRI" + approval: Approved + schemaURL: "1inversedotIRI.shex" + shexjURL: "1inversedotIRI.json" + shexrURL: "1inversedotIRI.ttl" + + - name: "1inversedotBNODE" + approval: Approved + schemaURL: "1inversedotBNODE.shex" + shexjURL: "1inversedotBNODE.json" + shexrURL: "1inversedotBNODE.ttl" + + - name: "1inversedotRef1" + approval: Approved + schemaURL: "1inversedotRef1.shex" + shexjURL: "1inversedotRef1.json" + shexrURL: "1inversedotRef1.ttl" + + - name: "1inversedotCard2" + approval: Approved + schemaURL: "1inversedotCard2.shex" + shexjURL: "1inversedotCard2.json" + shexrURL: "1inversedotCard2.ttl" + + - name: "1inversedotValueSet" + approval: Approved + schemaURL: "1inversedotValueSet.shex" + shexjURL: "1inversedotValueSet.json" + shexrURL: "1inversedotValueSet.ttl" + + - name: "1inversedotLITERAL" + approval: Approved + schemaURL: "1inversedotLITERAL.shex" + shexjURL: "1inversedotLITERAL.json" + shexrURL: "1inversedotLITERAL.ttl" + + - name: inverseBnodeCoref + approval: Approved + schemaURL: inverseBnodeCoref.shex + shexjURL: inverseBnodeCoref.json + shexrURL: inverseBnodeCoref.ttl + + - name: inverseClosedDiscrim + approval: Approved + schemaURL: inverseClosedDiscrim.shex + shexjURL: inverseClosedDiscrim.json + shexrURL: inverseClosedDiscrim.ttl + + - name: "1dotExtendsInverse" + approval: Approved + schemaURL: "1dotExtendsInverse.shex" + shexjURL: "1dotExtendsInverse.json" + shexrURL: "1dotExtendsInverse.ttl" + + - name: "1dotInverseExtends" + approval: Approved + schemaURL: "1dotInverseExtends.shex" + shexjURL: "1dotInverseExtends.json" + shexrURL: "1dotInverseExtends.ttl" + + - name: "1dot2SameExtends" + approval: Approved + schemaURL: "1dot2SameExtends.shex" + shexjURL: "1dot2SameExtends.json" + shexrURL: "1dot2SameExtends.ttl" + + - name: "2intersectP1ValueSet" + approval: Approved + schemaURL: "2intersectP1ValueSet.shex" + shexjURL: "2intersectP1ValueSet.json" + shexrURL: "2intersectP1ValueSet.ttl" + + - name: RecursionContingent + approval: Approved + schemaURL: RecursionContingent.shex + shexjURL: RecursionContingent.json + shexrURL: RecursionContingent.ttl + + - name: "1datatypePattern" + approval: Approved + schemaURL: "1datatypePattern.shex" + shexjURL: "1datatypePattern.json" + shexrURL: "1datatypePattern.ttl" + + - name: "1NOTvsCard2" + approval: Approved + schemaURL: "1NOTvsCard2.shex" + shexjURL: "1NOTvsCard2.json" + shexrURL: "1NOTvsCard2.ttl" + + - name: "1NOTvsCard2Extra" + approval: Approved + schemaURL: "1NOTvsCard2Extra.shex" + shexjURL: "1NOTvsCard2Extra.json" + shexrURL: "1NOTvsCard2Extra.ttl" + + - name: "1Adot" + approval: Approved + schemaURL: "1Adot.shex" + shexjURL: "1Adot.json" + shexrURL: "1Adot.ttl" + + - name: "1iri" + approval: Approved + schemaURL: "1iri.shex" + shexjURL: "1iri.json" + shexrURL: "1iri.ttl" + + - name: "1bnode" + approval: Approved + schemaURL: "1bnode.shex" + shexjURL: "1bnode.json" + shexrURL: "1bnode.ttl" + + - name: "1literal" + approval: Approved + schemaURL: "1literal.shex" + shexjURL: "1literal.json" + shexrURL: "1literal.ttl" + + - name: "1nonliteral" + approval: Approved + schemaURL: "1nonliteral.shex" + shexjURL: "1nonliteral.json" + shexrURL: "1nonliteral.ttl" + + - name: "1datatype" + approval: Approved + schemaURL: "1datatype.shex" + shexjURL: "1datatype.json" + shexrURL: "1datatype.ttl" + + - name: "1datatypelangString" + approval: Approved + schemaURL: "1datatypelangString.shex" + shexjURL: "1datatypelangString.json" + shexrURL: "1datatypelangString.ttl" + + - name: "1card2" + approval: Approved + schemaURL: "1card2.shex" + shexjURL: "1card2.json" + shexrURL: "1card2.ttl" + + - name: "1card25" + approval: Approved + schemaURL: "1card25.shex" + shexjURL: "1card25.json" + shexrURL: "1card25.ttl" + + - name: "1card2Star" + approval: Approved + schemaURL: "1card2Star.shex" + shexjURL: "1card2Star.json" + shexrURL: "1card2Star.ttl" + + - name: "1cardOpt" + approval: Approved + schemaURL: "1cardOpt.shex" + shexjURL: "1cardOpt.json" + shexrURL: "1cardOpt.ttl" + + - name: open1dotclosecardOpt + approval: Approved + schemaURL: open1dotclosecardOpt.shex + shexjURL: "1cardOpt.json" + shexrURL: "1cardOpt.ttl" + + - name: "1cardPlus" + approval: Approved + schemaURL: "1cardPlus.shex" + shexjURL: "1cardPlus.json" + shexrURL: "1cardPlus.ttl" + + - name: "1cardStar" + approval: Approved + schemaURL: "1cardStar.shex" + shexjURL: "1cardStar.json" + shexrURL: "1cardStar.ttl" + + - name: "1card0" + approval: Approved + schemaURL: "1card0.shex" + shexjURL: "1card0.json" + shexrURL: "1card0.ttl" + + - name: "1card1" + approval: Approved + schemaURL: "1card1.shex" + shexjURL: "1card1.json" + shexrURL: "1card1.ttl" + + - name: "1literalPlus" + approval: Approved + schemaURL: "1literalPlus.shex" + shexjURL: "1literalPlus.json" + shexrURL: "1literalPlus.ttl" + + - name: "1dotRef1" + approval: Approved + schemaURL: "1dotRef1.shex" + shexjURL: "1dotRef1.json" + shexrURL: "1dotRef1.ttl" + + - name: "1dotRefLNex1" + approval: Approved + schemaURL: "1dotRefLNex1.shex" + shexjURL: "1dotRefLNex1.json" + shexrURL: "1dotRefLNex1.ttl" + + - name: "1dotRefSpaceLNex1" + approval: Approved + sameSemanticsAs: "#1dotRefLNex1" + schemaURL: "1dotRefSpaceLNex1.shex" + shexjURL: "1dotRefSpaceLNex1.json" + shexrURL: "1dotRefSpaceLNex1.ttl" + + - name: "1dotRefNS1" + approval: Approved + schemaURL: "1dotRefNS1.shex" + shexjURL: "1dotRefNS1.json" + shexrURL: "1dotRefNS1.ttl" + + - name: "1dotRefSpaceNS1" + approval: Approved + sameSemanticsAs: "#1dotRefNS1" + schemaURL: "1dotRefSpaceNS1.shex" + shexjURL: "1dotRefSpaceNS1.json" + shexrURL: "1dotRefSpaceNS1.ttl" + + - name: "1refbnode1" + approval: Approved + schemaURL: "1refbnode1.shex" + shexjURL: "1refbnode1.json" + shexrURL: "1refbnode1.ttl" + + - name: "1refbnode_with_leading_digit1" + approval: Approved + schemaURL: "1refbnode_with_leading_digit1.shex" + shexjURL: "1refbnode_with_leading_digit1.json" + shexrURL: "1refbnode_with_leading_digit1.ttl" + + - name: "1refbnode_with_leading_underscore1" + approval: Approved + schemaURL: "1refbnode_with_leading_underscore1.shex" + shexjURL: "1refbnode_with_leading_underscore1.json" + shexrURL: "1refbnode_with_leading_underscore1.ttl" + + - name: "1refbnode_with_spanning_PN_CHARS1" + approval: Approved + schemaURL: "1refbnode_with_spanning_PN_CHARS1.shex" + shexjURL: "1refbnode_with_spanning_PN_CHARS1.json" + shexrURL: "1refbnode_with_spanning_PN_CHARS1.ttl" + + - name: "1refbnode_with_spanning_PN_CHARS_BASE1" + approval: Approved + schemaURL: "1refbnode_with_spanning_PN_CHARS_BASE1.shex" + shexjURL: "1refbnode_with_spanning_PN_CHARS_BASE1.json" + shexrURL: "1refbnode_with_spanning_PN_CHARS_BASE1.ttl" + + - name: "3circRefPlus1" + approval: Approved + schemaURL: "3circRefPlus1.shex" + shexjURL: "3circRefPlus1.json" + shexrURL: "3circRefPlus1.ttl" + + - name: "1iriRef1" + approval: Approved + schemaURL: "1iriRef1.shex" + shexjURL: "1iriRef1.json" + shexrURL: "1iriRef1.ttl" + + - name: "1bnodeRef1" + approval: Approved + schemaURL: "1bnodeRef1.shex" + shexjURL: "1bnodeRef1.json" + shexrURL: "1bnodeRef1.ttl" + + - name: "1dotInline1" + approval: Approved + schemaURL: "1dotInline1.shex" + shexjURL: "1dotInline1.json" + shexrURL: "1dotInline1.ttl" + + - name: "1val1IRIREF" + approval: Approved + schemaURL: "1val1IRIREF.shex" + shexjURL: "1val1IRIREF.json" + shexrURL: "1val1IRIREF.ttl" + + - name: "1IRI_with_all_punctuationdot" + approval: Approved + schemaURL: "1IRI_with_all_punctuationdot.shex" + shexjURL: "1IRI_with_all_punctuationdot.json" + shexrURL: "1IRI_with_all_punctuationdot.ttl" + + - name: "1IRI_with_UCHAR.1dot" + approval: Approved + schemaURL: "1IRI_with_UCHAR.1dot.shex" + shexjURL: "1IRI_with_UCHAR.1dot.json" + shexrURL: "1IRI_with_UCHAR.1dot.ttl" + + - name: "1IRI_with_UCHAR8.1dot" + approval: Proposed + schemaURL: "1IRI_with_UCHAR8.1dot.shex" + shexjURL: "1IRI_with_UCHAR8.1dot.json" + shexrURL: "1IRI_with_UCHAR8.1dot.ttl" + + - name: "1val1INTEGER" + approval: Approved + schemaURL: "1val1INTEGER.shex" + shexjURL: "1val1INTEGER.json" + shexrURL: "1val1INTEGER.ttl" + + - name: "1val1DOUBLE" + approval: Approved + schemaURL: "1val1DOUBLE.shex" + shexjURL: "1val1DOUBLE.json" + shexrURL: "1val1DOUBLE.ttl" + + - name: "1val1DOUBLElowercase" + approval: Approved + schemaURL: "1val1DOUBLElowercase.shex" + shexjURL: "1val1DOUBLElowercase.json" + shexrURL: "1val1DOUBLElowercase.ttl" + + - name: "1val1LANGTAG" + approval: Approved + schemaURL: "1val1LANGTAG.shex" + shexjURL: "1val1LANGTAG.json" + shexrURL: "1val1LANGTAG.ttl" + + - name: "1val1IRIREFDatatype" + approval: Approved + schemaURL: "1val1IRIREFDatatype.shex" + shexjURL: "1val1IRIREFDatatype.json" + shexrURL: "1val1IRIREFDatatype.ttl" + + - name: "1val1true" + approval: Approved + schemaURL: "1val1true.shex" + shexjURL: "1val1true.json" + shexrURL: "1val1true.ttl" + + - name: "1val1false" + approval: Approved + schemaURL: "1val1false.shex" + shexjURL: "1val1false.json" + shexrURL: "1val1false.ttl" + + - name: "1val1LNDatatype" + approval: Approved + schemaURL: "1val1LNDatatype.shex" + shexjURL: "1val1LNDatatype.json" + shexrURL: "1val1LNDatatype.ttl" + + - name: "1val1STRING_LITERAL1" + approval: Approved + schemaURL: "1val1STRING_LITERAL1.shex" + shexjURL: "1val1STRING_LITERAL1.json" + shexrURL: "1val1STRING_LITERAL1.ttl" + + - name: "1val1STRING_LITERAL1_with_all_controls" + approval: Approved + schemaURL: "1val1STRING_LITERAL1_with_all_controls.shex" + shexjURL: "1val1STRING_LITERAL1_with_all_controls.json" + shexrURL: "1val1STRING_LITERAL1_with_all_controls.ttl" + + - name: "1val1STRING_LITERAL1_with_all_punctuation" + approval: Approved + schemaURL: "1val1STRING_LITERAL1_with_all_punctuation.shex" + shexjURL: "1val1STRING_LITERAL1_with_all_punctuation.json" + shexrURL: "1val1STRING_LITERAL1_with_all_punctuation.ttl" + + - name: "1val1STRING_LITERAL1_with_ECHAR_escapes" + approval: Approved + schemaURL: "1val1STRING_LITERAL1_with_ECHAR_escapes.shex" + shexjURL: "1val1STRING_LITERAL1_with_ECHAR_escapes.json" + shexrURL: "1val1STRING_LITERAL1_with_ECHAR_escapes.ttl" + + - name: "1val1STRING_LITERAL1_with_ascii_boundaries" + approval: Approved + schemaURL: "1val1STRING_LITERAL1_with_ascii_boundaries.shex" + shexjURL: "1val1STRING_LITERAL1_with_ascii_boundaries.json" + shexrURL: "1val1STRING_LITERAL1_with_ascii_boundaries.ttl" + + - name: "1val1STRING_LITERAL1_with_UTF8_boundaries" + approval: Approved + schemaURL: "1val1STRING_LITERAL1_with_UTF8_boundaries.shex" + shexjURL: "1val1STRING_LITERAL1_with_UTF8_boundaries.json" + shexrURL: "1val1STRING_LITERAL1_with_UTF8_boundaries.ttl" + + - name: "1val2STRING_LITERAL1" + approval: Approved + schemaURL: "1val2STRING_LITERAL1.shex" + shexjURL: "1val2STRING_LITERAL1.json" + shexrURL: "1val2STRING_LITERAL1.ttl" + + - name: "1val1STRING_LITERAL2" + approval: Approved + schemaURL: "1val1STRING_LITERAL2.shex" + shexjURL: "1val1STRING_LITERAL2.json" + shexrURL: "1val1STRING_LITERAL2.ttl" + + - name: "1val1STRING_LITERAL2_with_LANGTAG" + approval: Approved + schemaURL: "1val1STRING_LITERAL2_with_LANGTAG.shex" + shexjURL: "1val1STRING_LITERAL2_with_LANGTAG.json" + shexrURL: "1val1STRING_LITERAL2_with_LANGTAG.ttl" + + - name: "1val1STRING_LITERAL2_with_subtag" + approval: Approved + schemaURL: "1val1STRING_LITERAL2_with_subtag.shex" + shexjURL: "1val1STRING_LITERAL2_with_subtag.json" + shexrURL: "1val1STRING_LITERAL2_with_subtag.ttl" + + - name: "1val1STRING_LITERAL_LONG1" + approval: Approved + schemaURL: "1val1STRING_LITERAL_LONG1.shex" + shexjURL: "1val1STRING_LITERAL_LONG1.json" + shexrURL: "1val1STRING_LITERAL_LONG1.ttl" + + - name: "1val1STRING_LITERAL_LONG2" + approval: Approved + schemaURL: "1val1STRING_LITERAL_LONG2.shex" + shexjURL: "1val1STRING_LITERAL_LONG2.json" + shexrURL: "1val1STRING_LITERAL_LONG2.ttl" + + - name: "1val1STRING_LITERAL_LONG2_with_LANGTAG" + approval: Approved + schemaURL: "1val1STRING_LITERAL_LONG2_with_LANGTAG.shex" + shexjURL: "1val1STRING_LITERAL_LONG2_with_LANGTAG.json" + shexrURL: "1val1STRING_LITERAL_LONG2_with_LANGTAG.ttl" + + - name: "1val1STRING_LITERAL_LONG2_with_subtag" + approval: Approved + schemaURL: "1val1STRING_LITERAL_LONG2_with_subtag.shex" + shexjURL: "1val1STRING_LITERAL_LONG2_with_subtag.json" + shexrURL: "1val1STRING_LITERAL_LONG2_with_subtag.ttl" + + - name: "1datatypeLength" + approval: Approved + schemaURL: "1datatypeLength.shex" + shexjURL: "1datatypeLength.json" + shexrURL: "1datatypeLength.ttl" + + - name: "1literalFractiondigits5" + approval: Approved + schemaURL: "1literalFractiondigits5.shex" + shexjURL: "1literalFractiondigits5.json" + shexrURL: "1literalFractiondigits5.ttl" + + - name: "1literalFractiondigits4" + approval: Approved + schemaURL: "1literalFractiondigits4.shex" + shexjURL: "1literalFractiondigits4.json" + shexrURL: "1literalFractiondigits4.ttl" + + - name: "1literalTotaldigits5" + approval: Approved + schemaURL: "1literalTotaldigits5.shex" + shexjURL: "1literalTotaldigits5.json" + shexrURL: "1literalTotaldigits5.ttl" + + - name: "1literalTotaldigits6" + approval: Approved + schemaURL: "1literalTotaldigits6.shex" + shexjURL: "1literalTotaldigits6.json" + shexrURL: "1literalTotaldigits6.ttl" + + - name: "1literalTotaldigits2" + approval: Approved + schemaURL: "1literalTotaldigits2.shex" + shexjURL: "1literalTotaldigits2.json" + shexrURL: "1literalTotaldigits2.ttl" + + - name: "1floatMininclusiveINTEGER" + approval: Approved + schemaURL: "1floatMininclusiveINTEGER.shex" + shexjURL: "1floatMininclusiveINTEGER.json" + shexrURL: "1floatMininclusiveINTEGER.ttl" + + - name: "1integerMininclusiveINTEGER" + approval: Approved + schemaURL: "1integerMininclusiveINTEGER.shex" + shexjURL: "1integerMininclusiveINTEGER.json" + shexrURL: "1integerMininclusiveINTEGER.ttl" + + - name: "1floatMininclusiveINTEGERLead" + approval: Approved + schemaURL: "1floatMininclusiveINTEGERLead.shex" + shexjURL: "1floatMininclusiveINTEGERLead.json" + shexrURL: "1floatMininclusiveINTEGERLead.ttl" + + - name: "1integerMininclusiveINTEGERLead" + approval: Approved + schemaURL: "1integerMininclusiveINTEGERLead.shex" + shexjURL: "1integerMininclusiveINTEGERLead.json" + shexrURL: "1integerMininclusiveINTEGERLead.ttl" + + - name: "1integerMininclusiveDECIMAL" + approval: Approved + schemaURL: "1integerMininclusiveDECIMAL.shex" + shexjURL: "1integerMininclusiveDECIMAL.json" + shexrURL: "1integerMininclusiveDECIMAL.ttl" + + - name: "1integerMininclusiveDECIMALLeadTrail" + approval: Approved + schemaURL: "1integerMininclusiveDECIMALLeadTrail.shex" + shexjURL: "1integerMininclusiveDECIMALLeadTrail.json" + shexrURL: "1integerMininclusiveDECIMALLeadTrail.ttl" + + - name: "1integerMininclusiveDECIMALint" + approval: Approved + schemaURL: "1integerMininclusiveDECIMALint.shex" + shexjURL: "1integerMininclusiveDECIMALint.json" + shexrURL: "1integerMininclusiveDECIMALint.ttl" + + - name: "1integerMininclusiveDECIMALintLeadTrail" + approval: Approved + schemaURL: "1integerMininclusiveDECIMALintLeadTrail.shex" + shexjURL: "1integerMininclusiveDECIMALintLeadTrail.json" + shexrURL: "1integerMininclusiveDECIMALintLeadTrail.ttl" + + - name: "1integerMininclusiveDOUBLE" + approval: Approved + schemaURL: "1integerMininclusiveDOUBLE.shex" + shexjURL: "1integerMininclusiveDOUBLE.json" + shexrURL: "1integerMininclusiveDOUBLE.ttl" + + - name: "1integerMininclusiveDOUBLELeadTrail" + approval: Approved + schemaURL: "1integerMininclusiveDOUBLELeadTrail.shex" + shexjURL: "1integerMininclusiveDOUBLELeadTrail.json" + shexrURL: "1integerMininclusiveDOUBLELeadTrail.ttl" + + - name: "1integerMininclusiveDOUBLEint" + approval: Approved + schemaURL: "1integerMininclusiveDOUBLEint.shex" + shexjURL: "1integerMininclusiveDOUBLEint.json" + shexrURL: "1integerMininclusiveDOUBLEint.ttl" + + - name: "1integerMininclusiveDOUBLEintLeadTrail" + approval: Approved + schemaURL: "1integerMininclusiveDOUBLEintLeadTrail.shex" + shexjURL: "1integerMininclusiveDOUBLEintLeadTrail.json" + shexrURL: "1integerMininclusiveDOUBLEintLeadTrail.ttl" + + - name: "1decimalMininclusiveINTEGER" + approval: Approved + schemaURL: "1decimalMininclusiveINTEGER.shex" + shexjURL: "1decimalMininclusiveINTEGER.json" + shexrURL: "1decimalMininclusiveINTEGER.ttl" + + - name: "1decimalMininclusiveINTEGERLead" + approval: Approved + schemaURL: "1decimalMininclusiveINTEGERLead.shex" + shexjURL: "1decimalMininclusiveINTEGERLead.json" + shexrURL: "1decimalMininclusiveINTEGERLead.ttl" + + - name: "1decimalMininclusiveDECIMAL" + approval: Approved + schemaURL: "1decimalMininclusiveDECIMAL.shex" + shexjURL: "1decimalMininclusiveDECIMAL.json" + shexrURL: "1decimalMininclusiveDECIMAL.ttl" + + - name: "1decimalMininclusiveDECIMALLeadTrail" + approval: Approved + schemaURL: "1decimalMininclusiveDECIMALLeadTrail.shex" + shexjURL: "1decimalMininclusiveDECIMALLeadTrail.json" + shexrURL: "1decimalMininclusiveDECIMALLeadTrail.ttl" + + - name: "1decimalMininclusiveDECIMALintLeadTrail" + approval: Approved + schemaURL: "1decimalMininclusiveDECIMALintLeadTrail.shex" + shexjURL: "1decimalMininclusiveDECIMALintLeadTrail.json" + shexrURL: "1decimalMininclusiveDECIMALintLeadTrail.ttl" + + - name: "1decimalMininclusiveDOUBLE" + approval: Approved + schemaURL: "1decimalMininclusiveDOUBLE.shex" + shexjURL: "1decimalMininclusiveDOUBLE.json" + shexrURL: "1decimalMininclusiveDOUBLE.ttl" + + - name: "1decimalMininclusiveDOUBLELeadTrail" + approval: Approved + schemaURL: "1decimalMininclusiveDOUBLELeadTrail.shex" + shexjURL: "1decimalMininclusiveDOUBLELeadTrail.json" + shexrURL: "1decimalMininclusiveDOUBLELeadTrail.ttl" + + - name: "1decimalMininclusiveDOUBLEintLeadTrail" + approval: Approved + schemaURL: "1decimalMininclusiveDOUBLEintLeadTrail.shex" + shexjURL: "1decimalMininclusiveDOUBLEintLeadTrail.json" + shexrURL: "1decimalMininclusiveDOUBLEintLeadTrail.ttl" + + - name: "1floatMininclusiveDECIMAL" + approval: Approved + schemaURL: "1floatMininclusiveDECIMAL.shex" + shexjURL: "1floatMininclusiveDECIMAL.json" + shexrURL: "1floatMininclusiveDECIMAL.ttl" + + - name: "1floatMininclusiveDECIMALLeadTrail" + approval: Approved + schemaURL: "1floatMininclusiveDECIMALLeadTrail.shex" + shexjURL: "1floatMininclusiveDECIMALLeadTrail.json" + shexrURL: "1floatMininclusiveDECIMALLeadTrail.ttl" + + - name: "1floatMininclusiveDECIMALintLeadTrail" + approval: Approved + schemaURL: "1floatMininclusiveDECIMALintLeadTrail.shex" + shexjURL: "1floatMininclusiveDECIMALintLeadTrail.json" + shexrURL: "1floatMininclusiveDECIMALintLeadTrail.ttl" + + - name: "1floatMininclusiveDOUBLE" + approval: Approved + schemaURL: "1floatMininclusiveDOUBLE.shex" + shexjURL: "1floatMininclusiveDOUBLE.json" + shexrURL: "1floatMininclusiveDOUBLE.ttl" + + - name: "1floatMininclusiveDOUBLELeadTrail" + approval: Approved + schemaURL: "1floatMininclusiveDOUBLELeadTrail.shex" + shexjURL: "1floatMininclusiveDOUBLELeadTrail.json" + shexrURL: "1floatMininclusiveDOUBLELeadTrail.ttl" + + - name: "1floatMininclusiveDOUBLEintLeadTrail" + approval: Approved + schemaURL: "1floatMininclusiveDOUBLEintLeadTrail.shex" + shexjURL: "1floatMininclusiveDOUBLEintLeadTrail.json" + shexrURL: "1floatMininclusiveDOUBLEintLeadTrail.ttl" + + - name: "1doubleMininclusiveINTEGERLead" + approval: Approved + schemaURL: "1doubleMininclusiveINTEGERLead.shex" + shexjURL: "1doubleMininclusiveINTEGERLead.json" + shexrURL: "1doubleMininclusiveINTEGERLead.ttl" + + - name: "1doubleMininclusiveDECIMAL" + approval: Approved + schemaURL: "1doubleMininclusiveDECIMAL.shex" + shexjURL: "1doubleMininclusiveDECIMAL.json" + shexrURL: "1doubleMininclusiveDECIMAL.ttl" + + - name: "1doubleMininclusiveDECIMALLeadTrail" + approval: Approved + schemaURL: "1doubleMininclusiveDECIMALLeadTrail.shex" + shexjURL: "1doubleMininclusiveDECIMALLeadTrail.json" + shexrURL: "1doubleMininclusiveDECIMALLeadTrail.ttl" + + - name: "1doubleMininclusiveDECIMALintLeadTrail" + approval: Approved + schemaURL: "1doubleMininclusiveDECIMALintLeadTrail.shex" + shexjURL: "1doubleMininclusiveDECIMALintLeadTrail.json" + shexrURL: "1doubleMininclusiveDECIMALintLeadTrail.ttl" + + - name: "1doubleMininclusiveDOUBLE" + approval: Approved + schemaURL: "1doubleMininclusiveDOUBLE.shex" + shexjURL: "1doubleMininclusiveDOUBLE.json" + shexrURL: "1doubleMininclusiveDOUBLE.ttl" + + - name: "1doubleMininclusiveDOUBLELeadTrail" + approval: Approved + schemaURL: "1doubleMininclusiveDOUBLELeadTrail.shex" + shexjURL: "1doubleMininclusiveDOUBLELeadTrail.json" + shexrURL: "1doubleMininclusiveDOUBLELeadTrail.ttl" + + - name: "1doubleMininclusiveDOUBLEintLeadTrail" + approval: Approved + schemaURL: "1doubleMininclusiveDOUBLEintLeadTrail.shex" + shexjURL: "1doubleMininclusiveDOUBLEintLeadTrail.json" + shexrURL: "1doubleMininclusiveDOUBLEintLeadTrail.ttl" + + - name: "1integerMinexclusiveINTEGER" + approval: Approved + schemaURL: "1integerMinexclusiveINTEGER.shex" + shexjURL: "1integerMinexclusiveINTEGER.json" + shexrURL: "1integerMinexclusiveINTEGER.ttl" + + - name: "1integerMinexclusiveDECIMALint" + approval: Approved + schemaURL: "1integerMinexclusiveDECIMALint.shex" + shexjURL: "1integerMinexclusiveDECIMALint.json" + shexrURL: "1integerMinexclusiveDECIMALint.ttl" + + - name: "1integerMinexclusiveDOUBLEint" + approval: Approved + schemaURL: "1integerMinexclusiveDOUBLEint.shex" + shexjURL: "1integerMinexclusiveDOUBLEint.json" + shexrURL: "1integerMinexclusiveDOUBLEint.ttl" + + - name: "1decimalMinexclusiveINTEGER" + approval: Approved + schemaURL: "1decimalMinexclusiveINTEGER.shex" + shexjURL: "1decimalMinexclusiveINTEGER.json" + shexrURL: "1decimalMinexclusiveINTEGER.ttl" + + - name: "1decimalMinexclusiveDECIMAL" + approval: Approved + schemaURL: "1decimalMinexclusiveDECIMAL.shex" + shexjURL: "1decimalMinexclusiveDECIMAL.json" + shexrURL: "1decimalMinexclusiveDECIMAL.ttl" + + - name: "1decimalMinexclusiveDOUBLE" + approval: Approved + schemaURL: "1decimalMinexclusiveDOUBLE.shex" + shexjURL: "1decimalMinexclusiveDOUBLE.json" + shexrURL: "1decimalMinexclusiveDOUBLE.ttl" + + - name: "1floatMinexclusiveINTEGER" + approval: Approved + schemaURL: "1floatMinexclusiveINTEGER.shex" + shexjURL: "1floatMinexclusiveINTEGER.json" + shexrURL: "1floatMinexclusiveINTEGER.ttl" + + - name: "1floatMinexclusiveDECIMAL" + approval: Approved + schemaURL: "1floatMinexclusiveDECIMAL.shex" + shexjURL: "1floatMinexclusiveDECIMAL.json" + shexrURL: "1floatMinexclusiveDECIMAL.ttl" + + - name: "1floatMinexclusiveDOUBLE" + approval: Approved + schemaURL: "1floatMinexclusiveDOUBLE.shex" + shexjURL: "1floatMinexclusiveDOUBLE.json" + shexrURL: "1floatMinexclusiveDOUBLE.ttl" + + - name: "1doubleMinexclusiveINTEGER" + approval: Approved + schemaURL: "1doubleMinexclusiveINTEGER.shex" + shexjURL: "1doubleMinexclusiveINTEGER.json" + shexrURL: "1doubleMinexclusiveINTEGER.ttl" + + - name: "1doubleMinexclusiveDECIMAL" + approval: Approved + schemaURL: "1doubleMinexclusiveDECIMAL.shex" + shexjURL: "1doubleMinexclusiveDECIMAL.json" + shexrURL: "1doubleMinexclusiveDECIMAL.ttl" + + - name: "1doubleMinexclusiveDOUBLE" + approval: Approved + schemaURL: "1doubleMinexclusiveDOUBLE.shex" + shexjURL: "1doubleMinexclusiveDOUBLE.json" + shexrURL: "1doubleMinexclusiveDOUBLE.ttl" + + - name: "1integerMaxinclusiveINTEGER" + approval: Approved + schemaURL: "1integerMaxinclusiveINTEGER.shex" + shexjURL: "1integerMaxinclusiveINTEGER.json" + shexrURL: "1integerMaxinclusiveINTEGER.ttl" + + - name: "1integerMaxinclusiveDECIMALint" + approval: Approved + schemaURL: "1integerMaxinclusiveDECIMALint.shex" + shexjURL: "1integerMaxinclusiveDECIMALint.json" + shexrURL: "1integerMaxinclusiveDECIMALint.ttl" + + - name: "1integerMaxinclusiveDOUBLEint" + approval: Approved + schemaURL: "1integerMaxinclusiveDOUBLEint.shex" + shexjURL: "1integerMaxinclusiveDOUBLEint.json" + shexrURL: "1integerMaxinclusiveDOUBLEint.ttl" + + - name: "1decimalMaxinclusiveINTEGER" + approval: Approved + schemaURL: "1decimalMaxinclusiveINTEGER.shex" + shexjURL: "1decimalMaxinclusiveINTEGER.json" + shexrURL: "1decimalMaxinclusiveINTEGER.ttl" + + - name: "1decimalMaxinclusiveDECIMAL" + approval: Approved + schemaURL: "1decimalMaxinclusiveDECIMAL.shex" + shexjURL: "1decimalMaxinclusiveDECIMAL.json" + shexrURL: "1decimalMaxinclusiveDECIMAL.ttl" + + - name: "1decimalMaxinclusiveDOUBLE" + approval: Approved + schemaURL: "1decimalMaxinclusiveDOUBLE.shex" + shexjURL: "1decimalMaxinclusiveDOUBLE.json" + shexrURL: "1decimalMaxinclusiveDOUBLE.ttl" + + - name: "1floatMaxinclusiveINTEGER" + approval: Approved + schemaURL: "1floatMaxinclusiveINTEGER.shex" + shexjURL: "1floatMaxinclusiveINTEGER.json" + shexrURL: "1floatMaxinclusiveINTEGER.ttl" + + - name: "1floatMaxinclusiveDECIMAL" + approval: Approved + schemaURL: "1floatMaxinclusiveDECIMAL.shex" + shexjURL: "1floatMaxinclusiveDECIMAL.json" + shexrURL: "1floatMaxinclusiveDECIMAL.ttl" + + - name: "1floatMaxinclusiveDOUBLE" + approval: Approved + schemaURL: "1floatMaxinclusiveDOUBLE.shex" + shexjURL: "1floatMaxinclusiveDOUBLE.json" + shexrURL: "1floatMaxinclusiveDOUBLE.ttl" + + - name: "1doubleMaxinclusiveINTEGER" + approval: Approved + schemaURL: "1doubleMaxinclusiveINTEGER.shex" + shexjURL: "1doubleMaxinclusiveINTEGER.json" + shexrURL: "1doubleMaxinclusiveINTEGER.ttl" + + - name: "1doubleMaxinclusiveDECIMAL" + approval: Approved + schemaURL: "1doubleMaxinclusiveDECIMAL.shex" + shexjURL: "1doubleMaxinclusiveDECIMAL.json" + shexrURL: "1doubleMaxinclusiveDECIMAL.ttl" + + - name: "1doubleMaxinclusiveDOUBLE" + approval: Approved + schemaURL: "1doubleMaxinclusiveDOUBLE.shex" + shexjURL: "1doubleMaxinclusiveDOUBLE.json" + shexrURL: "1doubleMaxinclusiveDOUBLE.ttl" + + - name: "1integerMaxexclusiveINTEGER" + approval: Approved + schemaURL: "1integerMaxexclusiveINTEGER.shex" + shexjURL: "1integerMaxexclusiveINTEGER.json" + shexrURL: "1integerMaxexclusiveINTEGER.ttl" + + - name: "1integerMaxexclusiveDECIMALint" + approval: Approved + schemaURL: "1integerMaxexclusiveDECIMALint.shex" + shexjURL: "1integerMaxexclusiveDECIMALint.json" + shexrURL: "1integerMaxexclusiveDECIMALint.ttl" + + - name: "1integerMaxexclusiveDOUBLEint" + approval: Approved + schemaURL: "1integerMaxexclusiveDOUBLEint.shex" + shexjURL: "1integerMaxexclusiveDOUBLEint.json" + shexrURL: "1integerMaxexclusiveDOUBLEint.ttl" + + - name: "1decimalMaxexclusiveINTEGER" + approval: Approved + schemaURL: "1decimalMaxexclusiveINTEGER.shex" + shexjURL: "1decimalMaxexclusiveINTEGER.json" + shexrURL: "1decimalMaxexclusiveINTEGER.ttl" + + - name: "1decimalMaxexclusiveDECIMAL" + approval: Approved + schemaURL: "1decimalMaxexclusiveDECIMAL.shex" + shexjURL: "1decimalMaxexclusiveDECIMAL.json" + shexrURL: "1decimalMaxexclusiveDECIMAL.ttl" + + - name: "1decimalMaxexclusiveDOUBLE" + approval: Approved + schemaURL: "1decimalMaxexclusiveDOUBLE.shex" + shexjURL: "1decimalMaxexclusiveDOUBLE.json" + shexrURL: "1decimalMaxexclusiveDOUBLE.ttl" + + - name: "1decimalMaxexclusivexsd-byte" + approval: Approved + schemaURL: "1decimalMaxexclusivexsd-byte.shex" + shexjURL: "1decimalMaxexclusivexsd-byte.json" + shexrURL: "1decimalMaxexclusivexsd-byte.ttl" + + - name: "1floatMaxexclusiveINTEGER" + approval: Approved + schemaURL: "1floatMaxexclusiveINTEGER.shex" + shexjURL: "1floatMaxexclusiveINTEGER.json" + shexrURL: "1floatMaxexclusiveINTEGER.ttl" + + - name: "1floatMaxexclusiveDECIMAL" + approval: Approved + schemaURL: "1floatMaxexclusiveDECIMAL.shex" + shexjURL: "1floatMaxexclusiveDECIMAL.json" + shexrURL: "1floatMaxexclusiveDECIMAL.ttl" + + - name: "1floatMaxexclusiveDOUBLE" + approval: Approved + schemaURL: "1floatMaxexclusiveDOUBLE.shex" + shexjURL: "1floatMaxexclusiveDOUBLE.json" + shexrURL: "1floatMaxexclusiveDOUBLE.ttl" + + - name: "1doubleMaxexclusiveINTEGER" + approval: Approved + schemaURL: "1doubleMaxexclusiveINTEGER.shex" + shexjURL: "1doubleMaxexclusiveINTEGER.json" + shexrURL: "1doubleMaxexclusiveINTEGER.ttl" + + - name: "1doubleMaxexclusiveINTEGERLead" + approval: Approved + schemaURL: "1doubleMaxexclusiveINTEGERLead.shex" + shexjURL: "1doubleMaxexclusiveINTEGERLead.json" + shexrURL: "1doubleMaxexclusiveINTEGERLead.ttl" + + - name: "1doubleMaxexclusiveDECIMAL" + approval: Approved + schemaURL: "1doubleMaxexclusiveDECIMAL.shex" + shexjURL: "1doubleMaxexclusiveDECIMAL.json" + shexrURL: "1doubleMaxexclusiveDECIMAL.ttl" + + - name: "1doubleMaxexclusiveDECIMALLeadTrail" + approval: Approved + schemaURL: "1doubleMaxexclusiveDECIMALLeadTrail.shex" + shexjURL: "1doubleMaxexclusiveDECIMALLeadTrail.json" + shexrURL: "1doubleMaxexclusiveDECIMALLeadTrail.ttl" + + - name: "1doubleMaxexclusiveDECIMALint" + approval: Approved + schemaURL: "1doubleMaxexclusiveDECIMALint.shex" + shexjURL: "1doubleMaxexclusiveDECIMALint.json" + shexrURL: "1doubleMaxexclusiveDECIMALint.ttl" + + - name: "1doubleMaxexclusiveDECIMALintLeadTrail" + approval: Approved + schemaURL: "1doubleMaxexclusiveDECIMALintLeadTrail.shex" + shexjURL: "1doubleMaxexclusiveDECIMALintLeadTrail.json" + shexrURL: "1doubleMaxexclusiveDECIMALintLeadTrail.ttl" + + - name: "1doubleMaxexclusiveDOUBLE" + approval: Approved + schemaURL: "1doubleMaxexclusiveDOUBLE.shex" + shexjURL: "1doubleMaxexclusiveDOUBLE.json" + shexrURL: "1doubleMaxexclusiveDOUBLE.ttl" + + - name: "1doubleMaxexclusiveDOUBLELeadTrail" + approval: Approved + schemaURL: "1doubleMaxexclusiveDOUBLELeadTrail.shex" + shexjURL: "1doubleMaxexclusiveDOUBLELeadTrail.json" + shexrURL: "1doubleMaxexclusiveDOUBLELeadTrail.ttl" + + - name: "1doubleMaxexclusiveDOUBLEint" + approval: Approved + schemaURL: "1doubleMaxexclusiveDOUBLEint.shex" + shexjURL: "1doubleMaxexclusiveDOUBLEint.json" + shexrURL: "1doubleMaxexclusiveDOUBLEint.ttl" + + - name: "1doubleMaxexclusiveDOUBLEintLeadTrail" + approval: Approved + schemaURL: "1doubleMaxexclusiveDOUBLEintLeadTrail.shex" + shexjURL: "1doubleMaxexclusiveDOUBLEintLeadTrail.json" + shexrURL: "1doubleMaxexclusiveDOUBLEintLeadTrail.ttl" + + - name: "1Length" + approval: Approved + schemaURL: "1Length.shex" + shexjURL: "1Length.json" + shexrURL: "1Length.ttl" + + - name: "1literalLength" + approval: Approved + schemaURL: "1literalLength.shex" + shexjURL: "1literalLength.json" + shexrURL: "1literalLength.ttl" + + - name: "1literalLength19" + approval: Approved + schemaURL: "1literalLength19.shex" + shexjURL: "1literalLength19.json" + shexrURL: "1literalLength19.ttl" + + - name: "1iriLength" + approval: Approved + schemaURL: "1iriLength.shex" + shexjURL: "1iriLength.json" + shexrURL: "1iriLength.ttl" + + - name: "1iriRefLength1" + approval: Approved + schemaURL: "1iriRefLength1.shex" + shexjURL: "1iriRefLength1.json" + shexrURL: "1iriRefLength1.ttl" + + - name: "1bnodeLength" + approval: Approved + schemaURL: "1bnodeLength.shex" + shexjURL: "1bnodeLength.json" + shexrURL: "1bnodeLength.ttl" + + - name: "1nonliteralLength" + approval: Approved + schemaURL: "1nonliteralLength.shex" + shexjURL: "1nonliteralLength.json" + shexrURL: "1nonliteralLength.ttl" + + - name: "1literalMinlength" + approval: Approved + schemaURL: "1literalMinlength.shex" + shexjURL: "1literalMinlength.json" + shexrURL: "1literalMinlength.ttl" + + - name: "1iriMinlength" + approval: Approved + schemaURL: "1iriMinlength.shex" + shexjURL: "1iriMinlength.json" + shexrURL: "1iriMinlength.ttl" + + - name: "1bnodeMinlength" + approval: Approved + schemaURL: "1bnodeMinlength.shex" + shexjURL: "1bnodeMinlength.json" + shexrURL: "1bnodeMinlength.ttl" + + - name: "1nonliteralMinlength" + approval: Approved + schemaURL: "1nonliteralMinlength.shex" + shexjURL: "1nonliteralMinlength.json" + shexrURL: "1nonliteralMinlength.ttl" + + - name: "1literalMaxlength" + approval: Approved + schemaURL: "1literalMaxlength.shex" + shexjURL: "1literalMaxlength.json" + shexrURL: "1literalMaxlength.ttl" + + - name: "1iriMaxlength" + approval: Approved + schemaURL: "1iriMaxlength.shex" + shexjURL: "1iriMaxlength.json" + shexrURL: "1iriMaxlength.ttl" + + - name: "1bnodeMaxlength" + approval: Approved + schemaURL: "1bnodeMaxlength.shex" + shexjURL: "1bnodeMaxlength.json" + shexrURL: "1bnodeMaxlength.ttl" + + - name: "1nonliteralMaxlength" + approval: Approved + schemaURL: "1nonliteralMaxlength.shex" + shexjURL: "1nonliteralMaxlength.json" + shexrURL: "1nonliteralMaxlength.ttl" + + - name: "1literalPattern" + approval: Approved + schemaURL: "1literalPattern.shex" + shexjURL: "1literalPattern.json" + shexrURL: "1literalPattern.ttl" + + - name: "1literalPattern_with_all_meta" + approval: Approved + schemaURL: "1literalPattern_with_all_meta.shex" + shexjURL: "1literalPattern_with_all_meta.json" + shexrURL: "1literalPattern_with_all_meta.ttl" + + - name: "1literalPattern_with_all_controls" + approval: Approved + schemaURL: "1literalPattern_with_all_controls.shex" + shexjURL: "1literalPattern_with_all_controls.json" + shexrURL: "1literalPattern_with_all_controls.ttl" + + - name: "1literalPattern_with_all_punctuation" + approval: Approved + schemaURL: "1literalPattern_with_all_punctuation.shex" + shexjURL: "1literalPattern_with_all_punctuation.json" + shexrURL: "1literalPattern_with_all_punctuation.ttl" + + - name: "1literalPattern_with_ascii_boundaries" + approval: Approved + schemaURL: "1literalPattern_with_ascii_boundaries.shex" + shexjURL: "1literalPattern_with_ascii_boundaries.json" + shexrURL: "1literalPattern_with_ascii_boundaries.ttl" + + - name: "1literalPattern_with_UTF8_boundaries" + approval: Approved + schemaURL: "1literalPattern_with_UTF8_boundaries.shex" + shexjURL: "1literalPattern_with_UTF8_boundaries.json" + shexrURL: "1literalPattern_with_UTF8_boundaries.ttl" + + - name: "1literalPattern_with_REGEXP_escapes" + approval: Approved + schemaURL: "1literalPattern_with_REGEXP_escapes.shex" + shexjURL: "1literalPattern_with_REGEXP_escapes.json" + shexrURL: "1literalPattern_with_REGEXP_escapes.ttl" + + - name: "1literalPattern_with_REGEXP_escapes_bare" + approval: Approved + schemaURL: "1literalPattern_with_REGEXP_escapes_bare.shex" + shexjURL: "1literalPattern_with_REGEXP_escapes_bare.json" + shexrURL: "1literalPattern_with_REGEXP_escapes_bare.ttl" + + - name: "1literalPattern_with_REGEXP_escapes_escaped" + approval: Approved + schemaURL: "1literalPattern_with_REGEXP_escapes_escaped.shex" + shexjURL: "1literalPattern_with_REGEXP_escapes_escaped.json" + shexrURL: "1literalPattern_with_REGEXP_escapes_escaped.ttl" + + - name: "1literalPatterni" + approval: Approved + schemaURL: "1literalPatterni.shex" + shexjURL: "1literalPatterni.json" + shexrURL: "1literalPatterni.ttl" + + - name: "1literalPattern19" + approval: Approved + schemaURL: "1literalPattern19.shex" + shexjURL: "1literalPattern19.json" + shexrURL: "1literalPattern19.ttl" + + - name: "1literalStartPattern" + approval: Approved + schemaURL: "1literalStartPattern.shex" + shexjURL: "1literalStartPattern.json" + shexrURL: "1literalStartPattern.ttl" + + - name: "1literalPatternEnd" + approval: Approved + schemaURL: "1literalPatternEnd.shex" + shexjURL: "1literalPatternEnd.json" + shexrURL: "1literalPatternEnd.ttl" + + - name: "1literalStartPatternEnd" + approval: Approved + schemaURL: "1literalStartPatternEnd.shex" + shexjURL: "1literalStartPatternEnd.json" + shexrURL: "1literalStartPatternEnd.ttl" + + - name: "1literalPatternDollar" + approval: Approved + schemaURL: "1literalPatternDollar.shex" + shexjURL: "1literalPatternDollar.json" + shexrURL: "1literalPatternDollar.ttl" + + - name: "1literalCarrotPatternDollar" + approval: Approved + schemaURL: "1literalCarrotPatternDollar.shex" + shexjURL: "1literalCarrotPatternDollar.json" + shexrURL: "1literalCarrotPatternDollar.ttl" + + - name: "1literalPatternabEnd" + approval: Approved + schemaURL: "1literalPatternabEnd.shex" + shexjURL: "1literalPatternabEnd.json" + shexrURL: "1literalPatternabEnd.ttl" + + - name: "1iriPattern" + approval: Approved + schemaURL: "1iriPattern.shex" + shexjURL: "1iriPattern.json" + shexrURL: "1iriPattern.ttl" + + - name: "1iriPatternbc" + approval: Approved + schemaURL: "1iriPatternbc.shex" + shexjURL: "1iriPatternbc.json" + shexrURL: "1iriPatternbc.ttl" + + - name: "1bnodePattern" + approval: Approved + schemaURL: "1bnodePattern.shex" + shexjURL: "1bnodePattern.json" + shexrURL: "1bnodePattern.ttl" + + - name: "1nonliteralPattern" + approval: Approved + schemaURL: "1nonliteralPattern.shex" + shexjURL: "1nonliteralPattern.json" + shexrURL: "1nonliteralPattern.ttl" + + - name: "1val1dotMinusiri3" + approval: Approved + schemaURL: "1val1dotMinusiri3.shex" + shexjURL: "1val1dotMinusiri3.json" + shexrURL: "1val1dotMinusiri3.ttl" + + - name: "1val1refvsMinusiri3" + approval: Approved + schemaURL: "1val1refvsMinusiri3.shex" + shexjURL: "1val1refvsMinusiri3.json" + shexrURL: "1val1refvsMinusiri3.ttl" + + - name: "1val1dotMinusiriStem3" + approval: Approved + schemaURL: "1val1dotMinusiriStem3.shex" + shexjURL: "1val1dotMinusiriStem3.json" + shexrURL: "1val1dotMinusiriStem3.ttl" + + - name: "1val1iri" + approval: Approved + schemaURL: "1val1iri.shex" + shexjURL: "1val1iri.json" + shexrURL: "1val1iri.ttl" + + - name: "1val1iriStem" + approval: Approved + schemaURL: "1val1iriStem.shex" + shexjURL: "1val1iriStem.json" + shexrURL: "1val1iriStem.ttl" + + - name: "1val1iriStemMinusiri3" + approval: Approved + schemaURL: "1val1iriStemMinusiri3.shex" + shexjURL: "1val1iriStemMinusiri3.json" + shexrURL: "1val1iriStemMinusiri3.ttl" + + - name: "1val1iriStemMinusiriStem3" + approval: Approved + schemaURL: "1val1iriStemMinusiriStem3.shex" + shexjURL: "1val1iriStemMinusiriStem3.json" + shexrURL: "1val1iriStemMinusiriStem3.ttl" + + - name: "1val1dotMinusliteral3" + approval: Approved + schemaURL: "1val1dotMinusliteral3.shex" + shexjURL: "1val1dotMinusliteral3.json" + shexrURL: "1val1dotMinusliteral3.ttl" + + - name: "1val1dotMinusliteralStem3" + approval: Approved + schemaURL: "1val1dotMinusliteralStem3.shex" + shexjURL: "1val1dotMinusliteralStem3.json" + shexrURL: "1val1dotMinusliteralStem3.ttl" + + - name: "1val1literalStem" + approval: Approved + schemaURL: "1val1literalStem.shex" + shexjURL: "1val1literalStem.json" + shexrURL: "1val1literalStem.ttl" + + - name: "1val1literalStemMinusliteral3" + approval: Approved + schemaURL: "1val1literalStemMinusliteral3.shex" + shexjURL: "1val1literalStemMinusliteral3.json" + shexrURL: "1val1literalStemMinusliteral3.ttl" + + - name: "1val1literalStemMinusliteralStem3" + approval: Approved + schemaURL: "1val1literalStemMinusliteralStem3.shex" + shexjURL: "1val1literalStemMinusliteralStem3.json" + shexrURL: "1val1literalStemMinusliteralStem3.ttl" + + - name: "1val1literaliriStem" + approval: Approved + schemaURL: "1val1literaliriStem.shex" + shexjURL: "1val1literaliriStem.json" + shexrURL: "1val1literaliriStem.ttl" + + - name: "1val1literaliriStemMinusliteraliri3" + approval: Approved + schemaURL: "1val1literaliriStemMinusliteraliri3.shex" + shexjURL: "1val1literaliriStemMinusliteraliri3.json" + shexrURL: "1val1literaliriStemMinusliteraliri3.ttl" + + - name: "1val1dotMinuslanguage3" + approval: Approved + schemaURL: "1val1dotMinuslanguage3.shex" + shexjURL: "1val1dotMinuslanguage3.json" + shexrURL: "1val1dotMinuslanguage3.ttl" + + - name: "1val1dotMinuslanguageStem3" + approval: Approved + schemaURL: "1val1dotMinuslanguageStem3.shex" + shexjURL: "1val1dotMinuslanguageStem3.json" + shexrURL: "1val1dotMinuslanguageStem3.ttl" + + - name: "1val1language" + approval: Approved + schemaURL: "1val1language.shex" + shexjURL: "1val1language.json" + shexrURL: "1val1language.ttl" + + - name: "1val1emptylanguageStem" + approval: Approved + schemaURL: "1val1emptylanguageStem.shex" + shexjURL: "1val1emptylanguageStem.json" + shexrURL: "1val1emptylanguageStem.ttl" + + - name: "1val1emptylanguageStemMinuslanguage3" + approval: Approved + schemaURL: "1val1emptylanguageStemMinuslanguage3.shex" + shexjURL: "1val1emptylanguageStemMinuslanguage3.json" + shexrURL: "1val1emptylanguageStemMinuslanguage3.ttl" + + - name: "1val1emptylanguageStemMinuslanguageStem3" + approval: Approved + schemaURL: "1val1emptylanguageStemMinuslanguageStem3.shex" + shexjURL: "1val1emptylanguageStemMinuslanguageStem3.json" + shexrURL: "1val1emptylanguageStemMinuslanguageStem3.ttl" + + - name: "1val1languageStem" + approval: Approved + schemaURL: "1val1languageStem.shex" + shexjURL: "1val1languageStem.json" + shexrURL: "1val1languageStem.ttl" + + - name: "1val1languageStemMinuslanguage3" + approval: Approved + schemaURL: "1val1languageStemMinuslanguage3.shex" + shexjURL: "1val1languageStemMinuslanguage3.json" + shexrURL: "1val1languageStemMinuslanguage3.ttl" + + - name: "1val1languageStemMinuslanguageStem3" + approval: Approved + schemaURL: "1val1languageStemMinuslanguageStem3.shex" + shexjURL: "1val1languageStemMinuslanguageStem3.json" + shexrURL: "1val1languageStemMinuslanguageStem3.ttl" + + - name: "1val1literal" + approval: Approved + schemaURL: "1val1literal.shex" + shexjURL: "1val1literal.json" + shexrURL: "1val1literal.ttl" + + - name: "1val1literallanguageStem" + approval: Approved + schemaURL: "1val1literallanguageStem.shex" + shexjURL: "1val1literallanguageStem.json" + shexrURL: "1val1literallanguageStem.ttl" + + - name: "1val1literallanguageStemMinusliterallanguage3" + approval: Approved + schemaURL: "1val1literallanguageStemMinusliterallanguage3.shex" + shexjURL: "1val1literallanguageStemMinusliterallanguage3.json" + shexrURL: "1val1literallanguageStemMinusliterallanguage3.ttl" + + - name: "1val1literalAtlanguageStem" + approval: Approved + schemaURL: "1val1literalAtlanguageStem.shex" + shexjURL: "1val1literalAtlanguageStem.json" + shexrURL: "1val1literalAtlanguageStem.ttl" + + - name: "1val1literalAtlanguageStemMinusliteralAtlanguage3" + approval: Approved + schemaURL: "1val1literalAtlanguageStemMinusliteralAtlanguage3.shex" + shexjURL: "1val1literalAtlanguageStemMinusliteralAtlanguage3.json" + shexrURL: "1val1literalAtlanguageStemMinusliteralAtlanguage3.ttl" + + - name: "2dot" + approval: Approved + schemaURL: "2dot.shex" + shexjURL: "2dot.json" + shexrURL: "2dot.ttl" + + - name: "2dotSemis" + approval: Approved + sameSemanticsAs: "#2dotSemis" + schemaURL: "2dotSemis.shex" + shexjURL: "2dotSemis.json" + shexrURL: "2dotSemis.ttl" + + - name: open2dotclose + approval: Approved + sameSemanticsAs: "#2dotSemis" + schemaURL: open2dotclose.shex + shexjURL: open2dotclose.json + shexrURL: open2dotclose.ttl + + - name: open2dotsemisclose + approval: Approved + sameSemanticsAs: "#2dotSemis" + schemaURL: open2dotsemisclose.shex + shexjURL: open2dotsemisclose.json + shexrURL: open2dotsemisclose.ttl + + - name: "3Eachdot" + approval: Approved + schemaURL: "3Eachdot.shex" + shexjURL: "3Eachdot.json" + shexrURL: "3Eachdot.ttl" + + - name: open3Eachdotclose + approval: Approved + sameSemanticsAs: "#3Eachdot" + schemaURL: open3Eachdotclose.shex + shexjURL: open3Eachdotclose.json + shexrURL: open3Eachdotclose.ttl + + - name: "1dotOne1dot" + approval: Approved + schemaURL: "1dotOne1dot.shex" + shexjURL: "1dotOne1dot.json" + shexrURL: "1dotOne1dot.ttl" + + - name: openopen1dotOr1dotclose + approval: Approved + schemaURL: openopen1dotOr1dotclose.shex + shexjURL: "1dotOne1dot.json" + shexrURL: "1dotOne1dot.ttl" + + - name: "1dotSemiOne1dotSemi" + approval: Approved + schemaURL: "1dotSemiOne1dotSemi.shex" + shexjURL: "1dotSemiOne1dotSemi.json" + shexrURL: "1dotSemiOne1dotSemi.ttl" + + - name: open1dotOne1dotclose + approval: Approved + sameSemanticsAs: "#1dotSemiOne1dotSemi" + schemaURL: open1dotOne1dotclose.shex + shexjURL: open1dotOne1dotclose.json + shexrURL: open1dotOne1dotclose.ttl + + - name: open1dotSemiOne1dotSemicloseSemi + approval: Approved + sameSemanticsAs: "#1dotSemiOne1dotSemi" + schemaURL: open1dotSemiOne1dotSemicloseSemi.shex + shexjURL: open1dotSemiOne1dotSemicloseSemi.json + shexrURL: open1dotSemiOne1dotSemicloseSemi.ttl + + - name: "2dotOne1dot" + approval: Approved + schemaURL: "2dotOne1dot.shex" + shexjURL: "2dotOne1dot.json" + shexrURL: "2dotOne1dot.ttl" + + - name: "2dotSemiOne1dotSemi" + approval: Approved + sameSemanticsAs: "#2dotOne1dot" + schemaURL: "2dotSemiOne1dotSemi.shex" + shexjURL: "2dotSemiOne1dotSemi.json" + shexrURL: "2dotSemiOne1dotSemi.ttl" + + - name: open2dotOne1dotclose + approval: Approved + sameSemanticsAs: "#2dotOne1dot" + schemaURL: open2dotOne1dotclose.shex + shexjURL: open2dotOne1dotclose.json + shexrURL: open2dotOne1dotclose.ttl + + - name: open2dotSemisOne1dotSemiclose + approval: Approved + sameSemanticsAs: "#2dotOne1dot" + schemaURL: open2dotSemisOne1dotSemiclose.shex + shexjURL: open2dotSemisOne1dotSemiclose.json + shexrURL: open2dotSemisOne1dotSemiclose.ttl + + - name: openopen2dotcloseOne1dotclose + approval: Approved + sameSemanticsAs: "#2dotOne1dot" + schemaURL: openopen2dotcloseOne1dotclose.shex + shexjURL: openopen2dotcloseOne1dotclose.json + shexrURL: openopen2dotcloseOne1dotclose.ttl + + - name: openopen2dotSemiscloseOne1dotSemiclose + approval: Approved + sameSemanticsAs: "#2dotOne1dot" + schemaURL: openopen2dotSemiscloseOne1dotSemiclose.shex + shexjURL: openopen2dotSemiscloseOne1dotSemiclose.json + shexrURL: openopen2dotSemiscloseOne1dotSemiclose.ttl + + - name: open1dotopen1dotOne1dotcloseclose + approval: Approved + schemaURL: open1dotopen1dotOne1dotcloseclose.shex + shexjURL: open1dotopen1dotOne1dotcloseclose.json + shexrURL: open1dotopen1dotOne1dotcloseclose.ttl + + - name: open1dotopen1dotSemiOne1dotSemicloseSemicloseSemi + approval: Approved + sameSemanticsAs: "#open1dotopen1dotOne1dotcloseclose" + schemaURL: open1dotopen1dotSemiOne1dotSemicloseSemicloseSemi.shex + shexjURL: open1dotopen1dotSemiOne1dotSemicloseSemicloseSemi.json + shexrURL: open1dotopen1dotSemiOne1dotSemicloseSemicloseSemi.ttl + + - name: "1dotOne2dot" + approval: Approved + schemaURL: "1dotOne2dot.shex" + shexjURL: "1dotOne2dot.json" + shexrURL: "1dotOne2dot.ttl" + + - name: open1dotOneopen2dotcloseclose + approval: Approved + schemaURL: open1dotOneopen2dotcloseclose.shex + shexjURL: open1dotOneopen2dotcloseclose.json + shexrURL: open1dotOneopen2dotcloseclose.ttl + + - name: openopen1dotOne1dotclose1dotclose + approval: Approved + schemaURL: openopen1dotOne1dotclose1dotclose.shex + shexjURL: openopen1dotOne1dotclose1dotclose.json + shexrURL: openopen1dotOne1dotclose1dotclose.ttl + + - name: "1val1vExprRefIRIREF1" + approval: Approved + schemaURL: "1val1vExprRefIRIREF1.shex" + shexjURL: "1val1vExprRefIRIREF1.json" + shexrURL: "1val1vExprRefIRIREF1.ttl" + + - name: "1val1vExprRefbnode1" + approval: Approved + schemaURL: "1val1vExprRefbnode1.shex" + shexjURL: "1val1vExprRefbnode1.json" + shexrURL: "1val1vExprRefbnode1.ttl" + + - name: "1dotRefAND3" + approval: Approved + schemaURL: "1dotRefAND3.shex" + shexjURL: "1dotRefAND3.json" + shexrURL: "1dotRefAND3.ttl" + + - name: "1val1vExpr1AND1AND1Ref3" + approval: Approved + schemaURL: "1val1vExpr1AND1AND1Ref3.shex" + shexjURL: "1val1vExpr1AND1AND1Ref3.json" + shexrURL: "1val1vExpr1AND1AND1Ref3.ttl" + + - name: "1val1vExprRefAND3" + approval: Approved + schemaURL: "1val1vExprRefAND3.shex" + shexjURL: "1val1vExprRefAND3.json" + shexrURL: "1val1vExprRefAND3.ttl" + + - name: "1val1vExprAND3" + approval: Approved + schemaURL: "1val1vExprAND3.shex" + shexjURL: "1val1vExprAND3.json" + shexrURL: "1val1vExprAND3.ttl" + + - name: "1dotRefOR3" + approval: Approved + schemaURL: "1dotRefOR3.shex" + shexjURL: "1dotRefOR3.json" + shexrURL: "1dotRefOR3.ttl" + + - name: "1val1vExpr1OR1OR1Ref3" + approval: Approved + schemaURL: "1val1vExpr1OR1OR1Ref3.shex" + shexjURL: "1val1vExpr1OR1OR1Ref3.json" + shexrURL: "1val1vExpr1OR1OR1Ref3.ttl" + + - name: "1val1vExprRefOR3" + approval: Approved + schemaURL: "1val1vExprRefOR3.shex" + shexjURL: "1val1vExprRefOR3.json" + shexrURL: "1val1vExprRefOR3.ttl" + + - name: "1val1vExprOR3" + approval: Approved + schemaURL: "1val1vExprOR3.shex" + shexjURL: "1val1vExprOR3.json" + shexrURL: "1val1vExprOR3.ttl" + + #START + - name: "1NOTIRI" + approval: Approved + schemaURL: "1NOTIRI.shex" + shexjURL: "1NOTIRI.json" + shexrURL: "1NOTIRI.ttl" + + - name: "1NOTNOTIRI" + approval: Approved + schemaURL: "1NOTNOTIRI.shex" + shexjURL: "1NOTNOTIRI.json" + shexrURL: "1NOTNOTIRI.ttl" + + - name: "1NOTvs" + approval: Approved + schemaURL: "1NOTvs.shex" + shexjURL: "1NOTvs.json" + shexrURL: "1NOTvs.ttl" + + - name: "1NOTNOTvs" + approval: Approved + schemaURL: "1NOTNOTvs.shex" + shexjURL: "1NOTNOTvs.json" + shexrURL: "1NOTNOTvs.ttl" + + - name: "1NOTdot" + approval: Approved + schemaURL: "1NOTdot.shex" + shexjURL: "1NOTdot.json" + shexrURL: "1NOTdot.ttl" + + - name: "1NOTNOTdot" + approval: Approved + schemaURL: "1NOTNOTdot.shex" + shexjURL: "1NOTNOTdot.json" + shexrURL: "1NOTNOTdot.ttl" + + - name: "1_NOTliteral_ANDvs" + approval: Approved + schemaURL: "1_NOTliteral_ANDvs.shex" + shexjURL: "1_NOTliteral_ANDvs.json" + shexrURL: "1_NOTliteral_ANDvs.ttl" + + - name: "1NOT_literalANDvs_" + approval: Approved + schemaURL: "1NOT_literalANDvs_.shex" + shexjURL: "1NOT_literalANDvs_.json" + shexrURL: "1NOT_literalANDvs_.ttl" + + - name: "1NOTliteralANDvs" + approval: Approved + schemaURL: "1NOTliteralANDvs.shex" + shexjURL: "1NOTliteralANDvs.json" + shexrURL: "1NOTliteralANDvs.ttl" + + - name: "1_NOTvs_ANDvs" + approval: Approved + schemaURL: "1_NOTvs_ANDvs.shex" + shexjURL: "1_NOTvs_ANDvs.json" + shexrURL: "1_NOTvs_ANDvs.ttl" + + - name: "1NOT_vsANDvs_" + approval: Approved + schemaURL: "1NOT_vsANDvs_.shex" + shexjURL: "1NOT_vsANDvs_.json" + shexrURL: "1NOT_vsANDvs_.ttl" + + - name: "1NOTvsANDvs" + approval: Approved + schemaURL: "1NOTvsANDvs.shex" + shexjURL: "1NOTvsANDvs.json" + shexrURL: "1NOTvsANDvs.ttl" + + - name: "1_NOTliteral_ORvs" + approval: Approved + schemaURL: "1_NOTliteral_ORvs.shex" + shexjURL: "1_NOTliteral_ORvs.json" + shexrURL: "1_NOTliteral_ORvs.ttl" + + - name: "1NOT_literalORvs_" + approval: Approved + schemaURL: "1NOT_literalORvs_.shex" + shexjURL: "1NOT_literalORvs_.json" + shexrURL: "1NOT_literalORvs_.ttl" + + - name: "1NOTliteralORvs" + approval: Approved + schemaURL: "1NOTliteralORvs.shex" + shexjURL: "1NOTliteralORvs.json" + shexrURL: "1NOTliteralORvs.ttl" + + - name: "1_NOTvs_ORvs" + approval: Approved + schemaURL: "1_NOTvs_ORvs.shex" + shexjURL: "1_NOTvs_ORvs.json" + shexrURL: "1_NOTvs_ORvs.ttl" + + - name: "1NOT_vsORvs_" + approval: Approved + schemaURL: "1NOT_vsORvs_.shex" + shexjURL: "1NOT_vsORvs_.json" + shexrURL: "1NOT_vsORvs_.ttl" + + - name: "1NOTvsORvs" + approval: Approved + schemaURL: "1NOTvsORvs.shex" + shexjURL: "1NOTvsORvs.json" + shexrURL: "1NOTvsORvs.ttl" + + - name: NOT1NOTvs + approval: Approved + schemaURL: NOT1NOTvs.shex + shexjURL: NOT1NOTvs.json + shexrURL: NOT1NOTvs.ttl + + #END + - name: "1val1vExpr1AND1OR1Ref3" + approval: Approved + schemaURL: "1val1vExpr1AND1OR1Ref3.shex" + shexjURL: "1val1vExpr1AND1OR1Ref3.json" + shexrURL: "1val1vExpr1AND1OR1Ref3.ttl" + + - name: "1val1vExpr1OR1AND1Ref3" + approval: Approved + schemaURL: "1val1vExpr1OR1AND1Ref3.shex" + shexjURL: "1val1vExpr1OR1AND1Ref3.json" + shexrURL: "1val1vExpr1OR1AND1Ref3.ttl" + + - name: open3Onedotclosecard2 + approval: Approved + schemaURL: open3Onedotclosecard2.shex + shexjURL: open3Onedotclosecard2.json + shexrURL: open3Onedotclosecard2.ttl + + - name: open3Onedotclosecard23 + approval: Approved + schemaURL: open3Onedotclosecard23.shex + shexjURL: open3Onedotclosecard23.json + shexrURL: open3Onedotclosecard23.ttl + + - name: open4Onedotclosecard23 + approval: Approved + schemaURL: open4Onedotclosecard23.shex + shexjURL: open4Onedotclosecard23.json + shexrURL: open4Onedotclosecard23.ttl + + - name: open3Eachdotclosecard23 + approval: Approved + schemaURL: open3Eachdotclosecard23.shex + shexjURL: open3Eachdotclosecard23.json + shexrURL: open3Eachdotclosecard23.ttl + + - name: "1val1vShapeANDRef3" + approval: Approved + schemaURL: "1val1vShapeANDRef3.shex" + shexjURL: "1val1vShapeANDRef3.json" + shexrURL: "1val1vShapeANDRef3.ttl" + + - name: "1dotClosed" + approval: Approved + schemaURL: "1dotClosed.shex" + shexjURL: "1dotClosed.json" + shexrURL: "1dotClosed.ttl" + + - name: "1val1IRIREFExtra1" + approval: Approved + schemaURL: "1val1IRIREFExtra1.shex" + shexjURL: "1val1IRIREFExtra1.json" + shexrURL: "1val1IRIREFExtra1.ttl" + + - name: "1val1IRIREFExtra1Closed" + approval: Approved + schemaURL: "1val1IRIREFExtra1Closed.shex" + shexjURL: "1val1IRIREFExtra1Closed.json" + shexrURL: "1val1IRIREFExtra1Closed.ttl" + + - name: "1val1IRIREFClosedExtra1" + approval: Approved + schemaURL: "1val1IRIREFClosedExtra1.shex" + shexjURL: "1val1IRIREFClosedExtra1.json" + shexrURL: "1val1IRIREFClosedExtra1.ttl" + + - name: "1val2IRIREFExtra1" + approval: Approved + schemaURL: "1val2IRIREFExtra1.shex" + shexjURL: "1val2IRIREFExtra1.json" + shexrURL: "1val2IRIREFExtra1.ttl" + + - name: "1val2IRIREFPlusExtra1" + approval: Approved + schemaURL: "1val2IRIREFPlusExtra1.shex" + shexjURL: "1val2IRIREFPlusExtra1.json" + shexrURL: "1val2IRIREFPlusExtra1.ttl" + + - name: "1val1IRIREFExtra1p2" + approval: Approved + schemaURL: "1val1IRIREFExtra1p2.shex" + shexjURL: "1val1IRIREFExtra1p2.json" + shexrURL: "1val1IRIREFExtra1p2.ttl" + + - name: "1val1IRIREFExtra1One" + approval: Approved + schemaURL: "1val1IRIREFExtra1One.shex" + shexjURL: "1val1IRIREFExtra1One.json" + shexrURL: "1val1IRIREFExtra1One.ttl" + + - name: "1dotExtra1" + approval: Approved + schemaURL: "1dotExtra1.shex" + shexjURL: "1dotExtra1.json" + shexrURL: "1dotExtra1.ttl" + + - name: "3EachdotExtra3" + approval: Approved + schemaURL: "3EachdotExtra3.shex" + shexjURL: "3EachdotExtra3.json" + shexrURL: "3EachdotExtra3.ttl" + + - name: "3Eachdot3Extra" + approval: Approved + schemaURL: "3Eachdot3Extra.shex" + shexjURL: "3Eachdot3Extra.json" + shexrURL: "3Eachdot3Extra.ttl" + + - name: "3EachdotExtra3NLex" + approval: Approved + schemaURL: "3EachdotExtra3NLex.shex" + shexjURL: "3EachdotExtra3NLex.json" + shexrURL: "3EachdotExtra3NLex.ttl" + + - name: startRefIRIREF + approval: Approved + schemaURL: startRefIRIREF.shex + shexjURL: startRefIRIREF.json + shexrURL: startRefIRIREF.ttl + + - name: startRefbnode + approval: Approved + schemaURL: startRefbnode.shex + shexjURL: startRefbnode.json + shexrURL: startRefbnode.ttl + + - name: startInline + approval: Approved + schemaURL: startInline.shex + shexjURL: startInline.json + shexrURL: startInline.ttl + + - name: startEqualSpaceInline + approval: Approved + schemaURL: startEqualSpaceInline.shex + shexjURL: startEqualSpaceInline.json + shexrURL: startEqualSpaceInline.ttl + + - name: startSpaceEqualInline + approval: Approved + schemaURL: startSpaceEqualInline.shex + shexjURL: startSpaceEqualInline.json + shexrURL: startSpaceEqualInline.ttl + + - name: "1IRIInline0" + approval: Approved + schemaURL: "1IRIInline0.shex" + shexjURL: "1IRIInline0.json" + shexrURL: "1IRIInline0.ttl" + + - name: "2EachInclude1" + approval: Approved + schemaURL: "2EachInclude1.shex" + shexjURL: "2EachInclude1.json" + shexrURL: "2EachInclude1.ttl" + + - name: "2EachInclude1-after" + approval: Approved + schemaURL: "2EachInclude1-after.shex" + shexjURL: "2EachInclude1-after.json" + shexrURL: "2EachInclude1-after.ttl" + + - name: "2OneInclude1" + approval: Approved + schemaURL: "2OneInclude1.shex" + shexjURL: "2OneInclude1.json" + shexrURL: "2OneInclude1.ttl" + + - name: "2OneInclude1-after" + approval: Approved + schemaURL: "2OneInclude1-after.shex" + shexjURL: "2OneInclude1-after.json" + shexrURL: "2OneInclude1-after.ttl" + + - name: openEachInclude1dotclosecardPlusc1IRI + approval: Approved + schemaURL: openEachInclude1dotclosecardPlusc1IRI.shex + shexjURL: openEachInclude1dotclosecardPlusc1IRI.json + shexrURL: openEachInclude1dotclosecardPlusc1IRI.ttl + + - name: openOneInclude1dotclosecardPlusc1IRI + approval: Approved + schemaURL: openOneInclude1dotclosecardPlusc1IRI.shex + shexjURL: openOneInclude1dotclosecardPlusc1IRI.json + shexrURL: openOneInclude1dotclosecardPlusc1IRI.ttl + + - name: "1dotAnnotIRIREF" + approval: Approved + schemaURL: "1dotAnnotIRIREF.shex" + shexjURL: "1dotAnnotIRIREF.json" + shexrURL: "1dotAnnotIRIREF.ttl" + + - name: "1dotAnnotSTRING_LITERAL1" + approval: Approved + schemaURL: "1dotAnnotSTRING_LITERAL1.shex" + shexjURL: "1dotAnnotSTRING_LITERAL1.json" + shexrURL: "1dotAnnotSTRING_LITERAL1.ttl" + + - name: "1dotAnnot3" + approval: Approved + schemaURL: "1dotAnnot3.shex" + shexjURL: "1dotAnnot3.json" + shexrURL: "1dotAnnot3.ttl" + + - name: "1inversedotAnnot3" + approval: Approved + schemaURL: "1inversedotAnnot3.shex" + shexjURL: "1inversedotAnnot3.json" + shexrURL: "1inversedotAnnot3.ttl" + + - name: "1dotShapeAnnotIRIREF" + approval: Approved + schemaURL: "1dotShapeAnnotIRIREF.shex" + shexjURL: "1dotShapeAnnotIRIREF.json" + shexrURL: "1dotShapeAnnotIRIREF.ttl" + + - name: "1dotShapePlusAnnotIRIREF" + approval: Approved + schemaURL: "1dotShapePlusAnnotIRIREF.shex" + shexjURL: "1dotShapePlusAnnotIRIREF.json" + shexrURL: "1dotShapePlusAnnotIRIREF.ttl" + + - name: "1dotShapeAnnotAIRIREF" + approval: Approved + schemaURL: "1dotShapeAnnotAIRIREF.shex" + shexjURL: "1dotShapeAnnotAIRIREF.json" + shexrURL: "1dotShapeAnnotAIRIREF.ttl" + + - name: "1dotShapeAnnotSTRING_LITERAL1" + approval: Approved + schemaURL: "1dotShapeAnnotSTRING_LITERAL1.shex" + shexjURL: "1dotShapeAnnotSTRING_LITERAL1.json" + shexrURL: "1dotShapeAnnotSTRING_LITERAL1.ttl" + + - name: "2val1refvsAnnot" + approval: Approved + schemaURL: "2val1refvsAnnot.shex" + shexjURL: "2val1refvsAnnot.json" + shexrURL: "2val1refvsAnnot.ttl" + + - name: open3EachdotcloseAnnot3 + approval: Approved + schemaURL: open3EachdotcloseAnnot3.shex + shexjURL: open3EachdotcloseAnnot3.json + shexrURL: open3EachdotcloseAnnot3.ttl + + - name: "1dotCode1" + approval: Approved + schemaURL: "1dotCode1.shex" + shexjURL: "1dotCode1.json" + shexrURL: "1dotCode1.ttl" + + - name: open1dotcloseCode1 + approval: Approved + schemaURL: open1dotcloseCode1.shex + shexjURL: "1dotCode1.json" + shexrURL: "1dotCode1.ttl" + + - name: "1dotNoCode1" + approval: Approved + schemaURL: "1dotNoCode1.shex" + shexjURL: "1dotNoCode1.json" + shexrURL: "1dotNoCode1.ttl" + + - name: "1inversedotCode1" + approval: Approved + schemaURL: "1inversedotCode1.shex" + shexjURL: "1inversedotCode1.json" + shexrURL: "1inversedotCode1.ttl" + + - name: "1dotCode3" + approval: Approved + schemaURL: "1dotCode3.shex" + shexjURL: "1dotCode3.json" + shexrURL: "1dotCode3.ttl" + + - name: openopen1dotcloseCode1closeCode3 + approval: Approved + schemaURL: openopen1dotcloseCode1closeCode3.shex + shexjURL: "1dotCode3.json" + shexrURL: "1dotCode3.ttl" + + - name: "1dotNoCode3" + approval: Approved + schemaURL: "1dotNoCode3.shex" + shexjURL: "1dotNoCode3.json" + shexrURL: "1dotNoCode3.ttl" + + - name: "1dotCode3fail" + approval: Approved + schemaURL: "1dotCode3fail.shex" + shexjURL: "1dotCode3fail.json" + shexrURL: "1dotCode3fail.ttl" + + - name: "1dotCodeWithEscapes1" + approval: Approved + schemaURL: "1dotCodeWithEscapes1.shex" + shexjURL: "1dotCodeWithEscapes1.json" + shexrURL: "1dotCodeWithEscapes1.ttl" + + - name: "1dotShapeCode1" + approval: Approved + schemaURL: "1dotShapeCode1.shex" + shexjURL: "1dotShapeCode1.json" + shexrURL: "1dotShapeCode1.ttl" + + - name: "1dotShapeNoCode1" + approval: Approved + schemaURL: "1dotShapeNoCode1.shex" + shexjURL: "1dotShapeNoCode1.json" + shexrURL: "1dotShapeNoCode1.ttl" + + - name: open3EachdotcloseCode1 + approval: Approved + schemaURL: open3EachdotcloseCode1.shex + shexjURL: open3EachdotcloseCode1.json + shexrURL: open3EachdotcloseCode1.ttl + + - name: "1dotShapeCode1fail" + approval: Approved + schemaURL: "1dotShapeCode1fail.shex" + shexjURL: "1dotShapeCode1fail.json" + shexrURL: "1dotShapeCode1fail.ttl" + + - name: open3EachdotcloseCode1fail + approval: Approved + schemaURL: open3EachdotcloseCode1fail.shex + shexjURL: open3EachdotcloseCode1fail.json + shexrURL: open3EachdotcloseCode1fail.ttl + + - name: open2OnedotcloseCode1fail + approval: Approved + schemaURL: open2OnedotcloseCode1fail.shex + shexjURL: open2OnedotcloseCode1fail.json + shexrURL: open2OnedotcloseCode1fail.ttl + + - name: startCode1 + approval: Approved + schemaURL: startCode1.shex + shexjURL: startCode1.json + shexrURL: startCode1.ttl + + - name: startNoCode1 + approval: Approved + schemaURL: startNoCode1.shex + shexjURL: startNoCode1.json + shexrURL: startNoCode1.ttl + + - name: startCode1fail + approval: Approved + schemaURL: startCode1fail.shex + shexjURL: startCode1fail.json + shexrURL: startCode1fail.ttl + + - name: startCode1startRef + approval: Approved + schemaURL: startCode1startRef.shex + shexjURL: startCode1startRef.json + shexrURL: startCode1startRef.ttl + + - name: startCode1startReffail + approval: Approved + schemaURL: startCode1startReffail.shex + shexjURL: startCode1startReffail.json + shexrURL: startCode1startReffail.ttl + + - name: startCode3 + approval: Approved + schemaURL: startCode3.shex + shexjURL: startCode3.json + shexrURL: startCode3.ttl + + - name: startCode3fail + approval: Approved + schemaURL: startCode3fail.shex + shexjURL: startCode3fail.json + shexrURL: startCode3fail.ttl + + - name: "2val1refvsCode" + approval: Approved + schemaURL: "2val1refvsCode.shex" + shexjURL: "2val1refvsCode.json" + shexrURL: "2val1refvsCode.ttl" + + - name: open3Eachdotclosecard23Annot3Code2 + approval: Approved + schemaURL: open3Eachdotclosecard23Annot3Code2.shex + shexjURL: open3Eachdotclosecard23Annot3Code2.json + shexrURL: open3Eachdotclosecard23Annot3Code2.ttl + + - name: "0focusIRI" + approval: Approved + schemaURL: "0focusIRI.shex" + shexjURL: "0focusIRI.json" + shexrURL: "0focusIRI.ttl" + + - name: "0focusBNODE" + approval: Approved + schemaURL: "0focusBNODE.shex" + shexjURL: "0focusBNODE.json" + shexrURL: "0focusBNODE.ttl" + + - name: "1focusIRI_dot" + approval: Approved + schemaURL: "1focusIRI_dot.shex" + shexjURL: "1focusIRI_dot.json" + shexrURL: "1focusIRI_dot.ttl" + + - name: "1focusBNODE_dot" + approval: Approved + schemaURL: "1focusBNODE_dot.shex" + shexjURL: "1focusBNODE_dot.json" + shexrURL: "1focusBNODE_dot.ttl" + + - name: "1focusnonLiteral-dot" + approval: Approved + schemaURL: "1focusnonLiteral-dot.shex" + shexjURL: "1focusnonLiteral-dot.json" + shexrURL: "1focusnonLiteral-dot.ttl" + + - name: focusNOTRefOR1dot + approval: Proposed + schemaURL: focusNOTRefOR1dot.shex + shexjURL: focusNOTRefOR1dot.json + shexrURL: focusNOTRefOR1dot.ttl + + - name: "1focusLength-dot" + approval: Approved + schemaURL: "1focusLength-dot.shex" + shexjURL: "1focusLength-dot.json" + shexrURL: "1focusLength-dot.ttl" + + - name: "1focusMinLength-dot" + approval: Approved + schemaURL: "1focusMinLength-dot.shex" + shexjURL: "1focusMinLength-dot.json" + shexrURL: "1focusMinLength-dot.ttl" + + - name: "1focusMaxLength-dot" + approval: Approved + schemaURL: "1focusMaxLength-dot.shex" + shexjURL: "1focusMaxLength-dot.json" + shexrURL: "1focusMaxLength-dot.ttl" + + - name: "1focusPattern-dot" + approval: Approved + schemaURL: "1focusPattern-dot.shex" + shexjURL: "1focusPattern-dot.json" + shexrURL: "1focusPattern-dot.ttl" + + - name: "1focusPatternB-dot" + approval: Approved + schemaURL: "1focusPatternB-dot.shex" + shexjURL: "1focusPatternB-dot.json" + shexrURL: "1focusPatternB-dot.ttl" + + - name: "1focusIRILength_dot" + approval: Approved + schemaURL: "1focusIRILength_dot.shex" + shexjURL: "1focusIRILength_dot.json" + shexrURL: "1focusIRILength_dot.ttl" + + - name: "1focusBNODELength_dot" + approval: Approved + schemaURL: "1focusBNODELength_dot.shex" + shexjURL: "1focusBNODELength_dot.json" + shexrURL: "1focusBNODELength_dot.ttl" + + - name: "1focusnonLiteralLength-dot" + approval: Approved + schemaURL: "1focusnonLiteralLength-dot.shex" + shexjURL: "1focusnonLiteralLength-dot.json" + shexrURL: "1focusnonLiteralLength-dot.ttl" + + - name: NOT1dotOR2dot + approval: Approved + schemaURL: NOT1dotOR2dot.shex + shexjURL: NOT1dotOR2dot.json + shexrURL: NOT1dotOR2dot.ttl + + - name: NOT1dotOR2dotX3 + approval: Approved + schemaURL: NOT1dotOR2dotX3.shex + shexjURL: NOT1dotOR2dotX3.json + shexrURL: NOT1dotOR2dotX3.ttl + + - name: NOT1dotOR2dotX3AND1 + approval: Approved + schemaURL: NOT1dotOR2dotX3AND1.shex + shexjURL: NOT1dotOR2dotX3AND1.json + shexrURL: NOT1dotOR2dotX3AND1.ttl + + - name: "1NOTRefOR1dot" + approval: Proposed + schemaURL: "1NOTRefOR1dot.shex" + shexjURL: "1NOTRefOR1dot.json" + shexrURL: "1NOTRefOR1dot.ttl" + + - name: shapeExtern + approval: Approved + schemaURL: shapeExtern.shex + shexjURL: shapeExtern.json + shexrURL: shapeExtern.ttl + + - name: shapeExternRef + approval: Approved + schemaURL: shapeExternRef.shex + shexjURL: shapeExternRef.json + shexrURL: shapeExternRef.ttl + # <#1dotUnlabeledCode1> + - name: focusvsORdatatype + approval: Approved + schemaURL: focusvsORdatatype.shex + shexjURL: focusvsORdatatype.json + shexrURL: focusvsORdatatype.ttl + + - name: focusvsANDIRI + approval: Approved + schemaURL: focusvsANDIRI.shex + shexjURL: focusvsANDIRI.json + shexrURL: focusvsANDIRI.ttl + + - name: focusvsANDdatatype + approval: Approved + schemaURL: focusvsANDdatatype.shex + shexjURL: focusvsANDdatatype.json + shexrURL: focusvsANDdatatype.ttl + + - name: focusvs + approval: Approved + schemaURL: focusvs.shex + shexjURL: focusvs.json + shexrURL: focusvs.ttl + + - name: focusdatatype + approval: Approved + schemaURL: focusdatatype.shex + shexjURL: focusdatatype.json + shexrURL: focusdatatype.ttl + + - name: "1dotPlusAnnotIRIREF" + approval: Approved + schemaURL: "1dotPlusAnnotIRIREF.shex" + shexjURL: "1dotPlusAnnotIRIREF.json" + shexrURL: "1dotPlusAnnotIRIREF.ttl" + + - name: "1dotAnnotAIRIREF" + approval: Approved + schemaURL: "1dotAnnotAIRIREF.shex" + shexjURL: "1dotAnnotAIRIREF.json" + shexrURL: "1dotAnnotAIRIREF.ttl" + + - name: FocusIRI2EachBnodeNested2EachIRIRef + approval: Approved + schemaURL: FocusIRI2EachBnodeNested2EachIRIRef.shex + shexjURL: FocusIRI2EachBnodeNested2EachIRIRef.json + shexrURL: FocusIRI2EachBnodeNested2EachIRIRef.ttl + + - name: "1bnodeRefORRefMinlength" + approval: Approved + schemaURL: "1bnodeRefORRefMinlength.shex" + shexjURL: "1bnodeRefORRefMinlength.json" + shexrURL: "1bnodeRefORRefMinlength.ttl" + + - name: "1dotShapeAND1dot3X" + approval: Approved + schemaURL: "1dotShapeAND1dot3X.shex" + shexjURL: "1dotShapeAND1dot3X.json" + shexrURL: "1dotShapeAND1dot3X.ttl" + + - name: openopen1dotSemiOne1dotSemiclose1dotSemicloseSemi + approval: Approved + sameSemanticsAs: "#openopen1dotSemiOne1dotSemiclose1dotSemicloseSemi" + schemaURL: openopen1dotSemiOne1dotSemiclose1dotSemicloseSemi.shex + shexjURL: openopen1dotSemiOne1dotSemiclose1dotSemicloseSemi.json + shexrURL: openopen1dotSemiOne1dotSemiclose1dotSemicloseSemi.ttl + + - name: open1dotOne2dotclose + approval: Approved + sameSemanticsAs: "#1dotOne2dot" + schemaURL: open1dotOne2dotclose.shex + shexjURL: open1dotOne2dotclose.json + shexrURL: open1dotOne2dotclose.ttl + + - name: open1dotSemiOneopen2dotSemiscloseclose + approval: Approved + sameSemanticsAs: "#1dotOne2dot" + schemaURL: open1dotSemiOneopen2dotSemiscloseclose.shex + shexjURL: open1dotSemiOneopen2dotSemiscloseclose.json + shexrURL: open1dotSemiOneopen2dotSemiscloseclose.ttl + + - name: open1dotSemiOne2dotsemisclose + approval: Approved + sameSemanticsAs: "#1dotOne2dot" + schemaURL: open1dotSemiOne2dotsemisclose.shex + shexjURL: open1dotSemiOne2dotsemisclose.json + shexrURL: open1dotSemiOne2dotsemisclose.ttl + + - name: "1dotSemiOne2dotSemis" + approval: Approved + sameSemanticsAs: "#1dotOne2dot" + schemaURL: "1dotSemiOne2dotSemis.shex" + shexjURL: "1dotSemiOne2dotSemis.json" + shexrURL: "1dotSemiOne2dotSemis.ttl" + + - name: "1literalMaxinclusiveINTEGER" + approval: Approved + schemaURL: "1literalMaxinclusiveINTEGER.shex" + shexjURL: "1literalMaxinclusiveINTEGER.json" + shexrURL: "1literalMaxinclusiveINTEGER.ttl" + + - name: "1literalMaxexclusiveINTEGER" + approval: Approved + schemaURL: "1literalMaxexclusiveINTEGER.shex" + shexjURL: "1literalMaxexclusiveINTEGER.json" + shexrURL: "1literalMaxexclusiveINTEGER.ttl" + + - name: "1literalMininclusiveINTEGER" + approval: Approved + schemaURL: "1literalMininclusiveINTEGER.shex" + shexjURL: "1literalMininclusiveINTEGER.json" + shexrURL: "1literalMininclusiveINTEGER.ttl" + + - name: "1literalMinexclusiveINTEGER" + approval: Approved + schemaURL: "1literalMinexclusiveINTEGER.shex" + shexjURL: "1literalMinexclusiveINTEGER.json" + shexrURL: "1literalMinexclusiveINTEGER.ttl" + + - name: "1val1DECIMAL" + approval: Approved + schemaURL: "1val1DECIMAL.shex" + shexjURL: "1val1DECIMAL.json" + shexrURL: "1val1DECIMAL.ttl" + + - name: "1datatypeRef1" + approval: Approved + schemaURL: "1datatypeRef1.shex" + shexjURL: "1datatypeRef1.json" + shexrURL: "1datatypeRef1.ttl" + + - name: "1card2blank" + approval: Approved + schemaURL: "1card2blank.shex" + shexjURL: "1card2blank.json" + shexrURL: "1card2blank.ttl" + + - name: "1focusnonLiteralLength-nonLiteralLength" + approval: Approved + schemaURL: "1focusnonLiteralLength-nonLiteralLength.shex" + shexjURL: "1focusnonLiteralLength-nonLiteralLength.json" + shexrURL: "1focusnonLiteralLength-nonLiteralLength.ttl" + + # <#1dotUnlabeledCode1> a sht:RepresentationTest ; + # mf:name "1dotUnlabeledCode1" ; + # mf:status mf:Proposed ; + # sx:shex <1dotUnlabeledCode1.shex> ; + # sx:json <1dotUnlabeledCode1.json> ; + # sx:ttl <1dotUnlabeledCode1.ttl> ; + # . + - name: "1Include1" + approval: Approved + schemaURL: "1Include1.shex" + shexjURL: "1Include1.json" + shexrURL: "1Include1.ttl" + + - name: "1Include1-after" + approval: Approved + schemaURL: "1Include1-after.shex" + shexjURL: "1Include1-after.json" + shexrURL: "1Include1-after.ttl" + + - name: startSelfRefIRIREF + approval: Approved + schemaURL: startSelfRefIRIREF.shex + shexjURL: startSelfRefIRIREF.json + shexrURL: startSelfRefIRIREF.ttl + + - name: startSelfRefbnode + approval: Approved + schemaURL: startSelfRefbnode.shex + shexjURL: startSelfRefbnode.json + shexrURL: startSelfRefbnode.ttl + + - name: datatypes + approval: Approved + schemaURL: datatypes.shex + shexjURL: datatypes.json + shexrURL: datatypes.ttl + + - name: _all + approval: Approved + schemaURL: _all.shex + shexjURL: _all.json + shexrURL: _all.ttl + + - name: kitchenSink + approval: Approved + schemaURL: kitchenSink.shex + shexjURL: kitchenSink.json + shexrURL: kitchenSink.ttl + + - name: node_kind_example + approval: Approved + schemaURL: node_kind_example.shex + shexjURL: node_kind_example.json + shexrURL: node_kind_example.ttl + + - name: dependent_shape + approval: Approved + schemaURL: dependent_shape.shex + shexjURL: dependent_shape.json + shexrURL: dependent_shape.ttl + + - name: recursion_example + approval: Approved + schemaURL: recursion_example.shex + shexjURL: recursion_example.json + shexrURL: recursion_example.ttl + + - name: focusbnode0ORfocusPattern0 + approval: Approved + schemaURL: focusbnode0ORfocusPattern0.shex + shexjURL: focusbnode0ORfocusPattern0.json + shexrURL: focusbnode0ORfocusPattern0.ttl + + - name: "1dotAND1dotAND1dot" + approval: Approved + schemaURL: "1dotAND1dotAND1dot.shex" + shexjURL: "1dotAND1dotAND1dot.json" + shexrURL: "1dotAND1dotAND1dot.ttl" + + - name: open1dotAND1dotcloseAND1dot + approval: Approved + schemaURL: open1dotAND1dotcloseAND1dot.shex + shexjURL: open1dotAND1dotcloseAND1dot.json + shexrURL: open1dotAND1dotcloseAND1dot.ttl + + - name: "1dotANDopen1dotAND1dotclose" + approval: Approved + schemaURL: "1dotANDopen1dotAND1dotclose.shex" + shexjURL: "1dotANDopen1dotAND1dotclose.json" + shexrURL: "1dotANDopen1dotAND1dotclose.ttl" + + - name: "2Eachdot" + approval: Approved + schemaURL: "2Eachdot.shex" + shexjURL: "2Eachdot.json" + shexrURL: "2Eachdot.ttl" + + - name: "8dot5a2b1c" + approval: Approved + schemaURL: "8dot5a2b1c.shex" + shexjURL: "8dot5a2b1c.json" + shexrURL: "8dot5a2b1c.ttl" + + - name: open2Eachdotclosecard25c1dot + approval: Approved + schemaURL: open2Eachdotclosecard25c1dot.shex + shexjURL: open2Eachdotclosecard25c1dot.json + shexrURL: open2Eachdotclosecard25c1dot.ttl + + - name: open2Eachdotclosecard0c1dot + approval: Approved + schemaURL: open2Eachdotclosecard0c1dot.shex + shexjURL: open2Eachdotclosecard0c1dot.json + shexrURL: open2Eachdotclosecard0c1dot.ttl + + - name: open2EachdotclosecardStar + approval: Approved + schemaURL: open2EachdotclosecardStar.shex + shexjURL: open2EachdotclosecardStar.json + shexrURL: open2EachdotclosecardStar.ttl + + - name: open2EachdotclosecardOpt + approval: Approved + schemaURL: open2EachdotclosecardOpt.shex + shexjURL: open2EachdotclosecardOpt.json + shexrURL: open2EachdotclosecardOpt.ttl + + - name: open2Eachdotclosecard02 + approval: Approved + schemaURL: open2Eachdotclosecard02.shex + shexjURL: open2Eachdotclosecard02.json + shexrURL: open2Eachdotclosecard02.ttl + + - name: open2OnedotclosecardStar + approval: Approved + schemaURL: open2OnedotclosecardStar.shex + shexjURL: open2OnedotclosecardStar.json + shexrURL: open2OnedotclosecardStar.ttl + + - name: open1dot1cardPlusclosecard2 + approval: Approved + schemaURL: open1dot1cardPlusclosecard2.shex + shexjURL: open1dot1cardPlusclosecard2.json + shexrURL: open1dot1cardPlusclosecard2.ttl + + - name: open1cardPlus1dotclosecard2 + approval: Approved + schemaURL: open1cardPlus1dotclosecard2.shex + shexjURL: open1cardPlus1dotclosecard2.json + shexrURL: open1cardPlus1dotclosecard2.ttl + + - name: open1card21dotclosecardStar + approval: Approved + schemaURL: open1card21dotclosecardStar.shex + shexjURL: open1card21dotclosecardStar.json + shexrURL: open1card21dotclosecardStar.ttl + + - name: open1card121cardOptclosecardStar + approval: Approved + schemaURL: open1card121cardOptclosecardStar.shex + shexjURL: open1card121cardOptclosecardStar.json + shexrURL: open1card121cardOptclosecardStar.ttl + + - name: open1dot1cardOptclosecard12 + approval: Approved + schemaURL: open1dot1cardOptclosecard12.shex + shexjURL: open1dot1cardOptclosecard12.json + shexrURL: open1dot1cardOptclosecard12.ttl + + - name: openopen2Eachdotclosecard0c1dotclosecardStarc1dot + approval: Approved + schemaURL: openopen2Eachdotclosecard0c1dotclosecardStarc1dot.shex + shexjURL: openopen2Eachdotclosecard0c1dotclosecardStarc1dot.json + shexrURL: openopen2Eachdotclosecard0c1dotclosecardStarc1dot.ttl + + - name: openopen2EachdotclosecardOptc1dotclosecardStarc1dot + approval: Approved + schemaURL: openopen2EachdotclosecardOptc1dotclosecardStarc1dot.shex + shexjURL: openopen2EachdotclosecardOptc1dotclosecardStarc1dot.json + shexrURL: openopen2EachdotclosecardOptc1dotclosecardStarc1dot.ttl + + - name: open2OnecardStarclosecardStar + approval: Approved + schemaURL: open2OnecardStarclosecardStar.shex + shexjURL: open2OnecardStarclosecardStar.json + shexrURL: open2OnecardStarclosecardStar.ttl + + # cycles + + # cycles { + - name: CycleNoNegation_pass + approval: Approved + trait: [Cycle] + schemaURL: CycleNoNegation.shex + shexjURL: CycleNoNegation.json + shexrURL: CycleNoNegation.ttl + + - name: NoNegation_pass + approval: Approved + trait: [Cycle] + schemaURL: NoNegation.shex + shexjURL: NoNegation.json + shexrURL: NoNegation.ttl + + - name: NoNegation2_pass + approval: Approved + trait: [Cycle] + schemaURL: NoNegation2.shex + shexjURL: NoNegation2.json + shexrURL: NoNegation2.ttl + + - name: OneNegation_pass + approval: Approved + trait: [Cycle] + schemaURL: OneNegation.shex + shexjURL: OneNegation.json + shexrURL: OneNegation.ttl + + - name: TwoNegation_pass + approval: Approved + trait: [Cycle] + schemaURL: TwoNegation.shex + shexjURL: TwoNegation.json + shexrURL: TwoNegation.ttl + + - name: Cycle2NoNegation_pass + approval: Approved + trait: [Cycle] + schemaURL: Cycle2NoNegation.shex + shexjURL: Cycle2NoNegation.json + shexrURL: Cycle2NoNegation.ttl + + - name: Cycle2Extra_pass + approval: Approved + trait: [Cycle] + schemaURL: Cycle2Extra.shex + shexjURL: Cycle2Extra.json + shexrURL: Cycle2Extra.ttl + + # } cycles + + # imports + + # imports { + - name: "1dotIMPORT1dot" + approval: Approved + trait: [Import] + schemaURL: "1dotIMPORT1dot.shex" + shexjURL: "1dotIMPORT1dot.json" + shexrURL: "1dotIMPORT1dot.ttl" + + - name: "2RefS1-IS2" + approval: Approved + trait: [Import] + schemaURL: "2RefS1-IS2.shex" + shexjURL: "2RefS1-IS2.json" + shexrURL: "2RefS1-IS2.ttl" + + - name: "2RefS1-Icirc" + approval: Approved + trait: [Import] + schemaURL: "2RefS1-Icirc.shex" + shexjURL: "2RefS1-Icirc.json" + shexrURL: "2RefS1-Icirc.ttl" + # <#2RefS1> + + # <#2RefS1> a sht:RepresentationTest ; + # mf:name "2RefS1" ; + # mf:status mf:Proposed ; + # sht:trait sht:Import ; + # sx:shex <2RefS1.shex> ; + # sx:json <2RefS1.json> ; + # sx:ttl <2RefS1.ttl> ; + # . + - name: "2RefS2-IS1" + approval: Approved + trait: [Import] + schemaURL: "2RefS2-IS1.shex" + shexjURL: "2RefS2-IS1.json" + shexrURL: "2RefS2-IS1.ttl" + + - name: start2RefS2-IstartS1 + approval: Approved + trait: [Import] + schemaURL: start2RefS2-IstartS1.shex + shexjURL: start2RefS2-IstartS1.json + shexrURL: start2RefS2-IstartS1.ttl + + - name: start2RefS1-IstartS2 + approval: Approved + trait: [Import] + schemaURL: start2RefS1-IstartS2.shex + shexjURL: start2RefS1-IstartS2.json + shexrURL: start2RefS1-IstartS2.ttl + + - name: start2RefS2 + approval: Approved + trait: [Import] + schemaURL: start2RefS2.shex + shexjURL: start2RefS2.json + shexrURL: start2RefS2.ttl + + - name: start2RefS1 + approval: Approved + trait: [Import] + schemaURL: start2RefS1.shex + shexjURL: start2RefS1.json + shexrURL: start2RefS1.ttl + + - name: "2RefS2-Icirc" + approval: Approved + trait: [Import, Start] + schemaURL: "2RefS2-Icirc.shex" + shexjURL: "2RefS2-Icirc.json" + shexrURL: "2RefS2-Icirc.ttl" + + - name: "2RefS2" + approval: Approved + trait: [Import] + schemaURL: "2RefS2.shex" + shexjURL: "2RefS2.json" + shexrURL: "2RefS2.ttl" + + - name: "3circRefS1-IS2-IS3-IS3" + approval: Approved + trait: [Import] + schemaURL: "3circRefS1-IS2-IS3-IS3.shex" + shexjURL: "3circRefS1-IS2-IS3-IS3.json" + shexrURL: "3circRefS1-IS2-IS3-IS3.ttl" + + - name: "3circRefS1-IS2-IS3" + approval: Approved + trait: [Import] + schemaURL: "3circRefS1-IS2-IS3.shex" + shexjURL: "3circRefS1-IS2-IS3.json" + shexrURL: "3circRefS1-IS2-IS3.ttl" + + - name: "3circRefS1-IS23" + approval: Approved + trait: [Import] + schemaURL: "3circRefS1-IS23.shex" + shexjURL: "3circRefS1-IS23.json" + shexrURL: "3circRefS1-IS23.ttl" + + - name: "3circRefS1-Icirc" + approval: Approved + trait: [Import] + schemaURL: "3circRefS1-Icirc.shex" + shexjURL: "3circRefS1-Icirc.json" + shexrURL: "3circRefS1-Icirc.ttl" + # <#3circRefS12> + + # <#3circRefS12> a sht:RepresentationTest ; + # mf:name "3circRefS12" ; + # mf:status mf:Proposed ; + # sht:trait sht:Import ; + # sx:shex <3circRefS12.shex> ; + # sx:json <3circRefS12.json> ; + # sx:ttl <3circRefS12.ttl> ; + # . + - name: "3circRefS123-Icirc" + approval: Approved + trait: [Import] + schemaURL: "3circRefS123-Icirc.shex" + shexjURL: "3circRefS123-Icirc.json" + shexrURL: "3circRefS123-Icirc.ttl" + + - name: "3circRefS123" + approval: Approved + trait: [Import] + schemaURL: "3circRefS123.shex" + shexjURL: "3circRefS123.json" + shexrURL: "3circRefS123.ttl" + # <#3circRefS2-IS3> + + # <#3circRefS2-IS3> a sht:RepresentationTest ; + # mf:name "3circRefS2-IS3" ; + # mf:status mf:Proposed ; + # sht:trait sht:Import ; + # sx:shex <3circRefS2-IS3.shex> ; + # sx:json <3circRefS2-IS3.json> ; + # sx:ttl <3circRefS2-IS3.ttl> ; + # . + - name: "3circRefS2-Icirc" + approval: Approved + trait: [Import] + schemaURL: "3circRefS2-Icirc.shex" + shexjURL: "3circRefS2-Icirc.json" + shexrURL: "3circRefS2-Icirc.ttl" + # <#3circRefS23> + + # <#3circRefS23> a sht:RepresentationTest ; + # mf:name "3circRefS23" ; + # mf:status mf:Proposed ; + # sht:trait sht:Import ; + # sx:shex <3circRefS23.shex> ; + # sx:json <3circRefS23.json> ; + # sx:ttl <3circRefS23.ttl> ; + # . + - name: "3circRefS3-IS12" + approval: Approved + trait: [Import] + schemaURL: "3circRefS3-IS12.shex" + shexjURL: "3circRefS3-IS12.json" + shexrURL: "3circRefS3-IS12.ttl" + + - name: "3circRefS3-Icirc" + approval: Approved + trait: [Import] + schemaURL: "3circRefS3-Icirc.shex" + shexjURL: "3circRefS3-Icirc.json" + shexrURL: "3circRefS3-Icirc.ttl" + # <#3circRefS3> + - name: "2EachInclude1-S2" + approval: Approved + trait: [Import] + schemaURL: "2EachInclude1-S2.shex" + shexjURL: "2EachInclude1-S2.json" + shexrURL: "2EachInclude1-S2.ttl" + + # } imports + - name: "2EachInclude1-IS2" + approval: Approved + trait: [Import] + schemaURL: "2EachInclude1-IS2.shex" + shexjURL: "2EachInclude1-IS2.json" + shexrURL: "2EachInclude1-IS2.ttl" + + - name: "1valExprRefbnode-vc1" + approval: Approved + trait: [Import] + schemaURL: "1valExprRefbnode-vc1.shex" + shexjURL: "1valExprRefbnode-vc1.json" + shexrURL: "1valExprRefbnode-vc1.ttl" + + - name: "1valExprRefbnode-IV1" + approval: Approved + trait: [Import] + schemaURL: "1valExprRefbnode-IV1.shex" + shexjURL: "1valExprRefbnode-IV1.json" + shexrURL: "1valExprRefbnode-IV1.ttl" + + - name: "1valExprRef-vc1" + approval: Approved + trait: [Import] + schemaURL: "1valExprRef-vc1.shex" + shexjURL: "1valExprRef-vc1.json" + shexrURL: "1valExprRef-vc1.ttl" + + # <#3circRefS3> a sht:RepresentationTest ; + # mf:name "3circRefS3" ; + # mf:status mf:Proposed ; + # sht:trait sht:Import ; + # sx:shex <3circRefS3.shex> ; + # sx:json <3circRefS3.json> ; + # sx:ttl <3circRefS3.ttl> ; + # . + - name: "1valExprRef-IV1" + approval: Approved + trait: [Import] + schemaURL: "1valExprRef-IV1.shex" + shexjURL: "1valExprRef-IV1.json" + shexrURL: "1valExprRef-IV1.ttl" + + # lists { + - name: "1list0PlusDot" + approval: Proposed + trait: [Import] + schemaURL: "1list0PlusDot.shex" + shexjURL: "1list0PlusDot.json" + shexrURL: "1list0PlusDot.ttl" + + - name: "1list0PlusIri" + approval: Proposed + trait: [Import] + schemaURL: "1list0PlusIri.shex" + shexjURL: "1list0PlusIri.json" + shexrURL: "1list0PlusIri.ttl" + + - name: "1list1PlusIri" + approval: Proposed + trait: [Import] + schemaURL: "1list1PlusIri.shex" + shexjURL: "1list1PlusIri.json" + shexrURL: "1list1PlusIri.ttl" + + # } lists + + # extends + + # extends { + - name: "0Extends1" + approval: Proposed + trait: [Extends] + schemaURL: "0Extends1.shex" + shexjURL: "0Extends1.json" + shexrURL: "0Extends1.ttl" + + - name: "1dotExtends1" + approval: Proposed + trait: [Extends] + schemaURL: "1dotExtends1.shex" + shexjURL: "1dotExtends1.json" + shexrURL: "1dotExtends1.ttl" + + - name: "1dot3Extends" + approval: Proposed + trait: [Extends] + schemaURL: "1dot3Extends.shex" + shexjURL: "1dot3Extends.json" + shexrURL: "1dot3Extends.ttl" + + - name: "1dot3ExtendsLN" + approval: Proposed + trait: [Extends] + sameSemanticsAs: "#1dot3Extends" + schemaURL: "1dot3ExtendsLN.shex" + shexjURL: "1dot3Extends.json" + shexrURL: "1dot3Extends.ttl" + + - name: Extends-sAB + approval: Proposed + trait: [Extends, Import] + schemaURL: Extends-sAB.shex + shexjURL: Extends-sAB.json + shexrURL: Extends-sAB.ttl + + - name: ExtendsRepeatedP + approval: Proposed + trait: [Extends] + schemaURL: ExtendsRepeatedP.shex + shexjURL: ExtendsRepeatedP.json + shexrURL: ExtendsRepeatedP.ttl + + - name: extends-closed-or-each-each + approval: Proposed + trait: [Extends] + schemaURL: extends-closed-or-each-each.shex + shexjURL: extends-closed-or-each-each.json + shexrURL: extends-closed-or-each-each.ttl + + - name: extends-open-or-each-each + approval: Proposed + trait: [Extends] + schemaURL: extends-open-or-each-each.shex + shexjURL: extends-open-or-each-each.json + shexrURL: extends-open-or-each-each.ttl + + - name: "1dotExtendsBnode" + approval: Approved + schemaURL: "1dotExtendsBnode.shex" + shexjURL: "1dotExtendsBnode.json" + shexrURL: "1dotExtendsBnode.ttl" + + - name: extends-abstract-closed-diamond + approval: Approved + schemaURL: extends-abstract-closed-diamond.shex + shexjURL: extends-abstract-closed-diamond.json + shexrURL: extends-abstract-closed-diamond.ttl + + - name: extends-abstract-or + approval: Approved + schemaURL: extends-abstract-or.shex + shexjURL: extends-abstract-or.json + shexrURL: extends-abstract-or.ttl + + # } extends + + # abstract + + # abstract { + - name: "1dotAbstractShapeCode1" + approval: Proposed + trait: [Extends] + schemaURL: "1dotAbstractShapeCode1.shex" + shexjURL: "1dotAbstractShapeCode1.json" + shexrURL: "1dotAbstractShapeCode1.ttl" + + - name: "1dotAbstract" + approval: Proposed + trait: [Extends] + schemaURL: "1dotAbstract.shex" + shexjURL: "1dotAbstract.json" + shexrURL: "1dotAbstract.ttl" + + - name: ANDAbstract + approval: Proposed + trait: [Extends] + schemaURL: ANDAbstract.shex + shexjURL: ANDAbstract.json + shexrURL: ANDAbstract.ttl + + - name: AND3G + approval: Proposed + trait: [Extends] + schemaURL: AND3G.shex + shexjURL: AND3G.json + shexrURL: AND3G.ttl + + # } abstract + + # abstract extends + + # abstract extends { + - name: ExtendAND3G + approval: Proposed + trait: [Extends] + schemaURL: ExtendAND3G.shex + shexjURL: ExtendAND3G.json + shexrURL: ExtendAND3G.ttl + + - name: Extend3G + approval: Proposed + trait: [Extends] + schemaURL: Extend3G.shex + shexjURL: Extend3G.json + shexrURL: Extend3G.ttl + + - name: ExtendANDExtend3GAND3G + approval: Proposed + trait: [Extends] + schemaURL: ExtendANDExtend3GAND3G.shex + shexjURL: ExtendANDExtend3GAND3G.json + shexrURL: ExtendANDExtend3GAND3G.ttl + + - name: vitals-RESTRICTS + approval: Proposed + trait: [Extends] + schemaURL: vitals-RESTRICTS.shex + shexjURL: vitals-RESTRICTS.json + shexrURL: vitals-RESTRICTS.ttl + + # } abstract extends + + # meta + + # meta { + - name: ShExR + approval: Proposed + schemaURL: ../doc/ShExR.shex + shexjURL: ../doc/ShExR.json + shexrURL: ../doc/ShExR.ttl + + # } meta + +# regexp template: + +# match: +# <#\(.*?\)> a sht:RepresentationTest ; +# mf:name "\1" ; +# mf:status mf:Proposed ;\( +# mf:sameSemanticsAs <#.*?> ;\)?\( +# sht:trait .*? ;\)? +# sx:shex <\(.*?\)\.shex> ; +# sx:json <\4\.json> ; +# sx:ttl <\4\.ttl> ; +# \. + +# emit: +# <#\1> a sht:RepresentationTest ; +# mf:name "\1" ; +# mf:status mf:Proposed ;\2\3 +# sx:shex <\4.shex> ; +# sx:json <\4.json> ; +# sx:ttl <\4.ttl> ; +# . diff --git a/validation-contrib/manifest.yaml b/validation-contrib/manifest.yaml new file mode 100644 index 00000000..aff7ef65 --- /dev/null +++ b/validation-contrib/manifest.yaml @@ -0,0 +1,96 @@ +# -*- mode: yaml -*- +# ShEx validation tests that are useful across implementations but are NOT +# attributable to the ShEx specification -- error-repair recipes and feasibility +# localization (implementation tooling). A conformant implementation is not +# required to agree on these; they carry only pass/fail + traits (no +# reference-result .val). + +"@context": + - https://www.w3.org/ns/shex-manifest.jsonld + - ../manifest-context.jsonld +comment: "ShEx validation tests useful to many implementations but not attributable to the specification" +entries: + ## error-repair recipes (repair suggestions are tooling, not conformance) + + # ==== error-repair recipes (from ShEx.js Repairs-test.js) ==== + - name: repairCard_fail + status: nonconformant + trait: [Repair, NonDotCardinality] + comment: "repair a cardinality shortfall: { .{2} } on { } is one short" + approval: Approved + schemaURL: ../schemas-contrib/repairCard.shex + shape: http://a.example/S1 + dataURL: Ix_Ip1_Io1.ttl + node: http://a.example/x + + - name: repairChoice_fail + status: nonconformant + trait: [Repair] + comment: "repair offers the choice the language offers: { . | . } with neither present" + approval: Approved + schemaURL: ../schemas-contrib/repairChoice.shex + shape: http://a.example/S1 + dataURL: Ix_Ip9_Io9.ttl + node: http://a.example/x + + - name: repairClosed_fail + status: nonconformant + trait: [Repair, Closed] + comment: "repair a closed shape's extra arc: CLOSED { . } on { ; } must drop " + approval: Approved + schemaURL: ../schemas-contrib/repairClosed.shex + shape: http://a.example/S1 + dataURL: Ix_Ip1_Io1;Ip2_Io2.ttl + node: http://a.example/x + + - name: repairMissingArc_fail + status: nonconformant + trait: [Repair] + comment: "repair a missing property: { . ; . } on { } needs a " + approval: Approved + schemaURL: ../schemas-contrib/repairMissingArc.shex + shape: http://a.example/S1 + dataURL: Ix_Ip1_Io1.ttl + node: http://a.example/x + ## feasibility localization (structured error reporting) + + # ==== feasibility localization / structured errors (from ShEx.js Feasibility-test.js) ==== + - name: feasHomeless_fail + status: nonconformant + trait: [Feasibility] + comment: "a homeless triple and a missing property: { . ; ( . ; . )? } on { }" + approval: Approved + schemaURL: ../schemas-contrib/feasHomeless.shex + shape: http://a.example/S1 + dataURL: Ix_Ip3_Io.ttl + node: http://a.example/x + + - name: feasDatatype_fail + status: nonconformant + trait: [Feasibility, Datatype] + comment: "a datatype mismatch reported as one: { xsd:integer } on { \"abc\" }" + approval: Approved + schemaURL: ../schemas-contrib/feasDatatype.shex + shape: http://a.example/S1 + dataURL: Ix_Ip1_Labc.ttl + node: http://a.example/x + + - name: feasNodeKind_fail + status: nonconformant + trait: [Feasibility] + comment: "a node-kind mismatch reported as one: { IRI } on { \"lit\" }" + approval: Approved + schemaURL: ../schemas-contrib/feasNodeKind.shex + shape: http://a.example/S1 + dataURL: Ix_Ip1_Llit.ttl + node: http://a.example/x + + - name: feasPattern_fail + status: nonconformant + trait: [Feasibility] + comment: "a pattern mismatch reported as one: { /^ab/ } on { \"xy\" }" + approval: Approved + schemaURL: ../schemas-contrib/feasPattern.shex + shape: http://a.example/S1 + dataURL: Ix_Ip1_Lxy.ttl + node: http://a.example/x diff --git a/validation/manifest.yaml b/validation/manifest.yaml new file mode 100644 index 00000000..ee29ad4f --- /dev/null +++ b/validation/manifest.yaml @@ -0,0 +1,13924 @@ +# -*- mode: yaml; outline-regexp: "[# ]+ "; eval: (outline-minor-mode); -*- +# handy bits from outline mode: +# C-c @ C-l hide-leaves - on prefixes, entries, definitions +# C-c @ C-s show-subtree - on anything you're hacking +# Note that incremental search opens leaves for the duration of the search. + +# prefixes + +# TODO: +# focus* on empty.ttl +# ../schemas/1IRI_with_all_punctuationdot.shex +# ../schemas/1IRI_with_UCHAR.1dot.shex +# ../schemas/1val1STRING_LITERAL2.shex +# ../schemas/1val1STRING_LITERAL2_with_LANGTAG.shex +# ../schemas/1val1STRING_LITERAL2_with_subtag.shex +# ../schemas/1val1STRING_LITERAL_LONG1.shex +# ../schemas/1val1STRING_LITERAL_LONG2.shex +# ../schemas/1val1STRING_LITERAL_LONG2_with_LANGTAG.shex +# ../schemas/1val1STRING_LITERAL_LONG2_with_subtag.shex +# repeated OR +# 1dotRefOR3 on.. +# 1IRIInline0, focusbnode0ORfocusPattern0 +# <#1dotAND1dotAND1dot>, <#open1dotAND1dotcloseAND1dot>, <#1dotANDopen1dotAND1dotclose> + +# 1val1dotMinuslanguage3.shex - 1val1dotMinusiri3.shex +# <#1val1dotMinusiri3_pass> +# <#1val1dotMinusiri3_v1> +# <#1val1dotMinusiri3_v2> +# <#1val1dotMinusiri3_v3> +# 1val1dotMinuslanguageStem3.shex - 1val1dotMinusiriStem3.shex +# <#1val1dotMinusiriStem3_pass> +# <#1val1dotMinusiriStem3_v1> +# <#1val1dotMinusiriStem3_v2> +# <#1val1dotMinusiriStem3_v3> +# <#1val1dotMinusiriStem3_v1a> +# 1val1literalAtlanguageStem.shex - +# 1val1literalAtlanguageStemMinusliteralAtlanguage3 - + +# entries + +"@context": + - https://www.w3.org/ns/shex-manifest.jsonld + - ../manifest-context.jsonld +comment: "ShEx validation tests" +entries: + ## empty + + # definitions + ## empty { + - name: "0_empty" + status: conformant + trait: [Empty] + comment: " { } on { }" + approval: Approved + schemaURL: ../schemas/0.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/dummy + + - name: "0_other" + status: conformant + trait: [Empty] + comment: " { } on { }" + approval: Approved + schemaURL: ../schemas/0.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "0_otherbnode" + status: conformant + trait: [Empty, ToldBNode] + comment: " { } on { _:abcd }" + approval: Approved + schemaURL: ../schemas/0.shex + queryMap: "_:abcd@" + dataURL: Babcd_Ip1_Io1.ttl + + ## } empty + + ## triple pattern + ## triple pattern { + - name: "1dot_fail-empty" + status: nonconformant + trait: [TriplePattern] + comment: " { . } on { }" + approval: Approved + schemaURL: ../schemas/1dot.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + + - name: "1dot-base_fail-empty" + status: nonconformant + trait: [TriplePattern] + comment: "BASE <…> { . } on { }" + approval: Approved + schemaURL: ../schemas/1dot-base.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + + - name: "1dot_fail-missing" + status: nonconformant + trait: [TriplePattern] + comment: " { . } on { }" + approval: Approved + schemaURL: ../schemas/1dot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip2_Io1.ttl + node: http://a.example/s1 + + - name: "1dot-base_fail-missing" + status: nonconformant + trait: [TriplePattern] + comment: "BASE <…> { . } on { }" + approval: Approved + schemaURL: ../schemas/1dot-base.shex + shape: http://a.example/S1 + dataURL: Is1_Ip2_Io1.ttl + node: http://a.example/s1 + + - name: "1dot_pass-noOthers" + status: conformant + trait: [TriplePattern] + comment: " { . } on { }" + approval: Approved + schemaURL: ../schemas/1dot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dot-base_pass-noOthers" + status: conformant + trait: [TriplePattern] + comment: "BASE <…> { . } on { }" + approval: Approved + schemaURL: ../schemas/1dot-base.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotSemi_pass-noOthers" + status: conformant + trait: [TriplePattern] + comment: " { :p1 .; } on { }" + approval: Approved + schemaURL: ../schemas/1dotSemi.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotLNex_pass-noOthers" + status: conformant + trait: [TriplePattern] + comment: "PREFIX ex: ex:S1 { ex:p1 . } on { }" + approval: Approved + schemaURL: ../schemas/1dotLNex.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotNS2_pass-noOthers" + status: conformant + trait: [TriplePattern] + comment: "PREFIX S1: PREFIX p1: S1: { p1: . } on { }" + approval: Approved + schemaURL: ../schemas/1dotNS2.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotNS2SingleComment_pass-noOthers" + status: conformant + trait: [TriplePattern] + comment: "PREFIX S1: PREFIX p1: S1: { p1:/*comment*/ . } on { }" + approval: Approved + schemaURL: ../schemas/1dotNS2SingleComment.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotLNexSingleComment_pass-noOthers" + status: conformant + trait: [TriplePattern] + comment: "PREFIX ex: ex:S1 { ex:p1/*comment*/ . } on { }" + approval: Approved + schemaURL: ../schemas/1dotLNexSingleComment.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotLNdefault_pass-noOthers" + status: conformant + trait: [TriplePattern] + comment: "PREFIX : :S1 { :p1 . } on { }" + approval: Approved + schemaURL: ../schemas/1dotLNdefault.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotNSdefault_pass-noOthers" + status: conformant + trait: [TriplePattern] + comment: "PREFIX : { : . } on { :p1 }" + approval: Approved + schemaURL: ../schemas/1dotNSdefault.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotLNex-HYPHEN_MINUS_pass-noOthers" + status: conformant + trait: [TriplePattern] + comment: "PREFIX ex: ex:S1 { ex:p1- . } on { }" + approval: Approved + schemaURL: ../schemas/1dotLNex-HYPHEN_MINUS.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1HYPHEN_MINUS_Io1.ttl + node: http://a.example/s1 + + - name: "1dot_pass-others_lexicallyEarlier" + status: conformant + trait: [TriplePattern] + comment: " { . } on { ; }" + approval: Approved + schemaURL: ../schemas/1dot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip0_Io0;Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dot_pass-others_lexicallyLater" + status: conformant + trait: [TriplePattern] + comment: " { . } on { ; }" + approval: Approved + schemaURL: ../schemas/1dot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1;Ip2_Io2.ttl + node: http://a.example/s1 + + - name: bnode1dot_fail-missing + status: nonconformant + trait: [BNodeShapeLabel, RefBNodeShapeLabel, TriplePattern] + comment: "_:S { . } on { }" + approval: Approved + schemaURL: ../schemas/bnode1dot.shex + queryMap: "@_:S1" + dataURL: Is1_Ip2_Io1.ttl + + - name: bnode1dot_pass-others_lexicallyEarlier + status: conformant + trait: [BNodeShapeLabel, RefBNodeShapeLabel, TriplePattern] + comment: "_:S1 { . } on { ; }" + approval: Approved + schemaURL: ../schemas/bnode1dot.shex + queryMap: "@_:S1" + dataURL: Is1_Ip0_Io0;Ip1_Io1.ttl + + - name: "1inversedot_fail-empty" + status: nonconformant + trait: [TriplePattern] + comment: " { ^ . } on { }" + approval: Approved + schemaURL: ../schemas/1inversedot.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/o1 + + - name: "1inversedot_fail-missing" + status: nonconformant + trait: [TriplePattern] + comment: " { ^ . } on { }" + approval: Approved + schemaURL: ../schemas/1inversedot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip2_Io1.ttl + node: http://a.example/o1 + + - name: "1inversedot_pass-noOthers" + status: conformant + trait: [TriplePattern] + comment: " { ^ . } on { }" + approval: Approved + schemaURL: ../schemas/1inversedot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/o1 + + - name: "1inversedot_pass-over_lexicallyEarlier" + status: conformant + trait: [TriplePattern] + comment: " { ^ . } on { ; }" + approval: Approved + schemaURL: ../schemas/1inversedot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip0_Io0;Ip1_Io1.ttl + node: http://a.example/o1 + + - name: "1inversedot_pass-over_lexicallyLater" + status: conformant + trait: [TriplePattern] + comment: " { ^ . } on { ; }" + approval: Approved + schemaURL: ../schemas/1inversedot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1;Ip2_Io2.ttl + node: http://a.example/o1 + + - name: "1inversedotIRI_fail-Bnode" + status: nonconformant + trait: [TriplePattern, Inverse] + comment: " { ^ IRI } on { _:abcd }" + approval: Approved + schemaURL: ../schemas/1inversedotIRI.shex + shape: http://a.example/S1 + dataURL: Babcd_Ip1_Io1.ttl + node: http://a.example/o1 + + - name: "1inversedotIRI_pass" + status: conformant + trait: [TriplePattern, Inverse] + comment: " { ^ IRI } on { }" + approval: Approved + schemaURL: ../schemas/1inversedotIRI.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/o1 + + - name: "1inversedotBNODE_pass" + status: conformant + trait: [TriplePattern, Inverse] + comment: " { ^ BNODE } on { _:abcd }" + approval: Approved + schemaURL: ../schemas/1inversedotBNODE.shex + shape: http://a.example/S1 + dataURL: Babcd_Ip1_Io1.ttl + node: http://a.example/o1 + + - name: "1inversedotBNODE_fail-Iri" + status: nonconformant + trait: [TriplePattern, Inverse] + comment: " { ^ BNODE } on { }" + approval: Approved + schemaURL: ../schemas/1inversedotBNODE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/o1 + + - name: "1inversedotRef1_pass" + status: conformant + trait: [TriplePattern, Inverse, ValueReference] + comment: " { ^ @ } { . } on { }" + approval: Approved + schemaURL: ../schemas/1inversedotRef1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.ttl + node: http://a.example/n2 + + - name: "1inversedotRef1_fail" + status: nonconformant + trait: [TriplePattern, Inverse, ValueReference] + comment: " { ^ @ } { . } on { . } (two incoming for a {1,1} inverse)" + approval: Approved + schemaURL: ../schemas/1inversedotRef1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2a.In2a_Ip1_In2a.ttl + node: http://a.example/n2a + + - name: "1inversedotCard2_pass" + status: conformant + trait: [TriplePattern, Inverse, NonDotCardinality] + comment: " { ^ .{2} } on { . }" + approval: Approved + schemaURL: ../schemas/1inversedotCard2.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2a.In2a_Ip1_In2a.ttl + node: http://a.example/n2a + + - name: "1inversedotCard2_fail" + status: nonconformant + trait: [TriplePattern, Inverse, NonDotCardinality] + comment: " { ^ .{2} } on { } (only one incoming , needs two)" + approval: Approved + schemaURL: ../schemas/1inversedotCard2.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.ttl + node: http://a.example/n2 + + - name: "1inversedotValueSet_pass" + status: conformant + trait: [TriplePattern, Inverse] + comment: " { ^ [] } on { }" + approval: Approved + schemaURL: ../schemas/1inversedotValueSet.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/o1 + + - name: "1inversedotValueSet_fail-Bnode" + status: nonconformant + trait: [TriplePattern, Inverse] + comment: " { ^ [] } on { _:abcd } (the incoming subject is a bnode, not )" + approval: Approved + schemaURL: ../schemas/1inversedotValueSet.shex + shape: http://a.example/S1 + dataURL: Babcd_Ip1_Io1.ttl + node: http://a.example/o1 + + - name: "1inversedotValueSet_fail-Iri" + status: nonconformant + trait: [TriplePattern, Inverse] + comment: " { ^ [] } on { } (the incoming subject is not )" + approval: Approved + schemaURL: ../schemas/1inversedotValueSet.shex + shape: http://a.example/S1 + dataURL: Is_Ip1_Io1.ttl + node: http://a.example/o1 + + - name: "1inversedotLITERAL_fail" + status: nonconformant + trait: [TriplePattern, Inverse] + comment: " { ^ LITERAL } on { } (a subject is never a literal)" + approval: Approved + schemaURL: ../schemas/1inversedotLITERAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/o1 + + - name: inverseBnodeCoref_pass + status: conformant + trait: [TriplePattern, Inverse, ValueReference, BNodeCoreference] + comment: "one bnode reached by two predicates is the same node | { @; @ } { ^ IRI; ^ IRI; [\"x\"] } on _:d ; _:d . _:d \"x\" ." + approval: Approved + schemaURL: ../schemas/inverseBnodeCoref.shex + shape: http://a.example/S + dataURL: Is1_Ip1_Bd;Ip2_Bd.Bd_Ip3_Lx.ttl + node: http://a.example/s1 + + - name: inverseBnodeCoref_fail-noP2 + status: nonconformant + trait: [TriplePattern, Inverse, ValueReference, BNodeCoreference] + comment: "{ @; @ } { ^ IRI; ^ IRI; [\"x\"] } on _:d . _:d \"x\" (missing _:d)" + approval: Approved + schemaURL: ../schemas/inverseBnodeCoref.shex + shape: http://a.example/S + dataURL: Is1_Ip1_Bd.Bd_Ip3_Lx.ttl + node: http://a.example/s1 + + - name: inverseBnodeCoref_fail-noX + status: nonconformant + trait: [TriplePattern, Inverse, ValueReference, BNodeCoreference] + comment: "{ @; @ } { ^ IRI; ^ IRI; [\"x\"] } on _:d ; _:d (missing _:d \"x\")" + approval: Approved + schemaURL: ../schemas/inverseBnodeCoref.shex + shape: http://a.example/S + dataURL: Is1_Ip1_Bd;Ip2_Bd.ttl + node: http://a.example/s1 + + - name: inverseClosedDiscrim_pass + status: conformant + trait: [TriplePattern, Inverse, ValueReference, Closed, BNodeCoreference] + comment: "inverse repeated to two CLOSED shapes told apart by a value set | :S { ^:p1 @:A ; ^:p1 @:B } :A C { :p1 IRI ; :p2 [\"A\"] } :B C { :p1 IRI ; :p2 [\"B\"] } on { _:in1 ; \"A\" . _:in2 ; \"B\" }" + approval: Approved + schemaURL: ../schemas/inverseClosedDiscrim.shex + shape: http://a.example/S + dataURL: Bin1_Ip1_Is1;Ip2_LA.Bin2_Ip1_Is1;Ip2_LB.ttl + node: http://a.example/s1 + + - name: inverseClosedDiscrim_fail + status: nonconformant + trait: [TriplePattern, Inverse, ValueReference, Closed, BNodeCoreference] + comment: ":S { ^:p1 @:A ; ^:p1 @:B } :A CLOSED { :p1 IRI ; :p2 [\"A\"] } :B CLOSED { :p1 IRI ; :p2 [\"B\"] } on { _:in1 ; \"A\" . _:in2 } (_:in2 has no , satisfies neither closed shape)" + approval: Approved + schemaURL: ../schemas/inverseClosedDiscrim.shex + shape: http://a.example/S + dataURL: Bin1_Ip1_Is1;Ip2_LA.Bin2_Ip1_Is1.ttl + node: http://a.example/s1 + + - name: "1dotExtendsInverse_pass" + status: conformant + trait: [TriplePattern, Inverse, Extends] + comment: "{ . } EXTENDS @ { ^ . } on { . }" + approval: Approved + schemaURL: ../schemas/1dotExtendsInverse.shex + shape: http://a.example/A + dataURL: Is1_Ip1_Io1.In0_Ip2_Is1.ttl + node: http://a.example/s1 + + - name: "1dotExtendsInverse_fail" + status: nonconformant + trait: [TriplePattern, Inverse, Extends] + comment: "{ . } EXTENDS @ { ^ . } on { } (no incoming )" + approval: Approved + schemaURL: ../schemas/1dotExtendsInverse.shex + shape: http://a.example/A + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotInverseExtends_pass" + status: conformant + trait: [TriplePattern, Inverse, Extends] + comment: "{ ^ . } EXTENDS @ { ^ . } on { . } ( has both an incoming and an incoming ; the parent's inverse arc must be matched)" + approval: Approved + schemaURL: ../schemas/1dotInverseExtends.shex + shape: http://a.example/A + dataURL: Io1_Ip1_Is1.In0_Ip2_Is1.ttl + node: http://a.example/s1 + + - name: "1dotInverseExtends_fail" + status: nonconformant + trait: [TriplePattern, Inverse, Extends] + comment: "{ ^ . } EXTENDS @ { ^ . } on { } ( has no incoming or )" + approval: Approved + schemaURL: ../schemas/1dotInverseExtends.shex + shape: http://a.example/A + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dot2SameExtends_pass" + status: conformant + trait: [Extends, MultiExtends] + comment: "naming the same parent twice: { . } EXTENDS @ EXTENDS @ { . } on { ; }" + approval: Approved + schemaURL: ../schemas/1dot2SameExtends.shex + shape: http://a.example/A + dataURL: Is1_Ip1_Io1;Ip2_Io2.ttl + node: http://a.example/s1 + + - name: "2intersectP1ValueSet_pass" + status: conformant + trait: [TriplePattern, RepeatedPredicate] + comment: "two constraints on one predicate need assignment: { [\"a\" \"b\" \"c\"]; [\"b\" \"c\"] } on { \"a\",\"b\" }" + approval: Approved + schemaURL: ../schemas/2intersectP1ValueSet.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb.ttl + node: http://a.example/s1 + + - name: "2intersectP1ValueSet_fail" + status: nonconformant + trait: [TriplePattern, RepeatedPredicate] + comment: "{ [\"a\" \"b\" \"c\"]; [\"b\" \"c\"] } on { \"a\" } (one arc cannot satisfy both constraints)" + approval: Approved + schemaURL: ../schemas/2intersectP1ValueSet.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La.ttl + node: http://a.example/s1 + + - name: "2intersectP1ValueSet_fail-Ld" + status: nonconformant + trait: [TriplePattern, RepeatedPredicate] + comment: "{ [\"a\" \"b\" \"c\"]; [\"b\" \"c\"] } on { \"a\",\"d\" } (\"d\" is in neither value set)" + approval: Approved + schemaURL: ../schemas/2intersectP1ValueSet.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Ld.ttl + node: http://a.example/s1 + + - name: RecursionContingent_fail + status: nonconformant + trait: [ValueReference, RecursiveData, NonDotCardinality] + comment: "a recursion-contingent pass must not be reused after its assumption fails (#14): is nonconformant because lacks :preda so @:A truly fails" + approval: Approved + schemaURL: ../schemas/RecursionContingent.shex + shape: http://a.example/D + dataURL: recursionContingentData.ttl + node: http://a.example/d + + - name: RecursionContingent_pass + status: conformant + trait: [ValueReference, RecursiveData, NonDotCardinality] + comment: "the contingent recursion conforms when genuinely satisfies @:A (it has :preda), so the assumption made while recursing holds" + approval: Approved + schemaURL: ../schemas/RecursionContingent.shex + shape: http://a.example/D + dataURL: recursionContingentDataPass.ttl + node: http://a.example/d + + - name: "1datatypePattern_fail" + status: nonconformant + trait: [Datatype] + comment: "datatype and pattern on one constraint: { xsd:string /^ab/ } on { \"a\" }" + approval: Approved + schemaURL: ../schemas/1datatypePattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La.ttl + node: http://a.example/s1 + + - name: "1datatypePattern_pass" + status: conformant + trait: [Datatype] + comment: "{ xsd:string /^ab/ } on { \"abc\" } (a string matching the pattern)" + approval: Approved + schemaURL: ../schemas/1datatypePattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labc.ttl + node: http://a.example/s1 + + - name: "1NOTvsCard2_fail" + status: nonconformant + trait: [NonDotCardinality] + comment: "negation with a cardinality: { NOT [] {2} } on { , } has only one non-" + approval: Approved + schemaURL: ../schemas/1NOTvsCard2.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1,Io2.ttl + node: http://a.example/s1 + + - name: "1NOTvsCard2_fail-3arcs" + status: nonconformant + trait: [NonDotCardinality] + comment: "{ NOT [] {2} } on { ,, } (, match NOT [] {2} but the arc is unmatched and the shape is not EXTRA)" + approval: Approved + schemaURL: ../schemas/1NOTvsCard2.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1,Io2,Io3.ttl + node: http://a.example/s1 + + - name: "1NOTvsCard2Extra_pass" + status: conformant + trait: [NonDotCardinality, Extra] + comment: " EXTRA { NOT [] {2} } on { ,, } (, match NOT [] {2}; the arc is permitted by EXTRA)" + approval: Approved + schemaURL: ../schemas/1NOTvsCard2Extra.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1,Io2,Io3.ttl + node: http://a.example/s1 + + - name: "1Adot_pass" + status: conformant + trait: [TriplePattern] + comment: " { a . } on { a }" + approval: Approved + schemaURL: ../schemas/1Adot.shex + shape: http://a.example/S1 + dataURL: Is1_a_Io1.ttl + node: http://a.example/s1 + + ## } triple pattern + + ## node kind + ## node kinds { + - name: "1iri_pass-iri" + status: conformant + trait: [NodeKind] + comment: " { IRI } on { }" + approval: Approved + schemaURL: ../schemas/1iri.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1iri_fail-bnode" + status: nonconformant + trait: [NodeKind] + comment: " { IRI } on { _:ab }" + approval: Approved + schemaURL: ../schemas/1iri.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Bab.ttl + node: http://a.example/s1 + + - name: "1iri_fail-literal" + status: nonconformant + trait: [NodeKind] + comment: " { IRI } on { \"ab\" }" + approval: Approved + schemaURL: ../schemas/1iri.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1bnode_fail-iri" + status: nonconformant + trait: [NodeKind] + comment: " { BNODE } on { }" + approval: Approved + schemaURL: ../schemas/1bnode.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1bnode_pass-bnode" + status: conformant + trait: [NodeKind] + comment: " { BNODE } on { _:ab }" + approval: Approved + schemaURL: ../schemas/1bnode.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Bab.ttl + node: http://a.example/s1 + + - name: "1bnode_fail-literal" + status: nonconformant + trait: [NodeKind] + comment: " { BNODE } on { \"ab\" }" + approval: Approved + schemaURL: ../schemas/1bnode.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1literal_fail-iri" + status: nonconformant + trait: [NodeKind] + comment: " { LITERAL } on { }" + approval: Approved + schemaURL: ../schemas/1literal.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1literal_fail-bnode" + status: nonconformant + trait: [NodeKind] + comment: " { LITERAL } on { _:ab }" + approval: Approved + schemaURL: ../schemas/1literal.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Bab.ttl + node: http://a.example/s1 + + - name: "1literal_pass-literal" + status: conformant + trait: [NodeKind] + comment: " { LITERAL } on { \"ab\" }" + approval: Approved + schemaURL: ../schemas/1literal.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1nonliteral_pass-iri" + status: conformant + trait: [NodeKind] + comment: " { NONLITERAL } on { }" + approval: Approved + schemaURL: ../schemas/1nonliteral.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1focusnonLiteralLength-nonLiteralLength_fail-short" + status: nonconformant + trait: [NodeKind] + comment: " NONLITERAL LENGTH 19 { NONLITERAL LENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1focusnonLiteralLength-nonLiteralLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io.ttl + node: http://a.example/s1 + + - name: "1focusnonLiteralLength-nonLiteralLength_pass" + status: conformant + trait: [NodeKind] + comment: " NONLITERAL LENGTH 19 { NONLITERAL LENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1focusnonLiteralLength-nonLiteralLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1nonliteral_pass-bnode" + status: conformant + trait: [NodeKind] + comment: " { NONLITERAL } on { _:ab }" + approval: Approved + schemaURL: ../schemas/1nonliteral.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Bab.ttl + node: http://a.example/s1 + + - name: "1nonliteral_fail-literal" + status: nonconformant + trait: [NodeKind] + comment: " { NONLITERAL } on { \"ab\" }" + approval: Approved + schemaURL: ../schemas/1nonliteral.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + ## } node kinds + + ## datatype + ## datatype { + - name: "1datatype_missing" + status: nonconformant + trait: [Datatype] + comment: " { } on in { \"ab\" }" + approval: Approved + schemaURL: ../schemas/1datatype.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1datatype_nonLiteral" + status: nonconformant + trait: [Datatype] + comment: " { } on in { }" + approval: Approved + schemaURL: ../schemas/1datatype.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Idt1.ttl + node: http://a.example/s1 + + - name: "1datatype_langString" + status: nonconformant + trait: [Datatype] + comment: " { } on in { 'ab'@en }" + approval: Approved + schemaURL: ../schemas/1datatype.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LabLTen.ttl + node: http://a.example/s1 + + - name: "1datatype_wrongDatatype" + status: nonconformant + trait: [Datatype] + comment: " { } on in { 1.234 }" + approval: Approved + schemaURL: ../schemas/1datatype.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC1_234.ttl + node: http://a.example/s1 + + - name: "1datatype_pass" + status: conformant + trait: [Datatype] + comment: " { } on in { 'ab'^^ }" + approval: Approved + schemaURL: ../schemas/1datatype.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_dt1.ttl + node: http://a.example/s1 + + - name: "1datatypelangString_pass" + status: conformant + trait: [Datatype] + comment: " { rdf:langString } on in { 'ab'@en }" + approval: Approved + schemaURL: ../schemas/1datatypelangString.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LabLTen.ttl + node: http://a.example/s1 + + ### lexical form + ### lexical form { + + #### integer -1 0 1 +1 | "" -1.0 +1.0 1E0 + - name: integer-n1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:integer} / {

'-1'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-integer + dataURL: datatypes-data.ttl + node: http://a.example/integer-n1 + + - name: integer-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:integer} / {

'0'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-integer + dataURL: datatypes-data.ttl + node: http://a.example/integer-0 + + - name: integer-1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:integer} / {

'1'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-integer + dataURL: datatypes-data.ttl + node: http://a.example/integer-1 + + - name: integer-p1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:integer} / {

'+1'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-integer + dataURL: datatypes-data.ttl + node: http://a.example/integer-p1 + + - name: integer-empty_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:integer} / {

''^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-integer + dataURL: datatypes-data.ttl + node: http://a.example/integer-empty.0 + + - name: integer-n1.0_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:integer} / {

'-1.0'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-integer + dataURL: datatypes-data.ttl + node: http://a.example/integer-n1.0 + + - name: integer-p1.0_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:integer} / {

'+1.0'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-integer + dataURL: datatypes-data.ttl + node: http://a.example/integer-p1.0 + + - name: integer-1E0_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:integer} / {

'1E0'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-integer + dataURL: datatypes-data.ttl + node: http://a.example/integer-1E0 + + - name: integer-NaN_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:integer} / {

'NaN'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-integer + dataURL: datatypes-data.ttl + node: http://a.example/integer-NaN + + - name: integer-INF_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:integer} / {

'INF'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-integer + dataURL: datatypes-data.ttl + node: http://a.example/integer-INF + + #### decimal -1 0 1 +1 | "" -1.0 +1.0 1E0 NaN INF + - name: decimal-n1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:decimal} / {

'-1'^^xsd:decimal }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-decimal + dataURL: datatypes-data.ttl + node: http://a.example/decimal-n1 + + - name: decimal-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:decimal} / {

'0'^^xsd:decimal }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-decimal + dataURL: datatypes-data.ttl + node: http://a.example/decimal-0 + + - name: decimal-1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:decimal} / {

'1'^^xsd:decimal }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-decimal + dataURL: datatypes-data.ttl + node: http://a.example/decimal-1 + + - name: decimal-p1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:decimal} / {

'+1'^^xsd:decimal }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-decimal + dataURL: datatypes-data.ttl + node: http://a.example/decimal-p1 + + - name: decimal-n1.0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:decimal} / {

'-1.0'^^xsd:decimal }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-decimal + dataURL: datatypes-data.ttl + node: http://a.example/decimal-n1.0 + + - name: decimal-p1.0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:decimal} / {

'+1.0'^^xsd:decimal }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-decimal + dataURL: datatypes-data.ttl + node: http://a.example/decimal-p1.0 + + - name: decimal-empty_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:decimal} / {

''^^xsd:decimal }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-decimal + dataURL: datatypes-data.ttl + node: http://a.example/decimal-empty + + - name: decimal-1E0_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:decimal} / {

'1E0'^^xsd:decimal }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-decimal + dataURL: datatypes-data.ttl + node: http://a.example/decimal-1E0 + + - name: decimal-NaN_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:decimal} / {

'NaN'^^xsd:decimal }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-decimal + dataURL: datatypes-data.ttl + node: http://a.example/decimal-NaN + + - name: decimal-INF_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:decimal} / {

'INF'^^xsd:decimal }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-decimal + dataURL: datatypes-data.ttl + node: http://a.example/decimal-INF + + #### float -1 0 1 +1 -1.0 +1.0 | "" 1E0 + #### float -1 0 1 +1 -1.0 +1.0 1e0 1E0 NaN INF -INF | "" +INF + - name: float-n1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:float} / {

'-1'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-float + dataURL: datatypes-data.ttl + node: http://a.example/float-n1 + + - name: float-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:float} / {

'0'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-float + dataURL: datatypes-data.ttl + node: http://a.example/float-0 + + - name: float-1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:float} / {

'1'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-float + dataURL: datatypes-data.ttl + node: http://a.example/float-1 + + - name: float-p1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:float} / {

'+1'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-float + dataURL: datatypes-data.ttl + node: http://a.example/float-p1 + + - name: float-n1.0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:float} / {

'-1.0'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-float + dataURL: datatypes-data.ttl + node: http://a.example/float-n1.0 + + - name: float-p1.0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:float} / {

'+1.0'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-float + dataURL: datatypes-data.ttl + node: http://a.example/float-p1.0 + + - name: float-1elowercase0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:float} / {

'1e0'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-float + dataURL: datatypes-data.ttl + node: http://a.example/float-1e0 + + - name: float-1E0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:float} / {

'1E0'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-float + dataURL: datatypes-data.ttl + node: http://a.example/float-1E0 + + - name: float-NaN_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:float} / {

'NaN'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-float + dataURL: datatypes-data.ttl + node: http://a.example/float-NaN + + - name: float-INF_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:float} / {

'INF'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-float + dataURL: datatypes-data.ttl + node: http://a.example/float-INF + + - name: float-nINF_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:float} / {

'-INF'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-float + dataURL: datatypes-data.ttl + node: http://a.example/float-nINF + + - name: float-empty_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:float} / {

''^^xsd:float }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-float + dataURL: datatypes-data.ttl + node: http://a.example/float-empty + + - name: float-pINF_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:float} / {

'+INF'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-float + dataURL: datatypes-data.ttl + node: http://a.example/float-pINF + + #### double -1 0 1 +1 -1.0 +1.0 1e0 1E0 NaN INF -INF | "" +INF + - name: double-n1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:double} / {

'-1'^^xsd:double }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-double + dataURL: datatypes-data.ttl + node: http://a.example/double-n1 + + - name: double-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:double} / {

'0'^^xsd:double }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-double + dataURL: datatypes-data.ttl + node: http://a.example/double-0 + + - name: double-1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:double} / {

'1'^^xsd:double }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-double + dataURL: datatypes-data.ttl + node: http://a.example/double-1 + + - name: double-p1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:double} / {

'+1'^^xsd:double }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-double + dataURL: datatypes-data.ttl + node: http://a.example/double-p1 + + - name: double-n1.0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:double} / {

'-1.0'^^xsd:double }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-double + dataURL: datatypes-data.ttl + node: http://a.example/double-n1.0 + + - name: double-p1.0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:double} / {

'+1.0'^^xsd:double }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-double + dataURL: datatypes-data.ttl + node: http://a.example/double-p1.0 + + - name: double-1E0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:double} / {

'1E0'^^xsd:double }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-double + dataURL: datatypes-data.ttl + node: http://a.example/double-1E0 + + - name: double-1e0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:double} / {

'1e0'^^xsd:double }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-double + dataURL: datatypes-data.ttl + node: http://a.example/double-1e0 + + - name: double-NaN_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:double} / {

'NaN'^^xsd:double }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-double + dataURL: datatypes-data.ttl + node: http://a.example/double-NaN + + - name: double-INF_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:double} / {

'INF'^^xsd:double }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-double + dataURL: datatypes-data.ttl + node: http://a.example/double-INF + + - name: double-nINF_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:double} / {

'-INF'^^xsd:double }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-double + dataURL: datatypes-data.ttl + node: http://a.example/double-nINF + + - name: double-empty_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:double} / {

''^^xsd:double }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-double + dataURL: datatypes-data.ttl + node: http://a.example/double-empty + + - name: double-pINF_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:double} / {

'+INF'^^xsd:double }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-double + dataURL: datatypes-data.ttl + node: http://a.example/double-pINF + + #### nonPositiveInteger -1 0 +0 -0 | 1 +1 1a a1 + - name: nonPositiveInteger-n1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:nonPositiveInteger} / {

'-1'^^xsd:nonPositiveInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-nonPositiveInteger + dataURL: datatypes-data.ttl + node: http://a.example/nonPositiveInteger-n1 + + - name: nonPositiveInteger-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:nonPositiveInteger} / {

'0'^^xsd:nonPositiveInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-nonPositiveInteger + dataURL: datatypes-data.ttl + node: http://a.example/nonPositiveInteger-0 + + - name: nonPositiveInteger-p0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:nonPositiveInteger} / {

'+0'^^xsd:nonPositiveInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-nonPositiveInteger + dataURL: datatypes-data.ttl + node: http://a.example/nonPositiveInteger-p0 + + - name: nonPositiveInteger-n0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:nonPositiveInteger} / {

'-0'^^xsd:nonPositiveInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-nonPositiveInteger + dataURL: datatypes-data.ttl + node: http://a.example/nonPositiveInteger-n0 + + - name: nonPositiveInteger-1_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:nonPositiveInteger} / {

'1'^^xsd:nonPositiveInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-nonPositiveInteger + dataURL: datatypes-data.ttl + node: http://a.example/nonPositiveInteger-1 + + - name: nonPositiveInteger-p1_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:nonPositiveInteger} / {

'+1'^^xsd:nonPositiveInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-nonPositiveInteger + dataURL: datatypes-data.ttl + node: http://a.example/nonPositiveInteger-p1 + + - name: nonPositiveInteger-1a_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:nonPositiveInteger} / {

'1a'^^xsd:nonPositiveInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-nonPositiveInteger + dataURL: datatypes-data.ttl + node: http://a.example/nonPositiveInteger-1a + + - name: nonPositiveInteger-a1_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:nonPositiveInteger} / {

'a1'^^xsd:nonPositiveInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-nonPositiveInteger + dataURL: datatypes-data.ttl + node: http://a.example/nonPositiveInteger-a1 + + #### negativeInteger -1 | 0 +0 -0 1 + - name: negativeInteger-n1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:negativeInteger} / {

'-1'^^xsd:negativeInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-negativeInteger + dataURL: datatypes-data.ttl + node: http://a.example/negativeInteger-n1 + + - name: negativeInteger-0_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:negativeInteger} / {

'0'^^xsd:negativeInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-negativeInteger + dataURL: datatypes-data.ttl + node: http://a.example/negativeInteger-0 + + - name: negativeInteger-p0_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:negativeInteger} / {

'+0'^^xsd:negativeInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-negativeInteger + dataURL: datatypes-data.ttl + node: http://a.example/negativeInteger-p0 + + - name: negativeInteger-n0_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:negativeInteger} / {

'-0'^^xsd:negativeInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-negativeInteger + dataURL: datatypes-data.ttl + node: http://a.example/negativeInteger-n0 + + - name: negativeInteger-1_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:negativeInteger} / {

'1'^^xsd:negativeInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-negativeInteger + dataURL: datatypes-data.ttl + node: http://a.example/negativeInteger-1 + + #### long -1 0 1 +1 | + - name: long-n1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:long} / {

'-1'^^xsd:long }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-long + dataURL: datatypes-data.ttl + node: http://a.example/long-n1 + + - name: long-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:long} / {

'0'^^xsd:long }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-long + dataURL: datatypes-data.ttl + node: http://a.example/long-0 + + - name: long-1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:long} / {

'1'^^xsd:long }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-long + dataURL: datatypes-data.ttl + node: http://a.example/long-1 + + - name: long-p1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:long} / {

'+1'^^xsd:long }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-long + dataURL: datatypes-data.ttl + node: http://a.example/long-p1 + + #### int -1 0 1 +1 | + - name: int-n1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:int} / {

'-1'^^xsd:int }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-int + dataURL: datatypes-data.ttl + node: http://a.example/int-n1 + + - name: int-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:int} / {

'0'^^xsd:int }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-int + dataURL: datatypes-data.ttl + node: http://a.example/int-0 + + - name: int-1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:int} / {

'1'^^xsd:int }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-int + dataURL: datatypes-data.ttl + node: http://a.example/int-1 + + - name: int-p1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:int} / {

'+1'^^xsd:int }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-int + dataURL: datatypes-data.ttl + node: http://a.example/int-p1 + + #### short -32768 0 32767 | -32769 32768 + - name: short-n32768_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:short} / {

'-32768'^^xsd:short }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-short + dataURL: datatypes-data.ttl + node: http://a.example/short-n32768 + + - name: short-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:short} / {

'0'^^xsd:short }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-short + dataURL: datatypes-data.ttl + node: http://a.example/short-0 + + - name: short-32767_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:short} / {

'32767'^^xsd:short }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-short + dataURL: datatypes-data.ttl + node: http://a.example/short-32767 + + - name: short-n32769_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:short} / {

'-32769'^^xsd:short }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-short + dataURL: datatypes-data.ttl + node: http://a.example/short-n32769 + + - name: short-32768_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:short} / {

'32768'^^xsd:short }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-short + dataURL: datatypes-data.ttl + node: http://a.example/short-32768 + + #### byte -128 0 127 | "" -129 128 + - name: byte-n128_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:byte} / {

'-128'^^xsd:byte }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-byte + dataURL: datatypes-data.ttl + node: http://a.example/byte-n128 + + - name: byte-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:byte} / {

'0'^^xsd:byte }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-byte + dataURL: datatypes-data.ttl + node: http://a.example/byte-0 + + - name: byte-127_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:byte} / {

'127'^^xsd:byte }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-byte + dataURL: datatypes-data.ttl + node: http://a.example/byte-127 + + - name: byte-empty_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:byte} / {

''^^xsd:byte }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-byte + dataURL: datatypes-data.ttl + node: http://a.example/byte-empty + + - name: byte-n129_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:byte} / {

'-129'^^xsd:byte }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-byte + dataURL: datatypes-data.ttl + node: http://a.example/byte-n129 + + - name: byte-128_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:byte} / {

'128'^^xsd:byte }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-byte + dataURL: datatypes-data.ttl + node: http://a.example/byte-128 + + #### nonNegativeInteger 0 -0 +0 1 +1 | -1 + - name: nonNegativeInteger-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:nonNegativeInteger} / {

'0'^^xsd:nonNegativeInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-nonNegativeInteger + dataURL: datatypes-data.ttl + node: http://a.example/nonNegativeInteger-0 + + - name: nonNegativeInteger-n0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:nonNegativeInteger} / {

'-0'^^xsd:nonNegativeInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-nonNegativeInteger + dataURL: datatypes-data.ttl + node: http://a.example/nonNegativeInteger-n0 + + - name: nonNegativeInteger-p0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:nonNegativeInteger} / {

'+0'^^xsd:nonNegativeInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-nonNegativeInteger + dataURL: datatypes-data.ttl + node: http://a.example/nonNegativeInteger-p0 + + - name: nonNegativeInteger-1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:nonNegativeInteger} / {

'1'^^xsd:nonNegativeInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-nonNegativeInteger + dataURL: datatypes-data.ttl + node: http://a.example/nonNegativeInteger-1 + + - name: nonNegativeInteger-p1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:nonNegativeInteger} / {

'+1'^^xsd:nonNegativeInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-nonNegativeInteger + dataURL: datatypes-data.ttl + node: http://a.example/nonNegativeInteger-p1 + + - name: nonNegativeInteger-n1_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:nonNegativeInteger} / {

'-1'^^xsd:nonNegativeInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-nonNegativeInteger + dataURL: datatypes-data.ttl + node: http://a.example/nonNegativeInteger-n1 + + #### unsignedLong 0 1 | -1 + - name: unsignedLong-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:unsignedLong} / {

'0'^^xsd:unsignedLong }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-unsignedLong + dataURL: datatypes-data.ttl + node: http://a.example/unsignedLong-0 + + - name: unsignedLong-1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:unsignedLong} / {

'1'^^xsd:unsignedLong }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-unsignedLong + dataURL: datatypes-data.ttl + node: http://a.example/unsignedLong-1 + + - name: unsignedLong-n1_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:unsignedLong} / {

'-1'^^xsd:unsignedLong }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-unsignedLong + dataURL: datatypes-data.ttl + node: http://a.example/unsignedLong-n1 + + #### unsignedInt 0 1 | -1 + - name: unsignedInt-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:unsignedInt} / {

'0'^^xsd:unsignedInt }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-unsignedInt + dataURL: datatypes-data.ttl + node: http://a.example/unsignedInt-0 + + - name: unsignedInt-1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:unsignedInt} / {

'1'^^xsd:unsignedInt }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-unsignedInt + dataURL: datatypes-data.ttl + node: http://a.example/unsignedInt-1 + + - name: unsignedInt-n1_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:unsignedInt} / {

'-1'^^xsd:unsignedInt }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-unsignedInt + dataURL: datatypes-data.ttl + node: http://a.example/unsignedInt-n1 + + #### unsignedShort 0 65535 | -1 65536 + - name: unsignedShort-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:unsignedShort} / {

'0'^^xsd:unsignedShort }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-unsignedShort + dataURL: datatypes-data.ttl + node: http://a.example/unsignedShort-0 + + - name: unsignedShort-65535_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:unsignedShort} / {

'65535'^^xsd:unsignedShort }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-unsignedShort + dataURL: datatypes-data.ttl + node: http://a.example/unsignedShort-65535 + + - name: unsignedShort-n1_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:unsignedShort} / {

'-1'^^xsd:unsignedShort }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-unsignedShort + dataURL: datatypes-data.ttl + node: http://a.example/unsignedShort-n1 + + - name: unsignedShort-65536_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:unsignedShort} / {

'65536'^^xsd:unsignedShort }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-unsignedShort + dataURL: datatypes-data.ttl + node: http://a.example/unsignedShort-65536 + + #### unsignedByte 0 255 | -1 256 + - name: unsignedByte-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:unsignedByte} / {

'0'^^xsd:unsignedByte }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-unsignedByte + dataURL: datatypes-data.ttl + node: http://a.example/unsignedByte-0 + + - name: unsignedByte-255_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:unsignedByte} / {

'255'^^xsd:unsignedByte }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-unsignedByte + dataURL: datatypes-data.ttl + node: http://a.example/unsignedByte-255 + + - name: unsignedByte-n1_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:unsignedByte} / {

'-1'^^xsd:unsignedByte }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-unsignedByte + dataURL: datatypes-data.ttl + node: http://a.example/unsignedByte-n1 + + - name: unsignedByte-256_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:unsignedByte} / {

'256'^^xsd:unsignedByte }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-unsignedByte + dataURL: datatypes-data.ttl + node: http://a.example/unsignedByte-256 + + #### positiveInteger 1 | -1 0 + - name: positiveInteger-1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:positiveInteger} / {

'1'^^xsd:positiveInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-positiveInteger + dataURL: datatypes-data.ttl + node: http://a.example/positiveInteger-1 + + - name: positiveInteger-n1_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:positiveInteger} / {

'-1'^^xsd:positiveInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-positiveInteger + dataURL: datatypes-data.ttl + node: http://a.example/positiveInteger-n1 + + - name: positiveInteger-0_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:positiveInteger} / {

'0'^^xsd:positiveInteger }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-positiveInteger + dataURL: datatypes-data.ttl + node: http://a.example/positiveInteger-0 + + #### string "" "a" "0" + - name: string-empty_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:string} / {

''^^xsd:string }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-string + dataURL: datatypes-data.ttl + node: http://a.example/string-empty + + - name: string-a_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:string} / {

'a'^^xsd:string }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-string + dataURL: datatypes-data.ttl + node: http://a.example/string-a + + - name: string-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:string} / {

'0'^^xsd:string }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-string + dataURL: datatypes-data.ttl + node: http://a.example/string-0 + + #### boolean true false 0 1 | "" TRUE FALSE tRuE fAlSe -1 2 10 01 + - name: boolean-true_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:boolean} / {

'true'^^xsd:boolean }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-boolean + dataURL: datatypes-data.ttl + node: http://a.example/boolean-true + + - name: boolean-false_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:boolean} / {

'false'^^xsd:boolean }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-boolean + dataURL: datatypes-data.ttl + node: http://a.example/boolean-false + + - name: boolean-0_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:boolean} / {

'0'^^xsd:boolean }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-boolean + dataURL: datatypes-data.ttl + node: http://a.example/boolean-0 + + - name: boolean-1_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:boolean} / {

'1'^^xsd:boolean }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-boolean + dataURL: datatypes-data.ttl + node: http://a.example/boolean-1 + + - name: boolean-empty_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:boolean} / {

''^^xsd:boolean }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-boolean + dataURL: datatypes-data.ttl + node: http://a.example/boolean-empty + + - name: boolean-TRUE_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:boolean} / {

'TRUE'^^xsd:boolean }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-boolean + dataURL: datatypes-data.ttl + node: http://a.example/boolean-TRUE + + - name: boolean-FALSE_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:boolean} / {

'FALSE'^^xsd:boolean }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-boolean + dataURL: datatypes-data.ttl + node: http://a.example/boolean-FALSE + + - name: boolean-tRuE_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:boolean} / {

'tRuE'^^xsd:boolean }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-boolean + dataURL: datatypes-data.ttl + node: http://a.example/boolean-tRuE + + - name: boolean-fAlSe_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:boolean} / {

'fAlSe'^^xsd:boolean }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-boolean + dataURL: datatypes-data.ttl + node: http://a.example/boolean-fAlSe + + - name: boolean-n1_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:boolean} / {

'-1'^^xsd:boolean }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-boolean + dataURL: datatypes-data.ttl + node: http://a.example/boolean-n1 + + - name: boolean-2_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:boolean} / {

'2'^^xsd:boolean }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-boolean + dataURL: datatypes-data.ttl + node: http://a.example/boolean-2 + + - name: boolean-10_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:boolean} / {

'10'^^xsd:boolean }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-boolean + dataURL: datatypes-data.ttl + node: http://a.example/boolean-10 + + - name: boolean-01_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:boolean} / {

'01'^^xsd:boolean }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-boolean + dataURL: datatypes-data.ttl + node: http://a.example/boolean-01 + + #### dateTime "2012-01-02T12:34.56Z" | "" "2012-01-02T" "2012-01-02" + - name: dateTime-dt_pass + status: conformant + trait: [ValidLexicalForm] + comment: " {

xsd:dateTime} / {

'2012-01-02T12:34.56Z'^^xsd:dateTime }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-dateTime + dataURL: datatypes-data.ttl + node: http://a.example/dateTime-dt + + - name: dateTime-empty_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:dateTime} / {

''^^xsd:dateTime }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-dateTime + dataURL: datatypes-data.ttl + node: http://a.example/dateTime-empty + + - name: dateTime-dT_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:dateTime} / {

'2012-01-02T'^^xsd:dateTime }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-dateTime + dataURL: datatypes-data.ttl + node: http://a.example/dateTime-dT + + - name: dateTime-d_fail + status: nonconformant + trait: [ValidLexicalForm] + comment: " {

xsd:dateTime} / {

'2012-01-02'^^xsd:dateTime }" + approval: Approved + schemaURL: ../schemas/datatypes.shex + shape: http://a.example/S-dateTime + dataURL: datatypes-data.ttl + node: http://a.example/dateTime-d + + ### } lexical form + ## } datatype + + ## cardinality + ### dot cardinality + ## cardinality { + ### dot cardinality { + - name: "1card2_fail0" + status: nonconformant + trait: [DotCardinality] + comment: " { .{2} } on { }" + approval: Approved + schemaURL: ../schemas/1card2.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + + - name: "1card2_fail1" + status: nonconformant + trait: [DotCardinality] + comment: " { .{2} } on { 'a' }" + approval: Approved + schemaURL: ../schemas/1card2.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La.ttl + node: http://a.example/s1 + + - name: "1card2_pass2" + status: conformant + trait: [DotCardinality] + comment: " { .{2} } on { 'a','b' }" + approval: Approved + schemaURL: ../schemas/1card2.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb.ttl + node: http://a.example/s1 + + - name: "1card2_fail3" + status: nonconformant + trait: [DotCardinality] + comment: " { .{2} } on { 'a','b','c' }" + approval: Approved + schemaURL: ../schemas/1card2.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb,Lc.ttl + node: http://a.example/s1 + + - name: "1card25_fail0" + status: nonconformant + trait: [DotCardinality] + comment: " { .{2,5} } on { }" + approval: Approved + schemaURL: ../schemas/1card25.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + + - name: "1card25_fail1" + status: nonconformant + trait: [DotCardinality] + comment: " { .{2,5} } on { 'a' }" + approval: Approved + schemaURL: ../schemas/1card25.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La.ttl + node: http://a.example/s1 + + - name: "1card25_pass2" + status: conformant + trait: [DotCardinality] + comment: " { .{2,5} } on { 'a','b' }" + approval: Approved + schemaURL: ../schemas/1card25.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb.ttl + node: http://a.example/s1 + + - name: "1card25_pass3" + status: conformant + trait: [DotCardinality] + comment: " { .{2,5} } on { 'a','b','c' }" + approval: Approved + schemaURL: ../schemas/1card25.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb,Lc.ttl + node: http://a.example/s1 + + - name: "1card25_pass4" + status: conformant + trait: [DotCardinality] + comment: " { .{2,5} } on { 'a','b','c','d' }" + approval: Approved + schemaURL: ../schemas/1card25.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb,Lc,Ld.ttl + node: http://a.example/s1 + + - name: "1card25_pass5" + status: conformant + trait: [DotCardinality] + comment: " { .{2,5} } on { 'a','b','c','d','e' }" + approval: Approved + schemaURL: ../schemas/1card25.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb,Lc,Ld,Le.ttl + node: http://a.example/s1 + + - name: "1card25_fail6" + status: nonconformant + trait: [DotCardinality] + comment: " { .{2,5} } on { 'a','b','c','d','e','f' }" + approval: Approved + schemaURL: ../schemas/1card25.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb,Lc,Ld,Le,Lf.ttl + node: http://a.example/s1 + + - name: "1card2Star_fail0" + status: nonconformant + trait: [DotCardinality] + comment: " { .{2,*} } on { }" + approval: Approved + schemaURL: ../schemas/1card2Star.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + + - name: "1card2Star_fail1" + status: nonconformant + trait: [DotCardinality] + comment: " { .{2,*} } on { 'a' }" + approval: Approved + schemaURL: ../schemas/1card2Star.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La.ttl + node: http://a.example/s1 + + - name: "1card2Star_pass2" + status: conformant + trait: [DotCardinality] + comment: " { .{2,*} } on { 'a','b' }" + approval: Approved + schemaURL: ../schemas/1card2Star.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb.ttl + node: http://a.example/s1 + + - name: "1card2Star_pass3" + status: conformant + trait: [DotCardinality] + comment: " { .{2,*} } on { 'a','b','c' }" + approval: Approved + schemaURL: ../schemas/1card2Star.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb,Lc.ttl + node: http://a.example/s1 + + - name: "1card2Star_pass6" + status: conformant + trait: [DotCardinality] + comment: " { .{2,*} } on { 'a','b','c','d','e','f' }" + approval: Approved + schemaURL: ../schemas/1card2Star.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb,Lc,Ld,Le,Lf.ttl + node: http://a.example/s1 + # 1card2blank_... same as 1card2Star + - name: "1cardOpt_pass0" + status: conformant + trait: [DotCardinality] + comment: " { .? } on { }" + approval: Approved + schemaURL: ../schemas/1cardOpt.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + + - name: "1cardOpt_pass1" + status: conformant + trait: [DotCardinality] + comment: " { .? } on { 'a' }" + approval: Approved + schemaURL: ../schemas/1cardOpt.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La.ttl + node: http://a.example/s1 + + - name: "1cardOpt_fail2" + status: nonconformant + trait: [DotCardinality] + comment: " { .? } on { 'a','b' }" + approval: Approved + schemaURL: ../schemas/1cardOpt.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb.ttl + node: http://a.example/s1 + + - name: "1cardOpt_pass6" + status: nonconformant + trait: [DotCardinality] + comment: " { .? } on { 'a','b','c','d','e','f' }" + approval: Approved + schemaURL: ../schemas/1cardOpt.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb,Lc,Ld,Le,Lf.ttl + node: http://a.example/s1 + + - name: "1cardPlus_fail0" + status: nonconformant + trait: [DotCardinality] + comment: " { .+ } on { }" + approval: Approved + schemaURL: ../schemas/1cardPlus.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + + - name: "1cardPlus_pass1" + status: conformant + trait: [DotCardinality] + comment: " { .+ } on { 'a' }" + approval: Approved + schemaURL: ../schemas/1cardPlus.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La.ttl + node: http://a.example/s1 + + - name: "1cardPlus_pass2" + status: conformant + trait: [DotCardinality] + comment: " { .+ } on { 'a','b' }" + approval: Approved + schemaURL: ../schemas/1cardPlus.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb.ttl + node: http://a.example/s1 + + - name: "1cardPlus_pass6" + status: conformant + trait: [DotCardinality] + comment: " { .+ } on { 'a','b','c','d','e','f' }" + approval: Approved + schemaURL: ../schemas/1cardPlus.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb,Lc,Ld,Le,Lf.ttl + node: http://a.example/s1 + + - name: "1cardStar_pass0" + status: conformant + trait: [DotCardinality] + comment: " { .* } on { }" + approval: Approved + schemaURL: ../schemas/1cardStar.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + + - name: "1cardStar_pass1" + status: conformant + trait: [DotCardinality] + comment: " { .* } on { 'a' }" + approval: Approved + schemaURL: ../schemas/1cardStar.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La.ttl + node: http://a.example/s1 + + - name: "1cardStar_pass2" + status: conformant + trait: [DotCardinality] + comment: " { .* } on { 'a','b' }" + approval: Approved + schemaURL: ../schemas/1cardStar.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb.ttl + node: http://a.example/s1 + + - name: "1cardStar_pass6" + status: conformant + trait: [DotCardinality] + comment: " { .* } on { 'a','b','c','d','e','f' }" + approval: Approved + schemaURL: ../schemas/1cardStar.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb,Lc,Ld,Le,Lf.ttl + node: http://a.example/s1 + + - name: "1card0_pass0" + status: conformant + trait: [DotCardinality] + comment: " { .{0} } on { }" + approval: Approved + schemaURL: ../schemas/1card0.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + + - name: "1card0_pass-p2" + status: conformant + trait: [DotCardinality] + comment: " { .{0} } on { }" + approval: Approved + schemaURL: ../schemas/1card0.shex + shape: http://a.example/S1 + dataURL: Is1_Ip2_Io1.ttl + node: http://a.example/s1 + + - name: "1card0_fail1" + status: nonconformant + trait: [DotCardinality] + comment: " { .{0} } on { \"a\" }" + approval: Approved + schemaURL: ../schemas/1card0.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La.ttl + node: http://a.example/s1 + + - name: "1card1_fail0" + status: nonconformant + trait: [DotCardinality] + comment: " { .{1} } on { }" + approval: Approved + schemaURL: ../schemas/1card1.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + + - name: "1card1_pass1" + status: conformant + trait: [DotCardinality] + comment: " { .{1} } on { \"a\" }" + approval: Approved + schemaURL: ../schemas/1card1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La.ttl + node: http://a.example/s1 + + - name: "1card1_fail2" + status: nonconformant + trait: [DotCardinality] + comment: " { .{1} } on { \"a\", \"b\" }" + approval: Approved + schemaURL: ../schemas/1card1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Lb.ttl + node: http://a.example/s1 + ### } dot cardinality + + ### non-dot cardinality + ### non-dot cardinality { + - name: "1literalPlus_Is1_Ip1_La,Io1" + status: nonconformant + trait: [NonDotCardinality] + comment: " { LITERAL+ } on { 'a', }" + approval: Approved + schemaURL: ../schemas/1literalPlus.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Io1.ttl + node: http://a.example/s1 + + - name: open2Eachdotclosecard0c1dot_pass-c1 + status: conformant + trait: [EachOf, NonDotCardinality] + comment: " { ( :a .; :b . ){0}; :c . } on { :c \"1\" }" + approval: Approved + schemaURL: ../schemas/open2Eachdotclosecard0c1dot.shex + shape: http://a.example/S + dataURL: c1.ttl + node: x + + - name: open2Eachdotclosecard0c1dot_fail-a1b1c1 + status: nonconformant + trait: [EachOf, NonDotCardinality] + comment: " { ( :a .; :b . ){0}; :c . } on { :a \"1\" ; :b \"1\" ; :c \"1\" }" + approval: Approved + schemaURL: ../schemas/open2Eachdotclosecard0c1dot.shex + shape: http://a.example/S + dataURL: a1b1c1.ttl + node: x + + - name: open2Eachdotclosecard0c1dot_fail-a1c1 + status: nonconformant + trait: [EachOf, NonDotCardinality] + comment: " { ( :a .; :b . ){0}; :c . } on { :a \"1\" ; :c \"1\" }" + approval: Approved + schemaURL: ../schemas/open2Eachdotclosecard0c1dot.shex + shape: http://a.example/S + dataURL: a1c1.ttl + node: x + + - name: open2Eachdotclosecard0c1dot_fail-a2b2 + status: nonconformant + trait: [EachOf, NonDotCardinality] + comment: " { ( :a .; :b . ){0}; :c . } on { :a \"1\", \"2\" ; :b \"1\", \"2\" }" + approval: Approved + schemaURL: ../schemas/open2Eachdotclosecard0c1dot.shex + shape: http://a.example/S + dataURL: a2b2.ttl + node: x + + - name: open2EachdotclosecardStar_pass0 + status: conformant + trait: [EachOf, NonDotCardinality] + comment: " { ( :a .; :b . )* } on { }" + approval: Approved + schemaURL: ../schemas/open2EachdotclosecardStar.shex + shape: http://a.example/S + dataURL: empty.ttl + node: x + + - name: open2EachdotclosecardStar_pass-c1 + status: conformant + trait: [EachOf, NonDotCardinality] + comment: " { ( :a .; :b . )* } on { :c \"1\" }" + approval: Approved + schemaURL: ../schemas/open2EachdotclosecardStar.shex + shape: http://a.example/S + dataURL: c1.ttl + node: x + + - name: open2EachdotclosecardStar_pass-a2b2 + status: conformant + trait: [EachOf, NonDotCardinality] + comment: " { ( :a .; :b . )* } on { :a \"1\", \"2\" ; :b \"1\", \"2\" }" + approval: Approved + schemaURL: ../schemas/open2EachdotclosecardStar.shex + shape: http://a.example/S + dataURL: a2b2.ttl + node: x + + - name: open2EachdotclosecardStar_fail-a1 + status: nonconformant + trait: [EachOf, NonDotCardinality] + comment: " { ( :a .; :b . )* } on { :a \"1\" }" + approval: Approved + schemaURL: ../schemas/open2EachdotclosecardStar.shex + shape: http://a.example/S + dataURL: a1.ttl + node: x + + - name: open2EachdotclosecardOpt_pass-c1 + status: conformant + trait: [EachOf, NonDotCardinality] + comment: " { ( :a .; :b . )? } on { :c \"1\" }" + approval: Approved + schemaURL: ../schemas/open2EachdotclosecardOpt.shex + shape: http://a.example/S + dataURL: c1.ttl + node: x + + - name: open2EachdotclosecardOpt_fail-a2b2 + status: nonconformant + trait: [EachOf, NonDotCardinality] + comment: " { ( :a .; :b . )? } on { :a \"1\", \"2\" ; :b \"1\", \"2\" }" + approval: Approved + schemaURL: ../schemas/open2EachdotclosecardOpt.shex + shape: http://a.example/S + dataURL: a2b2.ttl + node: x + + - name: open2Eachdotclosecard02_pass-c1 + status: conformant + trait: [EachOf, NonDotCardinality] + comment: " { ( :a .; :b . ){0,2} } on { :c \"1\" }" + approval: Approved + schemaURL: ../schemas/open2Eachdotclosecard02.shex + shape: http://a.example/S + dataURL: c1.ttl + node: x + + - name: open2Eachdotclosecard02_pass-a2b2 + status: conformant + trait: [EachOf, NonDotCardinality] + comment: " { ( :a .; :b . ){0,2} } on { :a \"1\", \"2\" ; :b \"1\", \"2\" }" + approval: Approved + schemaURL: ../schemas/open2Eachdotclosecard02.shex + shape: http://a.example/S + dataURL: a2b2.ttl + node: x + + - name: open2Eachdotclosecard02_fail-a3b3 + status: nonconformant + trait: [EachOf, NonDotCardinality] + comment: " { ( :a .; :b . ){0,2} } on { :a \"1\", \"2\", \"3\" ; :b \"1\", \"2\", \"3\" }" + approval: Approved + schemaURL: ../schemas/open2Eachdotclosecard02.shex + shape: http://a.example/S + dataURL: a3b3.ttl + node: x + + - name: open2OnedotclosecardStar_pass-c1 + status: conformant + trait: [OneOf, NonDotCardinality] + comment: " { ( :a . | :b . )* } on { :c \"1\" }" + approval: Approved + schemaURL: ../schemas/open2OnedotclosecardStar.shex + shape: http://a.example/S + dataURL: c1.ttl + node: x + + - name: open2OnedotclosecardStar_pass-a2b2 + status: conformant + trait: [OneOf, NonDotCardinality] + comment: " { ( :a . | :b . )* } on { :a \"1\", \"2\" ; :b \"1\", \"2\" }" + approval: Approved + schemaURL: ../schemas/open2OnedotclosecardStar.shex + shape: http://a.example/S + dataURL: a2b2.ttl + node: x + + - name: open1dot1cardPlusclosecard2_pass-a2b2 + status: conformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .; :b .+ ){2} } on { :a \"1\", \"2\" ; :b \"1\", \"2\" }" + approval: Approved + schemaURL: ../schemas/open1dot1cardPlusclosecard2.shex + shape: http://a.example/S + dataURL: a2b2.ttl + node: x + + - name: open1dot1cardPlusclosecard2_pass-a2b3 + status: conformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .; :b .+ ){2} } on { :a \"1\", \"2\" ; :b \"1\", \"2\", \"3\" }" + approval: Approved + schemaURL: ../schemas/open1dot1cardPlusclosecard2.shex + shape: http://a.example/S + dataURL: a2b3.ttl + node: x + + - name: open1dot1cardPlusclosecard2_fail-a2b1 + status: nonconformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .; :b .+ ){2} } on { :a \"1\", \"2\" ; :b \"1\" }" + approval: Approved + schemaURL: ../schemas/open1dot1cardPlusclosecard2.shex + shape: http://a.example/S + dataURL: a2b1.ttl + node: x + + - name: open1dot1cardPlusclosecard2_fail-a3b3 + status: nonconformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .; :b .+ ){2} } on { :a \"1\", \"2\", \"3\" ; :b \"1\", \"2\", \"3\" }" + approval: Approved + schemaURL: ../schemas/open1dot1cardPlusclosecard2.shex + shape: http://a.example/S + dataURL: a3b3.ttl + node: x + + - name: open1dot1cardPlusclosecard2_fail-a1b2 + status: nonconformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .; :b .+ ){2} } on { :a \"1\" ; :b \"1\", \"2\" }" + approval: Approved + schemaURL: ../schemas/open1dot1cardPlusclosecard2.shex + shape: http://a.example/S + dataURL: a1b2.ttl + node: x + + - name: open1cardPlus1dotclosecard2_pass-a2b2 + status: conformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .+; :b . ){2} } on { :a \"1\", \"2\" ; :b \"1\", \"2\" }" + approval: Approved + schemaURL: ../schemas/open1cardPlus1dotclosecard2.shex + shape: http://a.example/S + dataURL: a2b2.ttl + node: x + + - name: open1cardPlus1dotclosecard2_pass-a3b2 + status: conformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .+; :b . ){2} } on { :a \"1\", \"2\", \"3\" ; :b \"1\", \"2\" }" + approval: Approved + schemaURL: ../schemas/open1cardPlus1dotclosecard2.shex + shape: http://a.example/S + dataURL: a3b2.ttl + node: x + + - name: open1cardPlus1dotclosecard2_fail-a1b2 + status: nonconformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .+; :b . ){2} } on { :a \"1\" ; :b \"1\", \"2\" }" + approval: Approved + schemaURL: ../schemas/open1cardPlus1dotclosecard2.shex + shape: http://a.example/S + dataURL: a1b2.ttl + node: x + + - name: open1card21dotclosecardStar_pass-c1 + status: conformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .{2}; :b . )* } on { :c \"1\" }" + approval: Approved + schemaURL: ../schemas/open1card21dotclosecardStar.shex + shape: http://a.example/S + dataURL: c1.ttl + node: x + + - name: open1card21dotclosecardStar_pass-a2b1 + status: conformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .{2}; :b . )* } on { :a \"1\", \"2\" ; :b \"1\" }" + approval: Approved + schemaURL: ../schemas/open1card21dotclosecardStar.shex + shape: http://a.example/S + dataURL: a2b1.ttl + node: x + + - name: open1card21dotclosecardStar_pass-a4b2 + status: conformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .{2}; :b . )* } on { :a \"1\", \"2\", \"3\", \"4\" ; :b \"1\", \"2\" }" + approval: Approved + schemaURL: ../schemas/open1card21dotclosecardStar.shex + shape: http://a.example/S + dataURL: a4b2.ttl + node: x + + - name: open1card21dotclosecardStar_fail-a1 + status: nonconformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .{2}; :b . )* } on { :a \"1\" }" + approval: Approved + schemaURL: ../schemas/open1card21dotclosecardStar.shex + shape: http://a.example/S + dataURL: a1.ttl + node: x + + - name: open1card21dotclosecardStar_fail-a2b2 + status: nonconformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .{2}; :b . )* } on { :a \"1\", \"2\" ; :b \"1\", \"2\" }" + approval: Approved + schemaURL: ../schemas/open1card21dotclosecardStar.shex + shape: http://a.example/S + dataURL: a2b2.ttl + node: x + + - name: open1card21dotclosecardStar_fail-a3b2 + status: nonconformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .{2}; :b . )* } on { :a \"1\", \"2\", \"3\" ; :b \"1\", \"2\" }" + approval: Approved + schemaURL: ../schemas/open1card21dotclosecardStar.shex + shape: http://a.example/S + dataURL: a3b2.ttl + node: x + + - name: open1card121cardOptclosecardStar_pass-a2 + status: conformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .{1,2}; :b .? )* } on { :a \"1\", \"2\" } -- one :a per iteration (two iterations), not both in the first" + approval: Approved + schemaURL: ../schemas/open1card121cardOptclosecardStar.shex + shape: http://a.example/S + dataURL: a2.ttl + node: x + + - name: open1dot1cardOptclosecard12_pass-a1 + status: conformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .; :b .? ){1,2} } on { :a \"1\" }" + approval: Approved + schemaURL: ../schemas/open1dot1cardOptclosecard12.shex + shape: http://a.example/S + dataURL: a1.ttl + node: x + + - name: open1dot1cardOptclosecard12_pass-a2b1 + status: conformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .; :b .? ){1,2} } on { :a \"1\", \"2\" ; :b \"1\" }" + approval: Approved + schemaURL: ../schemas/open1dot1cardOptclosecard12.shex + shape: http://a.example/S + dataURL: a2b1.ttl + node: x + + - name: open1dot1cardOptclosecard12_pass-a2b2 + status: conformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .; :b .? ){1,2} } on { :a \"1\", \"2\" ; :b \"1\", \"2\" }" + approval: Approved + schemaURL: ../schemas/open1dot1cardOptclosecard12.shex + shape: http://a.example/S + dataURL: a2b2.ttl + node: x + + - name: open1dot1cardOptclosecard12_fail-a1b2 + status: nonconformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .; :b .? ){1,2} } on { :a \"1\" ; :b \"1\", \"2\" }" + approval: Approved + schemaURL: ../schemas/open1dot1cardOptclosecard12.shex + shape: http://a.example/S + dataURL: a1b2.ttl + node: x + + - name: open1dot1cardOptclosecard12_fail-a3 + status: nonconformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .; :b .? ){1,2} } on { :a \"1\", \"2\", \"3\" }" + approval: Approved + schemaURL: ../schemas/open1dot1cardOptclosecard12.shex + shape: http://a.example/S + dataURL: a3.ttl + node: x + + - name: open1dot1cardOptclosecard12_fail-b1 + status: nonconformant + trait: [EachOf, NonDotCardinality, DotCardinality] + comment: " { ( :a .; :b .? ){1,2} } on { :d \"1\" -- no :a }" + approval: Approved + schemaURL: ../schemas/open1dot1cardOptclosecard12.shex + shape: http://a.example/S + dataURL: d1.ttl + node: x + + - name: openopen2Eachdotclosecard0c1dotclosecardStarc1dot_pass-d1a1 + status: conformant + trait: [EachOf, NonDotCardinality] + comment: " { ( ( :b .; :c . ){0}; :d . )*; :a . } on { :d \"1\" ; :a \"1\" }" + approval: Approved + schemaURL: ../schemas/openopen2Eachdotclosecard0c1dotclosecardStarc1dot.shex + shape: http://a.example/S + dataURL: d1a1.ttl + node: x + + - name: openopen2Eachdotclosecard0c1dotclosecardStarc1dot_pass-a1 + status: conformant + trait: [EachOf, NonDotCardinality] + comment: " { ( ( :b .; :c . ){0}; :d . )*; :a . } on { :a \"1\" }" + approval: Approved + schemaURL: ../schemas/openopen2Eachdotclosecard0c1dotclosecardStarc1dot.shex + shape: http://a.example/S + dataURL: a1.ttl + node: x + + - name: openopen2Eachdotclosecard0c1dotclosecardStarc1dot_fail-b1c1d1 + status: nonconformant + trait: [EachOf, NonDotCardinality] + comment: " { ( ( :b .; :c . ){0}; :d . )*; :a . } on { :b \"1\" ; :c \"1\" ; :d \"1\" }" + approval: Approved + schemaURL: ../schemas/openopen2Eachdotclosecard0c1dotclosecardStarc1dot.shex + shape: http://a.example/S + dataURL: b1c1d1.ttl + node: x + + - name: openopen2Eachdotclosecard0c1dotclosecardStarc1dot_fail-b1c1d1a1 + status: nonconformant + trait: [EachOf, NonDotCardinality] + comment: " { ( ( :b .; :c . ){0}; :d . )*; :a . } on { :b \"1\" ; :c \"1\" ; :d \"1\" ; :a \"1\" }" + approval: Approved + schemaURL: ../schemas/openopen2Eachdotclosecard0c1dotclosecardStarc1dot.shex + shape: http://a.example/S + dataURL: b1c1d1a1.ttl + node: x + + - name: openopen2EachdotclosecardOptc1dotclosecardStarc1dot_pass-a1 + status: conformant + trait: [EachOf, NonDotCardinality] + comment: " { ( ( :b .; :c . )?; :d . )*; :a . } on { :a \"1\" }" + approval: Approved + schemaURL: ../schemas/openopen2EachdotclosecardOptc1dotclosecardStarc1dot.shex + shape: http://a.example/S + dataURL: a1.ttl + node: x + + - name: openopen2EachdotclosecardOptc1dotclosecardStarc1dot_pass-d1a1 + status: conformant + trait: [EachOf, NonDotCardinality] + comment: " { ( ( :b .; :c . )?; :d . )*; :a . } on { :d \"1\" ; :a \"1\" }" + approval: Approved + schemaURL: ../schemas/openopen2EachdotclosecardOptc1dotclosecardStarc1dot.shex + shape: http://a.example/S + dataURL: d1a1.ttl + node: x + + - name: openopen2EachdotclosecardOptc1dotclosecardStarc1dot_pass-b1c1d1a1 + status: conformant + trait: [EachOf, NonDotCardinality] + comment: " { ( ( :b .; :c . )?; :d . )*; :a . } on { :b \"1\" ; :c \"1\" ; :d \"1\" ; :a \"1\" }" + approval: Approved + schemaURL: ../schemas/openopen2EachdotclosecardOptc1dotclosecardStarc1dot.shex + shape: http://a.example/S + dataURL: b1c1d1a1.ttl + node: x + + - name: openopen2EachdotclosecardOptc1dotclosecardStarc1dot_fail-d1 + status: nonconformant + trait: [EachOf, NonDotCardinality] + comment: " { ( ( :b .; :c . )?; :d . )*; :a . } on { :d \"1\" }" + approval: Approved + schemaURL: ../schemas/openopen2EachdotclosecardOptc1dotclosecardStarc1dot.shex + shape: http://a.example/S + dataURL: d1.ttl + node: x + + - name: openopen2EachdotclosecardOptc1dotclosecardStarc1dot_fail-b1d1a1 + status: nonconformant + trait: [EachOf, NonDotCardinality] + comment: " { ( ( :b .; :c . )?; :d . )*; :a . } on { :b \"1\" ; :d \"1\" ; :a \"1\" }" + approval: Approved + schemaURL: ../schemas/openopen2EachdotclosecardOptc1dotclosecardStarc1dot.shex + shape: http://a.example/S + dataURL: b1d1a1.ttl + node: x + + - name: open2OnecardStarclosecardStar_pass-astr1 + status: conformant + trait: [OneOf, NonDotCardinality, DotCardinality, Datatype] + comment: " { ( :a xsd:integer* | :a xsd:string* )* } on { :a \"final\" }" + approval: Approved + schemaURL: ../schemas/open2OnecardStarclosecardStar.shex + shape: http://a.example/S + dataURL: astr1.ttl + node: x + + - name: open2OnecardStarclosecardStar_pass-astr1aint1 + status: conformant + trait: [OneOf, NonDotCardinality, DotCardinality, Datatype] + comment: " { ( :a xsd:integer* | :a xsd:string* )* } on { :a \"final\", 1 }" + approval: Approved + schemaURL: ../schemas/open2OnecardStarclosecardStar.shex + shape: http://a.example/S + dataURL: astr1aint1.ttl + node: x + + - name: open2OnecardStarclosecardStar_pass-c1 + status: conformant + trait: [OneOf, NonDotCardinality, DotCardinality, Datatype] + comment: " { ( :a xsd:integer* | :a xsd:string* )* } on { :c \"1\" }" + approval: Approved + schemaURL: ../schemas/open2OnecardStarclosecardStar.shex + shape: http://a.example/S + dataURL: c1.ttl + node: x + + - name: open2OnecardStarclosecardStar_fail-aI1 + status: nonconformant + trait: [OneOf, NonDotCardinality, DotCardinality, Datatype] + comment: " { ( :a xsd:integer* | :a xsd:string* )* } on { :a :o }" + approval: Approved + schemaURL: ../schemas/open2OnecardStarclosecardStar.shex + shape: http://a.example/S + dataURL: aI1.ttl + node: x + + ### } non-dot cardinality + ## } cardinality + + ## shape reference + ## shape reference { + - name: "1dotRef1_referent,referrer" + status: conformant + trait: [ShapeReference] + comment: " in { \"X\" . } as in { @ } { . }" + approval: Approved + schemaURL: ../schemas/1dotRef1.shex + shape: http://a.example/S1 + dataURL: In2_Ip2_LX.In1_Ip1_In2.ttl + node: http://a.example/n1 + + - name: "1dotRef1_referrer,referent" + status: conformant + trait: [ShapeReference] + comment: " in { . \"X\" } as in { @ } { . }" + approval: Approved + schemaURL: ../schemas/1dotRef1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1dotRef1_missingReferent" + status: nonconformant + trait: [ShapeReference] + comment: " in { } as in { @ } { . }" + approval: Approved + schemaURL: ../schemas/1dotRef1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.ttl + node: http://a.example/n1 + + - name: "1dotRef1_selfReference" + status: conformant + trait: [ShapeReference] + comment: " in { . \"X\" } as in { @ } { . }" + approval: Approved + schemaURL: ../schemas/1dotRef1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In1.In1_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1dotRef1_missingSelfReference" + status: nonconformant + trait: [ShapeReference] + comment: " in { . \"X\" } as in { @ } { . }" + approval: Approved + schemaURL: ../schemas/1dotRef1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In1.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1dotRef1_overReferrer" + status: nonconformant + trait: [ShapeReference] + comment: " in { , . \"X\" } as in { @ } { . }" + approval: Approved + schemaURL: ../schemas/1dotRef1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In1_Ip1_In3.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1dotRef1_overReferrer,overReferent" + status: nonconformant + trait: [ShapeReference] + comment: " in { , . \"X\" . \"X\" } as in { @ } { . }" + approval: Approved + schemaURL: ../schemas/1dotRef1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In1_Ip1_In3.In2_Ip2_LX.In3_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1dotRef1_overMatchesReferent" + status: conformant + trait: [ShapeReference] + comment: " in { . \"X\" . \"X\" } as in { @ } { . }" + approval: Approved + schemaURL: ../schemas/1dotRef1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip2_LX.In3_Ip1_LX.ttl + node: http://a.example/n1 + + # !../schemas/1dotRefLNex1.shex + # !../schemas/1dotRefSpaceLNex1.shex [1dotRefLNex1.shex] + # !../schemas/1dotRefNS1.shex + # !../schemas/1dotRefSpaceNS1.shex [1dotRefNS1.shex] + - name: "1refbnode1_pass" + status: conformant + trait: [ShapeReference] + comment: " { @_:S2 } _:S2 { . } on { . \"X\" }" + approval: Approved + schemaURL: ../schemas/1refbnode1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1refbnode1_fail-g1-arc" + status: nonconformant + trait: [ShapeReference] + comment: " { @_:S2 } _:S2 { . } on { . \"X\" }" + approval: Approved + schemaURL: ../schemas/1refbnode1.shex + shape: http://a.example/S1 + dataURL: In1_Ip2_In2.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1refbnode1_fail-g2-arc" + status: nonconformant + trait: [ShapeReference] + comment: " { @_:S2 } _:S2 { . } on { . \"X\" }" + approval: Approved + schemaURL: ../schemas/1refbnode1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip1_LX.ttl + node: http://a.example/n1 + + # !../schemas/1refbnode_with_leading_digit1.shex + # !../schemas/1refbnode_with_leading_underscore1.shex + # !../schemas/1refbnode_with_spanning_PN_CHARS1.shex + # !../schemas/1refbnode_with_spanning_PN_CHARS_BASE1.shex + - name: "3circRefS123" + status: conformant + trait: [Import] + comment: " { ., @? } { @ } { @ } on { \"X\" ; . . . \"X\" }" + approval: Approved + schemaURL: ../schemas/3circRefS123.shex + shape: http://a.example/S1 + dataURL: "3circRefPlus1_pass-open.ttl" + node: http://a.example/n1 + + - name: "3circRefPlus1_pass-open" + status: conformant + trait: [ShapeReference, EachOf] + comment: " { ., @? } { @ } { @ } { . } on { \"X\" ; . . . \"X\" }" + approval: Approved + schemaURL: ../schemas/3circRefPlus1.shex + shape: http://a.example/S1 + dataURL: "3circRefPlus1_pass-open.ttl" + node: http://a.example/n1 + + - name: "3circRefPlus1_pass-recursiveData" + status: conformant + trait: [ShapeReference, EachOf, RecursiveData] + comment: " { ., @? } { @ } { @ } { . } on { \"X\" ; . . }" + approval: Approved + schemaURL: ../schemas/3circRefPlus1.shex + shape: http://a.example/S1 + dataURL: "3circRefPlus1_pass-recursiveData.ttl" + node: http://a.example/n1 + + - name: "1iriRef1_pass-iri" + status: conformant + trait: [ShapeReference, NodeKind] + comment: " in { . \"X\" } as in { IRI @ } { . }" + approval: Approved + schemaURL: ../schemas/1iriRef1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1iriRef1_fail-bnode" + status: nonconformant + trait: [ShapeReference, NodeKind] + comment: " in { _:n1 . _:n1 \"X\" } as in { IRI @ } { . }" + approval: Approved + schemaURL: ../schemas/1iriRef1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_Bn2.Bn2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1bnodeRef1_fail-iri" + status: nonconformant + trait: [ShapeReference, NodeKind] + comment: " in { . \"X\" } as in { BNODE @ } { . }" + approval: Approved + schemaURL: ../schemas/1bnodeRef1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1bnodeRef1_pass-bnode" + status: conformant + trait: [ShapeReference, NodeKind] + comment: " in { _:n1 . _:n1 \"X\" } as in { BNODE @ } { . }" + approval: Approved + schemaURL: ../schemas/1bnodeRef1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_Bn2.Bn2_Ip2_LX.ttl + node: http://a.example/n1 + + ## } shape reference + + ## inline + ## inline { + - name: "1dotInline1_referrer,referent" + status: conformant + trait: [ShapeReference] + comment: " in { . \"X\" } as in { { . } }" + approval: Approved + schemaURL: ../schemas/1dotInline1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1dotInline1_missingReferent" + status: nonconformant + trait: [ShapeReference] + comment: " in { } as in { { . } }" + approval: Approved + schemaURL: ../schemas/1dotInline1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.ttl + node: http://a.example/n1 + + - name: "1dotInline1_selfReference" + status: conformant + trait: [ShapeReference] + comment: " in { . \"X\" } as in { { . } }" + approval: Approved + schemaURL: ../schemas/1dotInline1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In1.In1_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1dotInline1_missingSelfReference" + status: nonconformant + trait: [ShapeReference] + comment: " in { . \"X\" } as in { { . } }" + approval: Approved + schemaURL: ../schemas/1dotInline1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In1.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1dotInline1_overReferrer" + status: nonconformant + trait: [ShapeReference] + comment: " in { , . \"X\" } as in { { . } }" + approval: Approved + schemaURL: ../schemas/1dotInline1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In1_Ip1_In3.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1dotInline1_overReferrer,overReferent" + status: nonconformant + trait: [ShapeReference] + comment: " { { . } } on { , . \"X\" . \"X\" }" + approval: Approved + schemaURL: ../schemas/1dotInline1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In1_Ip1_In3.In2_Ip2_LX.In3_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1dotInline1_overMatchesReferent" + status: conformant + trait: [ShapeReference] + comment: " in { . \"X\" . \"X\" } as in { { . } }" + approval: Approved + schemaURL: ../schemas/1dotInline1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip2_LX.In3_Ip1_LX.ttl + node: http://a.example/n1 + + ## } inline + + ## term equivalence + ### iri equivalence + ## term equivalence { + ### iri equivalence { + - name: "1val1IRIREF_pass" + status: conformant + trait: [IriEquivalence] + comment: " { [] } on { }" + approval: Approved + schemaURL: ../schemas/1val1IRIREF.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + # { [] } + - name: "1val1IRIREF_v2" + status: nonconformant + trait: [IriEquivalence] + comment: " { [] } on { }" + approval: Approved + schemaURL: ../schemas/1val1IRIREF.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv2.ttl + node: http://a.example/s1 + + - name: "1val1IRIREF_v1v2" + status: nonconformant + trait: [IriEquivalence] + comment: " { [] } on { , }" + approval: Approved + schemaURL: ../schemas/1val1IRIREF.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1,Iv2.ttl + node: http://a.example/s1 + + ### } iri equivalence + + ### literal equivalence + #### lexical form + ### literal equivalence { + #### lexical form { + - name: "1val1STRING_LITERAL1_pass" + status: conformant + trait: [NumericEquivalence] + comment: " { ['STRING_LITERAL1'] } on { 'STRING_LITERAL1' }" + approval: Approved + schemaURL: ../schemas/1val1STRING_LITERAL1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1.ttl + node: http://a.example/s1 + + - name: "1val1STRING_LITERAL1_fail" + status: nonconformant + trait: [NumericEquivalence] + comment: " { ['STRING_LITERAL1'] } on { 'STRING_LITERAL1999' }" + approval: Approved + schemaURL: ../schemas/1val1STRING_LITERAL1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1999.ttl + node: http://a.example/s1 + + - name: "1val1STRING_LITERAL1_fail-Iv" + status: nonconformant + trait: [ValueSet] + comment: " { ['STRING_LITERAL1'] } on { }" + approval: Proposed + schemaURL: ../schemas/1val1STRING_LITERAL1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv.ttl + node: http://a.example/s1 + + - name: "1val1STRING_LITERAL1_with_all_controls_pass" + status: conformant + trait: [NumericEquivalence] + comment: " { ['^@^A...^_'] } on { '^@^A...^_' }" + approval: Approved + schemaURL: ../schemas/1val1STRING_LITERAL1_with_all_controls.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_all_controls.ttl + node: http://a.example/s1 + + - name: "1val1STRING_LITERAL1_with_all_controls_fail" + status: nonconformant + trait: [NumericEquivalence] + comment: " { ['^@^A...^_'] } on { '^@^A...^_999' }" + approval: Approved + schemaURL: ../schemas/1val1STRING_LITERAL1_with_all_controls.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_all_controls999.ttl + node: http://a.example/s1 + + - name: "1val1STRING_LITERAL1_with_all_punctuation_pass" + status: conformant + trait: [NumericEquivalence] + comment: " { [' !\"#...'] } on { ' !\"#...' }" + approval: Approved + schemaURL: ../schemas/1val1STRING_LITERAL1_with_all_punctuation.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_all_punctuation.ttl + node: http://a.example/s1 + + - name: "1val1STRING_LITERAL1_with_all_punctuation_fail" + status: nonconformant + trait: [NumericEquivalence] + comment: " { [' !\"#...'] } on { ' !\"#...999' }" + approval: Approved + schemaURL: ../schemas/1val1STRING_LITERAL1_with_all_punctuation.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_all_punctuation999.ttl + node: http://a.example/s1 + + - name: "1val1STRING_LITERAL1_with_ascii_boundaries_pass" + status: conformant + trait: [NumericEquivalence] + comment: " { ['^@^I^K^L^N&([]^?'] } on { '^@^I^K^L^N&([]^?' }" + approval: Approved + schemaURL: ../schemas/1val1STRING_LITERAL1_with_ascii_boundaries.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_ascii_boundaries.ttl + node: http://a.example/s1 + + - name: "1val1STRING_LITERAL1_with_ascii_boundaries_fail" + status: nonconformant + trait: [NumericEquivalence] + comment: " { ['^@^I^K^L^N&([]^?'] } on { '^@^I^K^L^N&([]^?999' }" + approval: Approved + schemaURL: ../schemas/1val1STRING_LITERAL1_with_ascii_boundaries.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_ascii_boundaries999.ttl + node: http://a.example/s1 + + - name: "1val1STRING_LITERAL1_with_UTF8_boundaries_pass" + status: conformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { ['€...􏿽'] } on { '€...􏿽' }" + approval: Approved + schemaURL: ../schemas/1val1STRING_LITERAL1_with_UTF8_boundaries.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_UTF8_boundaries.ttl + node: http://a.example/s1 + + - name: "1val1STRING_LITERAL1_with_UTF8_boundaries_fail" + status: nonconformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { ['€...􏿽'] } on { '€...􏿽999' }" + approval: Approved + schemaURL: ../schemas/1val1STRING_LITERAL1_with_UTF8_boundaries.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_UTF8_boundaries999.ttl + node: http://a.example/s1 + + - name: "1val1STRING_LITERAL1_with_ECHAR_escapes_pass" + status: conformant + trait: [NumericEquivalence] + comment: " { ['\\t\\b\\n\\r\\f'] } on { '\\t\\b\\n\\r\\f' }" + approval: Approved + schemaURL: ../schemas/1val1STRING_LITERAL1_with_ECHAR_escapes.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L_with_ECHAR_escapes.ttl + node: http://a.example/s1 + + - name: "1val1STRING_LITERAL1_with_ECHAR_escapes_fail" + status: nonconformant + trait: [NumericEquivalence] + comment: " { ['\\t\\b\\n\\r\\f'] } on { '\\t\\b\\n\\r\\f999' }" + approval: Approved + schemaURL: ../schemas/1val1STRING_LITERAL1_with_ECHAR_escapes.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L_with_ECHAR_escapes999.ttl + node: http://a.example/s1 + + #### } lexical form + + #### numeric equivalence + #### numeric equivalence { + - name: "1val1INTEGER_pass" + status: conformant + trait: [NumericEquivalence] + comment: " { [0] } on { 0 }" + approval: Approved + schemaURL: ../schemas/1val1INTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT0.ttl + node: http://a.example/s1 + # { [0] } + - name: "1val1INTEGER_00" + status: nonconformant + trait: [NumericEquivalence] + comment: " { [0] } on { 00 }" + approval: Approved + schemaURL: ../schemas/1val1INTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT00.ttl + node: http://a.example/s1 + + - name: "1val1DECIMAL_00" + status: nonconformant + trait: [NumericEquivalence] + comment: " { [0.0] } on { .0 }" + approval: Approved + schemaURL: ../schemas/1val1DECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC_0.ttl + node: http://a.example/s1 + + - name: "1val1DECIMAL_pass" + status: conformant + trait: [NumericEquivalence] + comment: " { [0.0] } on { 0.0 }" + approval: Approved + schemaURL: ../schemas/1val1DECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC0_0.ttl + node: http://a.example/s1 + + - name: "1val1DECIMAL_Lab" + status: nonconformant + trait: [NumericEquivalence] + comment: " { [0.0] } on { 'ab' }" + approval: Approved + schemaURL: ../schemas/1val1DECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1val1INTEGER_Lab" + status: nonconformant + trait: [NumericEquivalence] + comment: " { [0] } on { 'ab' }" + approval: Approved + schemaURL: ../schemas/1val1INTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1val1DOUBLE_pass" + status: conformant + trait: [NumericEquivalence] + comment: " { [0E0] } on { 0E0 }" + approval: Approved + schemaURL: ../schemas/1val1DOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL0E0.ttl + node: http://a.example/s1 + # { [0E0] } + - name: "1val1DOUBLE_0_0e0" + status: nonconformant + trait: [NumericEquivalence] + comment: " { [0E0] } on { 0e0.0 }" + approval: Approved + schemaURL: ../schemas/1val1DOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL0_0e0.ttl + node: http://a.example/s1 + # 1val1DOUBLElowercase_... same as 1val1DOUBLE + # @@ eliminate as duplicate? + - name: "1val1DOUBLElowercase_pass" + status: conformant + trait: [NumericEquivalence] + comment: " { [0e0] } on { 0e0 }" + approval: Approved + schemaURL: ../schemas/1val1DOUBLElowercase.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL0e0lowercase.ttl + node: http://a.example/s1 + # { [0e0] } + - name: "1val1DOUBLElowercase_fail-0E0" + status: nonconformant + trait: [NumericEquivalence] + comment: " { [0e0] } on { 0E0 }" + approval: Approved + schemaURL: ../schemas/1val1DOUBLElowercase.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL0E0.ttl + node: http://a.example/s1 + + - name: "1val1DOUBLElowercase_0_0e0" + status: nonconformant + trait: [NumericEquivalence] + comment: " { [0e0] } on { 0e0.0 }" + approval: Approved + schemaURL: ../schemas/1val1DOUBLElowercase.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL0_0e0.ttl + node: http://a.example/s1 + + #### } numeric equivalence + + #### language tag equivalence + #### language tag equivalence { + - name: "1val1LANGTAG_pass" + status: conformant + trait: [LanguageTagEquivalence] + comment: " { ['ab'@en-fr] } on { 'ab'@en-fr }" + approval: Approved + schemaURL: ../schemas/1val1LANGTAG.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LabLTen-fr.ttl + node: http://a.example/s1 + # { ['ab'@en-fr] } + - name: "1val1LANGTAG_Lab" + status: nonconformant + trait: [LanguageTagEquivalence] + comment: " { ['ab'@en-fr] } on { 'ab' }" + approval: Approved + schemaURL: ../schemas/1val1LANGTAG.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1val1LANGTAG_LabLTen" + status: nonconformant + trait: [LanguageTagEquivalence] + comment: " { ['ab'@en-fr] } on { 'ab'@en }" + approval: Approved + schemaURL: ../schemas/1val1LANGTAG.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LabLTen.ttl + node: http://a.example/s1 + + - name: "1val1LANGTAG_LabLTen-fr-jura" + status: nonconformant + trait: [LanguageTagEquivalence] + comment: " { ['ab'@en-fr] } on { 'ab'@en-fr-jura }" + approval: Approved + schemaURL: ../schemas/1val1LANGTAG.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LabLTen-fr-jura.ttl + node: http://a.example/s1 + + - name: "1val1LANGTAG_LaLTen-fr" + status: nonconformant + trait: [LanguageTagEquivalence] + comment: " { ['ab'@en-fr] } on { 'a'@en-fr }" + approval: Approved + schemaURL: ../schemas/1val1LANGTAG.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LaLTen-fr.ttl + node: http://a.example/s1 + + #### } language tag equivalence + + #### datatyped literal equivalence + #### datatyped literal equivalence { + - name: "1val1IRIREFDatatype_pass" + status: conformant + trait: [DatatypedLiteralEquivalence] + comment: " { ['ab'^^my:bloodType] } on { 'ab'^^my:bloodType }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFDatatype.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LabDTbloodType.ttl + node: http://a.example/s1 + # { ['ab'^^my:bloodType] } + - name: "1val1IRIREFDatatype_Lab" + status: nonconformant + trait: [DatatypedLiteralEquivalence] + comment: " { ['ab'^^my:bloodType] } on { 'ab' }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFDatatype.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1val1IRIREFDatatype_LabDTbloodType999" + status: nonconformant + trait: [DatatypedLiteralEquivalence] + comment: " { ['ab'^^my:bloodType] } on { 'ab'^^my:bloodType999 }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFDatatype.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LabDTbloodType999.ttl + node: http://a.example/s1 + + - name: "1val1IRIREFDatatype_LaDTbloodType" + status: nonconformant + trait: [DatatypedLiteralEquivalence] + comment: " { ['ab'^^my:bloodType] } on { 'a'^^my:bloodType }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFDatatype.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LaDTbloodType.ttl + node: http://a.example/s1 + + #### } datatyped literal equivalence + # 1val1LNDatatype_... same as 1val1IRIREFDatatype except prefixes + + #### boolean equivalence + #### boolean equivalence { + - name: "1val1true_pass" + status: conformant + trait: [BooleanEquivalence] + comment: " { [true] } on { true }" + approval: Approved + schemaURL: ../schemas/1val1true.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_true.ttl + node: http://a.example/s1 + # { [true] } + - name: "1val1true_false" + status: nonconformant + trait: [BooleanEquivalence] + comment: " { [true] } on { false }" + approval: Approved + schemaURL: ../schemas/1val1true.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_false.ttl + node: http://a.example/s1 + + - name: "1val1true_ab" + status: nonconformant + trait: [BooleanEquivalence] + comment: " { [true] } on { 'ab' }" + approval: Approved + schemaURL: ../schemas/1val1true.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1val1false_pass" + status: conformant + trait: [BooleanEquivalence] + comment: " { [false] } on { true }" + approval: Approved + schemaURL: ../schemas/1val1false.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_false.ttl + node: http://a.example/s1 + # { [false] } + - name: "1val1false_true" + status: nonconformant + trait: [BooleanEquivalence] + comment: " { [false] } on { false }" + approval: Approved + schemaURL: ../schemas/1val1false.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_true.ttl + node: http://a.example/s1 + + - name: "1val1false_ab" + status: nonconformant + trait: [BooleanEquivalence] + comment: " { [false] } on { 'ab' }" + approval: Approved + schemaURL: ../schemas/1val1false.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + #### } boolean equivalence + ### } literal equivalence + ## } term equivalence + + ## facet + ### length + ## facets { + ### length { + - name: "1datatypeLength_fail-missing" + status: nonconformant + trait: [LengthFacet] + comment: " { xs:integer LENGTH 5 } on in { 'ab' }" + approval: Approved + schemaURL: ../schemas/1datatypeLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1datatypeLength_fail-wrongDatatype" + status: nonconformant + trait: [LengthFacet] + comment: " { xs:integer LENGTH 5 } on in { 1.234 }" + approval: Approved + schemaURL: ../schemas/1datatypeLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC1_234.ttl + node: http://a.example/s1 + + - name: "1datatypeLength_fail-short" + status: nonconformant + trait: [LengthFacet] + comment: " { xs:integer LENGTH 5 } on in { 1234 }" + approval: Approved + schemaURL: ../schemas/1datatypeLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT1234.ttl + node: http://a.example/s1 + + - name: "1datatypeLength_pass" + status: conformant + trait: [LengthFacet] + comment: " { xs:integer LENGTH 5 } on in { 12345 }" + approval: Approved + schemaURL: ../schemas/1datatypeLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT12345.ttl + node: http://a.example/s1 + + - name: "1datatypeLength_fail-long" + status: nonconformant + trait: [LengthFacet] + comment: " { xs:integer LENGTH 5 } on in { 123456 }" + approval: Approved + schemaURL: ../schemas/1datatypeLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT123456.ttl + node: http://a.example/s1 + + ### } length + ### fractionDigits + ### fractionDigits { + - name: "1literalFractiondigits_pass-decimal-short" + status: conformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 5 } / { 1.2345 }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC1_2345.ttl + node: http://a.example/s1 + # <#1literalFractiondigitsxsd-integer_fail-decimal-short> # for numericFacet ::= (numericFacet | numericLength) INTEGER (numericLiteral | string '^^' datatype ) + + # for # for numericFacet ::= (numericFacet | numericLength) INTEGER (numericLiteral | string '^^' datatype ) + # <#1literalFractiondigitsxsd-integer_fail-decimal-short> a sht:ValidationFailure ; + # mf:name "1literalFractiondigitsxsd-integer_fail-decimal-short" ; + # rdfs:comment " { LITERAL FRACTIONDIGITS 5 } / { 1.2345 }" ; + # mf:status mf:Approved ; + # mf:action [ + # sht:schema <../schemas/1literalFractiondigitsxsd-integer.shex.bad> ; + # sht:shape ; + # sht:data ; + # sht:focus + # ] ; + # . + - name: "1literalFractiondigits_pass-decimal-equal" + status: conformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 5 } / { 1.23456 }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC1_23456.ttl + node: http://a.example/s1 + # <#1literalFractiondigitsxsd-integer_pass-decimal-equal> # for numericFacet ::= (numericFacet | numericLength) INTEGER (numericLiteral | string '^^' datatype ) + + # # for numericFacet ::= (numericFacet | numericLength) INTEGER (numericLiteral | string '^^' datatype ) + # <#1literalFractiondigitsxsd-integer_pass-decimal-equal> a sht:ValidationTest ; + # mf:name "1literalFractiondigitsxsd-integer_pass-decimal-equal" ; + # rdfs:comment " { LITERAL FRACTIONDIGITS \"5\"^^ } / { 1.23456 }" ; + # mf:status mf:Approved ; + # mf:action [ + # sht:schema <../schemas/1literalFractiondigitsxsd-integer.shex.bad> ; + # sht:shape ; + # sht:data ; + # sht:focus + # ] ; + # mf:result <1literalFractiondigits_pass-decimal-equal.val> + # . + - name: "1literalFractiondigits_fail-decimal-long" + status: nonconformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 5 } / { 1.234567 }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC1_234567.ttl + node: http://a.example/s1 + + - name: "1literalFractiondigits_pass-decimal-equalLead" + status: conformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 4 } / { 01.2345 }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits4.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC01_2345.ttl + node: http://a.example/s1 + + - name: "1literalFractiondigits_fail-decimal-longLead" + status: nonconformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 4 } / { 01.23456 }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits4.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC01_23456.ttl + node: http://a.example/s1 + + - name: "1literalFractiondigits_pass-decimal-equalTrail" + status: conformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 4 } / { 1.23450 }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits4.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC1_23450.ttl + node: http://a.example/s1 + + - name: "1literalFractiondigits_fail-decimal-longTrail" + status: nonconformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 4 } / { 1.234560 }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits4.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC1_234560.ttl + node: http://a.example/s1 + + - name: "1literalFractiondigits_pass-decimal-equalLeadTrail" + status: conformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 4 } / { 01.23450 }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits4.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC01_23450.ttl + node: http://a.example/s1 + + - name: "1literalFractiondigits_fail-decimal-longLeadTrail" + status: nonconformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 4 } / { 01.234560 }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits4.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC1_234560.ttl + node: http://a.example/s1 + + # !! Note: xs:integer restricted to fractionDigits="0" + - name: "1literalFractiondigits_pass-integer-short" + status: conformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 5 } / { 12345 }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT12345.ttl + node: http://a.example/s1 + + - name: "1literalFractiondigits_pass-xsd_integer-short" + status: conformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 5 } / { \"12345\"^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_xsd-integer12345.ttl + node: http://a.example/s1 + + # Note: fractionDigits restricted to decimal-derived datatypes. + - name: "1literalFractiondigits_fail-float-equal" + status: nonconformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 5 } / { \"1.23456\"^^xsd:float }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT1_23456.ttl + node: http://a.example/s1 + + - name: "1literalFractiondigits_fail-double-equal" + status: nonconformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 5 } / { 4.5e0 }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_5e0.ttl + node: http://a.example/s1 + + - name: "1literalFractiondigits_fail-malformedxsd_decimal-1_23ab" + status: nonconformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 5 } / { \"1.23ab\"^^xsd:decimal }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_malformedxsd-decimal1_23ab.ttl + node: http://a.example/s1 + + - name: "1literalFractiondigits_fail-malformedxsd_decimal-1_2345ab" + status: nonconformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 5 } / { \"1.2345ab\"^^xsd:decimal }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_malformedxsd-decimal1_2345ab.ttl + node: http://a.example/s1 + + - name: "1literalFractiondigits_fail-malformedxsd_integer-1_2345" + status: nonconformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 5 } / { \"1.2345\"^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_malformedxsd-integer1_2345.ttl + node: http://a.example/s1 + + - name: "1literalFractiondigits_fail-iri" + status: nonconformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 5 } / BASE { <1.2345> }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits5.shex + shape: http://a.example/S1 + dataURL: BASE_Is1_Ip1_I12345.ttl + node: http://a.example/s1 + + - name: "1literalFractiondigits_fail-bnode" + status: nonconformant + trait: [FractionDigitsFacet] + comment: " { LITERAL FRACTIONDIGITS 5 } / BASE { _:12345 }" + approval: Approved + schemaURL: ../schemas/1literalFractiondigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_B12345.ttl + node: http://a.example/s1 + + ### } fractionDigits + ### totalDigits + ### totalDigits { + - name: "1literalTotaldigits_pass-decimal-short" + status: conformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { 1.234 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC1_234.ttl + node: http://a.example/s1 + # <#1literalTotaldigitsxsd-integer_fail-decimal-short> # for numericFacet ::= (numericFacet | numericLength) INTEGER (numericLiteral | string '^^' datatype ) + + # for # for numericFacet ::= (numericFacet | numericLength) INTEGER (numericLiteral | string '^^' datatype ) + # <#1literalTotaldigitsxsd-integer_fail-decimal-short> a sht:ValidationFailure ; + # mf:name "1literalTotaldigitsxsd-integer_fail-decimal-short" ; + # rdfs:comment " { LITERAL TOTALDIGITS 5 } / { 1.234 }" ; + # mf:status mf:Approved ; + # mf:action [ + # sht:schema <../schemas/1literalTotaldigitsxsd-integer.shex> ; + # sht:shape ; + # sht:data ; + # sht:focus + # ] ; + # . + - name: "1literalTotaldigits_pass-decimal-equal" + status: conformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { 1.2345 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC1_2345.ttl + node: http://a.example/s1 + # <#1literalTotaldigitsxsd-integer_pass-decimal-equal> # for numericFacet ::= (numericFacet | numericLength) INTEGER (numericLiteral | string '^^' datatype ) + + # # for numericFacet ::= (numericFacet | numericLength) INTEGER (numericLiteral | string '^^' datatype ) + # <#1literalTotaldigitsxsd-integer_pass-decimal-equal> a sht:ValidationTest ; + # mf:name "1literalTotaldigitsxsd-integer_pass-decimal-equal" ; + # rdfs:comment " { LITERAL TOTALDIGITS \"5\"^^ } / { 1.2345 }" ; + # mf:status mf:Approved ; + # mf:action [ + # sht:schema <../schemas/1literalTotaldigitsxsd-integer.shex> ; + # sht:shape ; + # sht:data ; + # sht:focus + # ] ; + # mf:result <1literalTotaldigits_pass-decimal-equal.val> + # . + - name: "1literalTotaldigits_fail-decimal-long" + status: nonconformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { 1.23456 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC1_23456.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_pass-decimal-equalLead" + status: conformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { 01.2345 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC01_2345.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_fail-decimal-longLead" + status: nonconformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { 01.23456 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC01_23456.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_pass-decimal-equalTrail" + status: conformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { 1.23450 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC1_23450.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_fail-decimal-longTrail" + status: nonconformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { 1.234560 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC1_234560.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_pass-decimal-equalLeadTrail" + status: conformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { 01.23450 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC01_23450.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_fail-decimal-longLeadTrail" + status: nonconformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { 01.234560 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC1_234560.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_pass-integer-equal" + status: conformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { 12345 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT12345.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_pass-xsd_integer-short" + status: conformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { \"1234\"^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_xsd-integer1234.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_pass-integer-equalLead" + status: conformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { 012345 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT012345.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_fail-integer-longLead" + status: nonconformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { 0123456 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT0123456.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_pass-integer-equalTrail" + status: conformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 6 } / { 123450 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits6.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT123450.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_fail-integer-longTrail" + status: nonconformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 6 } / { 1234560 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits6.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT1234560.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_pass-integer-equalLeadTrail" + status: conformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 6 } / { 0123450 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits6.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT0123450.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_fail-integer-longLeadTrail" + status: nonconformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 6 } / { 01234560 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits6.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT01234560.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_pass-byte-short" + status: conformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 2 } / { 5^^xsd:byte }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits2.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_BYT5.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_pass-byte-equal" + status: conformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 2 } / { 64^^xsd:byte }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits2.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_BYT64.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_fail-byte-long" + status: nonconformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 2 } / { 128^^xsd:byte }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits2.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_BYT128.ttl + node: http://a.example/s1 + + # Note: totalDigits restricted to decimal-derived datatypes. + - name: "1literalTotaldigits_fail-float-equal" + status: nonconformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { \"1.2345\"^^xsd:float }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT1_2345.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_fail-double-equal" + status: nonconformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { 4.5e0 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_5e0.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_fail-malformedxsd_decimal-1_23ab" + status: nonconformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { \"1.23ab\"^^xsd:decimal }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_malformedxsd-decimal1_23ab.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_fail-malformedxsd_decimal-1_2345ab" + status: nonconformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { \"1.2345ab\"^^xsd:decimal }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_malformedxsd-decimal1_2345ab.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_fail-malformedxsd_integer-1_2345" + status: nonconformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / { \"1.2345\"^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_malformedxsd-integer1_2345.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_fail-iri" + status: nonconformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / BASE { <1.2345> }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: BASE_Is1_Ip1_I12345.ttl + node: http://a.example/s1 + + - name: "1literalTotaldigits_fail-bnode" + status: nonconformant + trait: [TotalDigitsFacet] + comment: " { LITERAL TOTALDIGITS 5 } / BASE { _:12345 }" + approval: Approved + schemaURL: ../schemas/1literalTotaldigits5.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_B12345.ttl + node: http://a.example/s1 + + ### } totalDigits + ### comparators + #### manual + ### comparators { + #### manual { + - name: "1literalMinexclusiveINTEGER_fail-low" + status: nonconformant + trait: [ComparatorFacet] + comment: " { LITERAL MINEXCLUSIVE 5 } / { '4'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalMinexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1literalMinexclusiveINTEGER_pass-equal" + status: nonconformant + trait: [ComparatorFacet] + comment: " { LITERAL MINEXCLUSIVE 5 } / { '5'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalMinexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1literalMinexclusiveINTEGER_pass-high" + status: conformant + trait: [ComparatorFacet] + comment: " { LITERAL MINEXCLUSIVE 5 } / { '6'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalMinexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1literalMininclusiveINTEGER_fail-low" + status: nonconformant + trait: [ComparatorFacet] + comment: " { LITERAL MININCLUSIVE 5 } / { '4'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1literalMininclusiveINTEGER_pass-equal" + status: conformant + trait: [ComparatorFacet] + comment: " { LITERAL MININCLUSIVE 5 } / { '5'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1literalMininclusiveINTEGER_pass-high" + status: conformant + trait: [ComparatorFacet] + comment: " { LITERAL MININCLUSIVE 5 } / { '6'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1literalMaxexclusiveINTEGER_pass-low" + status: conformant + trait: [ComparatorFacet] + comment: " { LITERAL MAXEXCLUSIVE 5 } / { '4'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalMaxexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1literalMaxexclusiveINTEGER_fail-equal" + status: nonconformant + trait: [ComparatorFacet] + comment: " { LITERAL MAXEXCLUSIVE 5 } / { '5'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalMaxexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1literalMaxexclusiveINTEGER_fail-high" + status: nonconformant + trait: [ComparatorFacet] + comment: " { LITERAL MAXEXCLUSIVE 5 } / { '6'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalMaxexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1literalMaxinclusiveINTEGER_pass-low" + status: conformant + trait: [ComparatorFacet] + comment: " { LITERAL MAXINCLUSIVE 5 } / { '4'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalMaxinclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1literalMaxinclusiveINTEGER_pass-equal" + status: conformant + trait: [ComparatorFacet] + comment: " { LITERAL MAXINCLUSIVE 5 } / { '5'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalMaxinclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1literalMaxinclusiveINTEGER_fail-high" + status: nonconformant + trait: [ComparatorFacet] + comment: " { LITERAL MAXINCLUSIVE 5 } / { '6'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1literalMaxinclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveINTEGER_fail-low" + status: nonconformant + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 5 } / { '4.9'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_9.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveINTEGER_pass-equalLead" + status: conformant + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 5 } / { '05'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT05.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveINTEGER_pass-equalTrail" + status: conformant + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 5 } / { '5.0'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_0.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveINTEGER_pass-high" + status: conformant + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 5 } / { '5.1'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_1.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGER_fail-low" + status: nonconformant + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5 } / { '4'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGER_pass-equal" + status: conformant + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5 } / { '5'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGER_pass-equalLead" + status: conformant + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5 } / { '05'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT05.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGER_pass-high" + status: conformant + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5 } / { '6'^^xsd:integer }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveINTEGERLead_pass-equal" + status: conformant + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 5 } / { '5'^^xsd:float }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveINTEGERLead.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5.ttl + node: http://a.example/s1 + + #### } manual + #### generated + #### generated { + - name: "1integerMininclusiveINTEGER_fail-integer-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J6" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGER_pass-integer-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K6" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGER_pass-integer-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N6" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGERLead_fail-integer-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J7" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 05 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGERLead.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGERLead_pass-integer-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K7" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 05 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGERLead.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGERLead_pass-integer-equalLead" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.L7" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 05 } / { 05 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGERLead.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT05.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGERLead_pass-integer-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N7" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 05 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGERLead.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDECIMAL_pass-integer-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K8" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 4.5 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDECIMALLeadTrail_fail-integer-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J9" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 04.50 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDECIMALLeadTrail_pass-integer-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K9" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 04.50 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDECIMALLeadTrail_pass-integer-equalLead" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.L9" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 04.50 } / { 05 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT05.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDECIMALLeadTrail_pass-integer-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N9" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 04.50 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDECIMALint_fail-integer-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J10" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5.0 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDECIMALint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDECIMALint_pass-integer-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K10" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5.0 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDECIMALint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDECIMALint_pass-integer-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N10" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5.0 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDECIMALint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDECIMALintLeadTrail_fail-integer-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J11" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 05.00 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDECIMALintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDECIMALintLeadTrail_pass-integer-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K11" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 05.00 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDECIMALintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDECIMALintLeadTrail_pass-integer-equalLead" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.L11" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 05.00 } / { 05 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDECIMALintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT05.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDECIMALintLeadTrail_pass-integer-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N11" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 05.00 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDECIMALintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDOUBLE_pass-integer-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K12" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 4.5e0 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDOUBLELeadTrail_fail-integer-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J13" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 04.50e0 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDOUBLELeadTrail_pass-integer-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K13" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 04.50e0 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDOUBLELeadTrail_pass-integer-equalLead" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.L13" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 04.50e0 } / { 05 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT05.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDOUBLELeadTrail_pass-integer-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N13" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 04.50e0 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDOUBLEint_pass-integer-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K14" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5.0e0 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDOUBLEint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDOUBLEintLeadTrail_fail-integer-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J15" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 05.00e0 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDOUBLEintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDOUBLEintLeadTrail_pass-integer-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K15" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 05.00e0 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDOUBLEintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDOUBLEintLeadTrail_pass-integer-equalLead" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.L15" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 05.00e0 } / { 05 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDOUBLEintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT05.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveDOUBLEintLeadTrail_pass-integer-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N15" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 05.00e0 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveDOUBLEintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGER_fail-decimal-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K16" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5 } / { 4.5 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_5.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGER_fail-float-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K17" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5 } / { '4.5'^^ }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_5.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGER_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K18" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5 } / { 4.5e0 }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_5e0.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGER_fail-dateTime-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K19" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5 } / { '2015-12-25T01:23:45Z'^^ }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DT2015-12-25T01_23_45Z.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGER_fail-string-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K20" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5 } / { 'ab'^^ }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_STRab.ttl + node: http://a.example/s1 + + - name: "1integerMininclusiveINTEGER_fail-byte-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K21" + trait: [ComparatorFacet] + comment: " { xsd:integer MININCLUSIVE 5 } / { '5'^^ }" + approval: Approved + schemaURL: ../schemas/1integerMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_BYT5.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveINTEGER_fail-decimal-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J27" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 5 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveINTEGER_pass-decimal-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N27" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 5 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveINTEGERLead_fail-decimal-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J28" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 05 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveINTEGERLead.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveINTEGERLead_pass-decimal-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N28" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 05 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveINTEGERLead.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDECIMAL_fail-decimal-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J29" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 4.5 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDECIMAL_pass-decimal-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K29" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 4.5 } / { 4.5 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_5.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDECIMAL_pass-decimal-equalLeadTrail" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.M29" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 4.5 } / { 04.50 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC04_50.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDECIMAL_pass-decimal-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N29" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 4.5 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDECIMALLeadTrail_fail-decimal-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J30" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 04.50 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDECIMALLeadTrail_pass-decimal-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K30" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 04.50 } / { 4.5 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_5.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDECIMALLeadTrail_pass-decimal-equalLeadTrail" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.M30" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 04.50 } / { 04.50 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC04_50.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDECIMALLeadTrail_pass-decimal-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N30" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 04.50 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDECIMALintLeadTrail_fail-decimal-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J32" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 05.00 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDECIMALintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDECIMALintLeadTrail_pass-decimal-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N32" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 05.00 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDECIMALintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDOUBLE_fail-decimal-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J33" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 4.5e0 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDOUBLE_pass-decimal-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K33" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 4.5e0 } / { 4.5 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_5.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDOUBLE_pass-decimal-equalLeadTrail" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.M33" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 4.5e0 } / { 04.50 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC04_50.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDOUBLELeadTrail_fail-decimal-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J34" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 04.50e0 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDOUBLELeadTrail_pass-decimal-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K34" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 04.50e0 } / { 4.5 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_5.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDOUBLELeadTrail_pass-decimal-equalLeadTrail" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.M34" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 04.50e0 } / { 04.50 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC04_50.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDOUBLELeadTrail_pass-decimal-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N34" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 04.50e0 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDOUBLEintLeadTrail_fail-decimal-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J36" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 05.00e0 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDOUBLEintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDOUBLEintLeadTrail_pass-decimal-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N36" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 05.00e0 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDOUBLEintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDECIMAL_fail-float-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K37" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 4.5 } / { '4.5'^^ }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_5.ttl + node: http://a.example/s1 + + - name: "1decimalMininclusiveDECIMAL_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K39" + trait: [ComparatorFacet] + comment: " { xsd:decimal MININCLUSIVE 4.5 } / { 4.5e0 }" + approval: Approved + schemaURL: ../schemas/1decimalMininclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_5e0.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveINTEGERLead_fail-float-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J49" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 05 } / { '4.4'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveINTEGERLead.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_4.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveINTEGERLead_pass-float-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N49" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 05 } / { '5.6'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveINTEGERLead.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_6.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDECIMAL_pass-float-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K50" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 4.5 } / { '4.5'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_5.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDECIMAL_pass-float-equalLeadTrail" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.M50" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 4.5 } / { '04.50'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT04_50.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDECIMALLeadTrail_fail-float-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J51" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 04.50 } / { '4.4'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_4.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDECIMALLeadTrail_pass-float-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K51" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 04.50 } / { '4.5'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_5.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDECIMALLeadTrail_pass-float-equalLeadTrail" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.M51" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 04.50 } / { '04.50'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT04_50.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDECIMALLeadTrail_pass-float-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N51" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 04.50 } / { '5.6'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_6.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDECIMALintLeadTrail_fail-float-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J53" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 05.00 } / { '4.4'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDECIMALintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_4.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDECIMALintLeadTrail_pass-float-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N53" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 05.00 } / { '5.6'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDECIMALintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_6.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDOUBLE_pass-float-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K54" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 4.5e0 } / { '4.5'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_5.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDOUBLE_pass-float-equalLeadTrail" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.M54" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 4.5e0 } / { '04.50'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT04_50.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDOUBLELeadTrail_fail-float-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J55" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 04.50e0 } / { '4.4'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_4.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDOUBLELeadTrail_pass-float-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K55" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 04.50e0 } / { '4.5'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_5.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDOUBLELeadTrail_pass-float-equalLeadTrail" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.M55" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 04.50e0 } / { '04.50'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT04_50.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDOUBLELeadTrail_pass-float-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N55" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 04.50e0 } / { '5.6'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_6.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDOUBLEintLeadTrail_fail-float-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J57" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 05.00e0 } / { '4.4'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDOUBLEintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_4.ttl + node: http://a.example/s1 + + - name: "1floatMininclusiveDOUBLEintLeadTrail_pass-float-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N57" + trait: [ComparatorFacet] + comment: " { xsd:float MININCLUSIVE 05.00e0 } / { '5.6'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMininclusiveDOUBLEintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_6.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveINTEGERLead_fail-double-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J70" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 05 } / { 4.4e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveINTEGERLead.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_4e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveINTEGERLead_pass-double-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N70" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 05 } / { 5.6e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveINTEGERLead.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_6e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDECIMAL_pass-double-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K71" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 4.5 } / { 4.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDECIMAL_pass-double-equalLeadTrail" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.M71" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 4.5 } / { 04.50e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL04_50e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDECIMALLeadTrail_fail-double-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J72" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 04.50 } / { 4.4e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_4e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDECIMALLeadTrail_pass-double-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K72" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 04.50 } / { 4.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDECIMALLeadTrail_pass-double-equalLeadTrail" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.M72" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 04.50 } / { 04.50e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL04_50e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDECIMALLeadTrail_pass-double-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N72" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 04.50 } / { 5.6e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_6e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDECIMALintLeadTrail_fail-double-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J74" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 05.00 } / { 4.4e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDECIMALintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_4e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDECIMALintLeadTrail_pass-double-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N74" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 05.00 } / { 5.6e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDECIMALintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_6e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDOUBLE_pass-double-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K75" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 4.5e0 } / { 4.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDOUBLE_pass-double-equalLeadTrail" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.M75" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 4.5e0 } / { 04.50e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL04_50e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDOUBLELeadTrail_fail-double-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J76" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 04.50e0 } / { 4.4e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_4e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDOUBLELeadTrail_pass-double-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.K76" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 04.50e0 } / { 4.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDOUBLELeadTrail_pass-double-equalLeadTrail" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.M76" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 04.50e0 } / { 04.50e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL04_50e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDOUBLELeadTrail_pass-double-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N76" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 04.50e0 } / { 5.6e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_6e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDOUBLEintLeadTrail_fail-double-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.J78" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 05.00e0 } / { 4.4e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDOUBLEintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_4e0.ttl + node: http://a.example/s1 + + - name: "1doubleMininclusiveDOUBLEintLeadTrail_pass-double-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinInclusive.N78" + trait: [ComparatorFacet] + comment: " { xsd:double MININCLUSIVE 05.00e0 } / { 5.6e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMininclusiveDOUBLEintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_6e0.ttl + node: http://a.example/s1 + + - name: "1integerMinexclusiveINTEGER_fail-integer-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.J6" + trait: [ComparatorFacet] + comment: " { xsd:integer MINEXCLUSIVE 5 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMinexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMinexclusiveINTEGER_fail-integer-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.K6" + trait: [ComparatorFacet] + comment: " { xsd:integer MINEXCLUSIVE 5 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMinexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMinexclusiveINTEGER_pass-integer-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.N6" + trait: [ComparatorFacet] + comment: " { xsd:integer MINEXCLUSIVE 5 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMinexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1integerMinexclusiveDECIMALint_fail-integer-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.J10" + trait: [ComparatorFacet] + comment: " { xsd:integer MINEXCLUSIVE 5.0 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMinexclusiveDECIMALint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMinexclusiveDECIMALint_fail-integer-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.K10" + trait: [ComparatorFacet] + comment: " { xsd:integer MINEXCLUSIVE 5.0 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMinexclusiveDECIMALint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMinexclusiveDECIMALint_pass-integer-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.N10" + trait: [ComparatorFacet] + comment: " { xsd:integer MINEXCLUSIVE 5.0 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMinexclusiveDECIMALint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1integerMinexclusiveDOUBLEint_fail-integer-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.J14" + trait: [ComparatorFacet] + comment: " { xsd:integer MINEXCLUSIVE 5.0e0 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMinexclusiveDOUBLEint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMinexclusiveDOUBLEint_fail-integer-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.K14" + trait: [ComparatorFacet] + comment: " { xsd:integer MINEXCLUSIVE 5.0e0 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMinexclusiveDOUBLEint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMinexclusiveDOUBLEint_pass-integer-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.N14" + trait: [ComparatorFacet] + comment: " { xsd:integer MINEXCLUSIVE 5.0e0 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMinexclusiveDOUBLEint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1decimalMinexclusiveINTEGER_fail-decimal-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.J27" + trait: [ComparatorFacet] + comment: " { xsd:decimal MINEXCLUSIVE 5 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMinexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMinexclusiveINTEGER_pass-decimal-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.N27" + trait: [ComparatorFacet] + comment: " { xsd:decimal MINEXCLUSIVE 5 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMinexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMinexclusiveDECIMAL_fail-decimal-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.J29" + trait: [ComparatorFacet] + comment: " { xsd:decimal MINEXCLUSIVE 4.5 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMinexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMinexclusiveDECIMAL_fail-decimal-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.K29" + trait: [ComparatorFacet] + comment: " { xsd:decimal MINEXCLUSIVE 4.5 } / { 4.5 }" + approval: Approved + schemaURL: ../schemas/1decimalMinexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_5.ttl + node: http://a.example/s1 + + - name: "1decimalMinexclusiveDECIMAL_pass-decimal-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.N29" + trait: [ComparatorFacet] + comment: " { xsd:decimal MINEXCLUSIVE 4.5 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMinexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMinexclusiveDOUBLE_fail-decimal-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.J33" + trait: [ComparatorFacet] + comment: " { xsd:decimal MINEXCLUSIVE 4.5e0 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMinexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMinexclusiveDOUBLE_fail-decimal-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.K33" + trait: [ComparatorFacet] + comment: " { xsd:decimal MINEXCLUSIVE 4.5e0 } / { 4.5 }" + approval: Approved + schemaURL: ../schemas/1decimalMinexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_5.ttl + node: http://a.example/s1 + + - name: "1decimalMinexclusiveDOUBLE_pass-decimal-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.N33" + trait: [ComparatorFacet] + comment: " { xsd:decimal MINEXCLUSIVE 4.5e0 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMinexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMinexclusiveDECIMAL_fail-float-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.K37" + trait: [ComparatorFacet] + comment: " { xsd:decimal MINEXCLUSIVE 4.5 } / { '4.5'^^ }" + approval: Approved + schemaURL: ../schemas/1decimalMinexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_5.ttl + node: http://a.example/s1 + + - name: "1decimalMinexclusiveDECIMAL_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.K39" + trait: [ComparatorFacet] + comment: " { xsd:decimal MINEXCLUSIVE 4.5 } / { 4.5e0 }" + approval: Approved + schemaURL: ../schemas/1decimalMinexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_5e0.ttl + node: http://a.example/s1 + + - name: "1floatMinexclusiveINTEGER_fail-float-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.J48" + trait: [ComparatorFacet] + comment: " { xsd:float MINEXCLUSIVE 5 } / { '4.4'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMinexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_4.ttl + node: http://a.example/s1 + + - name: "1floatMinexclusiveINTEGER_pass-float-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.N48" + trait: [ComparatorFacet] + comment: " { xsd:float MINEXCLUSIVE 5 } / { '5.6'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMinexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_6.ttl + node: http://a.example/s1 + + - name: "1floatMinexclusiveDECIMAL_fail-float-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.J50" + trait: [ComparatorFacet] + comment: " { xsd:float MINEXCLUSIVE 4.5 } / { '4.4'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMinexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_4.ttl + node: http://a.example/s1 + + - name: "1floatMinexclusiveDECIMAL_fail-float-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.K50" + trait: [ComparatorFacet] + comment: " { xsd:float MINEXCLUSIVE 4.5 } / { '4.5'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMinexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_5.ttl + node: http://a.example/s1 + + - name: "1floatMinexclusiveDECIMAL_pass-float-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.N50" + trait: [ComparatorFacet] + comment: " { xsd:float MINEXCLUSIVE 4.5 } / { '5.6'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMinexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_6.ttl + node: http://a.example/s1 + + - name: "1floatMinexclusiveDOUBLE_fail-float-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.J54" + trait: [ComparatorFacet] + comment: " { xsd:float MINEXCLUSIVE 4.5e0 } / { '4.4'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMinexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_4.ttl + node: http://a.example/s1 + + - name: "1floatMinexclusiveDOUBLE_fail-float-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.K54" + trait: [ComparatorFacet] + comment: " { xsd:float MINEXCLUSIVE 4.5e0 } / { '4.5'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMinexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_5.ttl + node: http://a.example/s1 + + - name: "1floatMinexclusiveDOUBLE_pass-float-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.N54" + trait: [ComparatorFacet] + comment: " { xsd:float MINEXCLUSIVE 4.5e0 } / { '5.6'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMinexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_6.ttl + node: http://a.example/s1 + + - name: "1doubleMinexclusiveINTEGER_fail-double-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.J69" + trait: [ComparatorFacet] + comment: " { xsd:double MINEXCLUSIVE 5 } / { 4.4e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMinexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_4e0.ttl + node: http://a.example/s1 + + - name: "1doubleMinexclusiveINTEGER_pass-double-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.N69" + trait: [ComparatorFacet] + comment: " { xsd:double MINEXCLUSIVE 5 } / { 5.6e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMinexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_6e0.ttl + node: http://a.example/s1 + + - name: "1doubleMinexclusiveDECIMAL_fail-double-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.J71" + trait: [ComparatorFacet] + comment: " { xsd:double MINEXCLUSIVE 4.5 } / { 4.4e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMinexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_4e0.ttl + node: http://a.example/s1 + + - name: "1doubleMinexclusiveDECIMAL_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.K71" + trait: [ComparatorFacet] + comment: " { xsd:double MINEXCLUSIVE 4.5 } / { 4.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMinexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMinexclusiveDECIMAL_pass-double-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.N71" + trait: [ComparatorFacet] + comment: " { xsd:double MINEXCLUSIVE 4.5 } / { 5.6e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMinexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_6e0.ttl + node: http://a.example/s1 + + - name: "1doubleMinexclusiveDOUBLE_fail-double-low" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.J75" + trait: [ComparatorFacet] + comment: " { xsd:double MINEXCLUSIVE 4.5e0 } / { 4.4e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMinexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_4e0.ttl + node: http://a.example/s1 + + - name: "1doubleMinexclusiveDOUBLE_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.K75" + trait: [ComparatorFacet] + comment: " { xsd:double MINEXCLUSIVE 4.5e0 } / { 4.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMinexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMinexclusiveDOUBLE_pass-double-high" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.N75" + trait: [ComparatorFacet] + comment: " { xsd:double MINEXCLUSIVE 4.5e0 } / { 5.6e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMinexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_6e0.ttl + node: http://a.example/s1 + + - name: "1doubleMinexclusiveDECIMAL_fail-float-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MinExclusive.K79" + trait: [ComparatorFacet] + comment: " { xsd:double MINEXCLUSIVE 4.5 } / { '4.5'^^ }" + approval: Approved + schemaURL: ../schemas/1doubleMinexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_5.ttl + node: http://a.example/s1 + + - name: "1integerMaxinclusiveINTEGER_pass-integer-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.J6" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXINCLUSIVE 5 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMaxinclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMaxinclusiveINTEGER_pass-integer-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.K6" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXINCLUSIVE 5 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMaxinclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMaxinclusiveINTEGER_fail-integer-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.N6" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXINCLUSIVE 5 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMaxinclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1integerMaxinclusiveDECIMALint_pass-integer-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.J10" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXINCLUSIVE 5.0 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMaxinclusiveDECIMALint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMaxinclusiveDECIMALint_pass-integer-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.K10" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXINCLUSIVE 5.0 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMaxinclusiveDECIMALint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMaxinclusiveDECIMALint_fail-integer-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.N10" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXINCLUSIVE 5.0 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMaxinclusiveDECIMALint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1integerMaxinclusiveDOUBLEint_pass-integer-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.J14" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXINCLUSIVE 5.0e0 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMaxinclusiveDOUBLEint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMaxinclusiveDOUBLEint_pass-integer-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.K14" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXINCLUSIVE 5.0e0 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMaxinclusiveDOUBLEint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMaxinclusiveDOUBLEint_fail-integer-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.N14" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXINCLUSIVE 5.0e0 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMaxinclusiveDOUBLEint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1decimalMaxinclusiveINTEGER_pass-decimal-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.J27" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXINCLUSIVE 5 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxinclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMaxinclusiveINTEGER_fail-decimal-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.N27" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXINCLUSIVE 5 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxinclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMaxinclusiveDECIMAL_pass-decimal-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.J29" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXINCLUSIVE 5.5 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxinclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMaxinclusiveDECIMAL_pass-decimal-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.K29" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXINCLUSIVE 5.5 } / { 5.5 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxinclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_5.ttl + node: http://a.example/s1 + + - name: "1decimalMaxinclusiveDECIMAL_fail-decimal-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.N29" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXINCLUSIVE 5.5 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxinclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMaxinclusiveDOUBLE_pass-decimal-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.J33" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXINCLUSIVE 5.5e0 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxinclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMaxinclusiveDOUBLE_pass-decimal-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.K33" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXINCLUSIVE 5.5e0 } / { 5.5 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxinclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_5.ttl + node: http://a.example/s1 + + - name: "1decimalMaxinclusiveDOUBLE_fail-decimal-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.N33" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXINCLUSIVE 5.5e0 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxinclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMaxinclusiveDECIMAL_fail-float-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.K37" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXINCLUSIVE 5.5 } / { '5.5'^^ }" + approval: Approved + schemaURL: ../schemas/1decimalMaxinclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_5.ttl + node: http://a.example/s1 + + - name: "1decimalMaxinclusiveDECIMAL_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.K39" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXINCLUSIVE 5.5 } / { 5.5e0 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxinclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_5e0.ttl + node: http://a.example/s1 + + - name: "1floatMaxinclusiveINTEGER_pass-float-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.J48" + trait: [ComparatorFacet] + comment: " { xsd:float MAXINCLUSIVE 5 } / { '4.4'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMaxinclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_4.ttl + node: http://a.example/s1 + + - name: "1floatMaxinclusiveINTEGER_fail-float-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.N48" + trait: [ComparatorFacet] + comment: " { xsd:float MAXINCLUSIVE 5 } / { '5.6'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMaxinclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_6.ttl + node: http://a.example/s1 + + - name: "1floatMaxinclusiveDECIMAL_pass-float-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.J50" + trait: [ComparatorFacet] + comment: " { xsd:float MAXINCLUSIVE 5.5 } / { '4.4'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMaxinclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_4.ttl + node: http://a.example/s1 + + - name: "1floatMaxinclusiveDECIMAL_pass-float-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.K50" + trait: [ComparatorFacet] + comment: " { xsd:float MAXINCLUSIVE 5.5 } / { '5.5'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMaxinclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_5.ttl + node: http://a.example/s1 + + - name: "1floatMaxinclusiveDECIMAL_fail-float-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.N50" + trait: [ComparatorFacet] + comment: " { xsd:float MAXINCLUSIVE 5.5 } / { '5.6'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMaxinclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_6.ttl + node: http://a.example/s1 + + - name: "1floatMaxinclusiveDOUBLE_pass-float-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.J54" + trait: [ComparatorFacet] + comment: " { xsd:float MAXINCLUSIVE 5.5e0 } / { '4.4'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMaxinclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_4.ttl + node: http://a.example/s1 + + - name: "1floatMaxinclusiveDOUBLE_pass-float-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.K54" + trait: [ComparatorFacet] + comment: " { xsd:float MAXINCLUSIVE 5.5e0 } / { '5.5'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMaxinclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_5.ttl + node: http://a.example/s1 + + - name: "1floatMaxinclusiveDOUBLE_fail-float-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.N54" + trait: [ComparatorFacet] + comment: " { xsd:float MAXINCLUSIVE 5.5e0 } / { '5.6'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMaxinclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_6.ttl + node: http://a.example/s1 + + - name: "1doubleMaxinclusiveINTEGER_pass-double-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.J69" + trait: [ComparatorFacet] + comment: " { xsd:double MAXINCLUSIVE 5 } / { 4.4e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxinclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_4e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxinclusiveINTEGER_fail-double-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.N69" + trait: [ComparatorFacet] + comment: " { xsd:double MAXINCLUSIVE 5 } / { 5.6e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxinclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_6e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxinclusiveDECIMAL_pass-double-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.J71" + trait: [ComparatorFacet] + comment: " { xsd:double MAXINCLUSIVE 5.5 } / { 4.4e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxinclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_4e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxinclusiveDECIMAL_pass-double-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.K71" + trait: [ComparatorFacet] + comment: " { xsd:double MAXINCLUSIVE 5.5 } / { 5.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxinclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxinclusiveDECIMAL_fail-double-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.N71" + trait: [ComparatorFacet] + comment: " { xsd:double MAXINCLUSIVE 5.5 } / { 5.6e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxinclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_6e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxinclusiveDOUBLE_pass-double-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.J75" + trait: [ComparatorFacet] + comment: " { xsd:double MAXINCLUSIVE 5.5e0 } / { 4.4e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxinclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_4e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxinclusiveDOUBLE_pass-double-equal" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.K75" + trait: [ComparatorFacet] + comment: " { xsd:double MAXINCLUSIVE 5.5e0 } / { 5.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxinclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxinclusiveDOUBLE_fail-double-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.N75" + trait: [ComparatorFacet] + comment: " { xsd:double MAXINCLUSIVE 5.5e0 } / { 5.6e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxinclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_6e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxinclusiveDECIMAL_fail-float-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxInclusive.K79" + trait: [ComparatorFacet] + comment: " { xsd:double MAXINCLUSIVE 5.5 } / { '5.5'^^ }" + approval: Approved + schemaURL: ../schemas/1doubleMaxinclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_5.ttl + node: http://a.example/s1 + + - name: "1integerMaxexclusiveINTEGER_pass-integer-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.J6" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXEXCLUSIVE 5 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMaxexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMaxexclusiveINTEGER_fail-integer-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K6" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXEXCLUSIVE 5 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMaxexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMaxexclusiveINTEGER_fail-integer-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.N6" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXEXCLUSIVE 5 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMaxexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1integerMaxexclusiveDECIMALint_pass-integer-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.J10" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXEXCLUSIVE 5.0 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMaxexclusiveDECIMALint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMaxexclusiveDECIMALint_fail-integer-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K10" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXEXCLUSIVE 5.0 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMaxexclusiveDECIMALint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMaxexclusiveDECIMALint_fail-integer-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.N10" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXEXCLUSIVE 5.0 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMaxexclusiveDECIMALint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1integerMaxexclusiveDOUBLEint_pass-integer-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.J14" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXEXCLUSIVE 5.0e0 } / { 4 }" + approval: Approved + schemaURL: ../schemas/1integerMaxexclusiveDOUBLEint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT4.ttl + node: http://a.example/s1 + + - name: "1integerMaxexclusiveDOUBLEint_fail-integer-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K14" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXEXCLUSIVE 5.0e0 } / { 5 }" + approval: Approved + schemaURL: ../schemas/1integerMaxexclusiveDOUBLEint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT5.ttl + node: http://a.example/s1 + + - name: "1integerMaxexclusiveDOUBLEint_fail-integer-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.N14" + trait: [ComparatorFacet] + comment: " { xsd:integer MAXEXCLUSIVE 5.0e0 } / { 6 }" + approval: Approved + schemaURL: ../schemas/1integerMaxexclusiveDOUBLEint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT6.ttl + node: http://a.example/s1 + + - name: "1decimalMaxexclusiveINTEGER_pass-decimal-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.J27" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXEXCLUSIVE 5 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMaxexclusiveINTEGER_fail-decimal-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.N27" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXEXCLUSIVE 5 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMaxexclusiveDECIMAL_pass-decimal-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.J29" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXEXCLUSIVE 5.5 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMaxexclusiveDECIMAL_fail-decimal-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K29" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXEXCLUSIVE 5.5 } / { 5.5 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_5.ttl + node: http://a.example/s1 + + - name: "1decimalMaxexclusiveDECIMAL_fail-decimal-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.N29" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXEXCLUSIVE 5.5 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMaxexclusiveDOUBLE_pass-decimal-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.J33" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXEXCLUSIVE 5.5e0 } / { 4.4 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC4_4.ttl + node: http://a.example/s1 + + - name: "1decimalMaxexclusiveDOUBLE_fail-decimal-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K33" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXEXCLUSIVE 5.5e0 } / { 5.5 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_5.ttl + node: http://a.example/s1 + + - name: "1decimalMaxexclusiveDOUBLE_fail-decimal-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.N33" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXEXCLUSIVE 5.5e0 } / { 5.6 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DEC5_6.ttl + node: http://a.example/s1 + + - name: "1decimalMaxexclusiveDECIMAL_fail-float-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K37" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXEXCLUSIVE 5.5 } / { '5.5'^^ }" + approval: Approved + schemaURL: ../schemas/1decimalMaxexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_5.ttl + node: http://a.example/s1 + + - name: "1decimalMaxexclusiveDECIMAL_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K39" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXEXCLUSIVE 5.5 } / { 5.5e0 }" + approval: Approved + schemaURL: ../schemas/1decimalMaxexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_5e0.ttl + node: http://a.example/s1 + + - name: "1decimalMaxexclusivexsd-byte_fail-byte-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K43" + trait: [ComparatorFacet] + comment: " { xsd:decimal MAXEXCLUSIVE 5 } / { '5'^^ }" + approval: Approved + schemaURL: ../schemas/1decimalMaxexclusivexsd-byte.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_BYT5.ttl + node: http://a.example/s1 + + - name: "1floatMaxexclusiveINTEGER_pass-float-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.J48" + trait: [ComparatorFacet] + comment: " { xsd:float MAXEXCLUSIVE 5 } / { '4.4'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMaxexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_4.ttl + node: http://a.example/s1 + + - name: "1floatMaxexclusiveINTEGER_fail-float-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.N48" + trait: [ComparatorFacet] + comment: " { xsd:float MAXEXCLUSIVE 5 } / { '5.6'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMaxexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_6.ttl + node: http://a.example/s1 + + - name: "1floatMaxexclusiveDECIMAL_pass-float-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.J50" + trait: [ComparatorFacet] + comment: " { xsd:float MAXEXCLUSIVE 5.5 } / { '4.4'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMaxexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_4.ttl + node: http://a.example/s1 + + - name: "1floatMaxexclusiveDECIMAL_fail-float-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.N50" + trait: [ComparatorFacet] + comment: " { xsd:float MAXEXCLUSIVE 5.5 } / { '5.6'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMaxexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_6.ttl + node: http://a.example/s1 + + - name: "1floatMaxexclusiveDOUBLE_pass-float-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.J54" + trait: [ComparatorFacet] + comment: " { xsd:float MAXEXCLUSIVE 5.5e0 } / { '4.4'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMaxexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT4_4.ttl + node: http://a.example/s1 + + - name: "1floatMaxexclusiveDOUBLE_fail-float-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.N54" + trait: [ComparatorFacet] + comment: " { xsd:float MAXEXCLUSIVE 5.5e0 } / { '5.6'^^ }" + approval: Approved + schemaURL: ../schemas/1floatMaxexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_FLT5_6.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveINTEGER_pass-double-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.J69" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 5 } / { 4.4e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_4e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveINTEGER_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K69" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 5 } / { 5.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveINTEGER_fail-double-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.N69" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 5 } / { 5.6e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveINTEGER.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_6e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveINTEGERLead_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K70" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 05 } / { 5.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveINTEGERLead.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveDECIMAL_pass-double-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.J71" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 5.5 } / { 4.4e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_4e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveDECIMAL_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K71" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 5.5 } / { 5.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveDECIMAL_fail-double-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.N71" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 5.5 } / { 5.6e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveDECIMAL.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_6e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveDECIMALLeadTrail_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K72" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 05.50 } / { 5.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveDECIMALLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveDECIMALint_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K73" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 5.0 } / { 5.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveDECIMALint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveDECIMALintLeadTrail_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K74" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 05.00 } / { 5.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveDECIMALintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveDOUBLE_pass-double-low" + status: conformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.J75" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 5.5e0 } / { 4.4e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL4_4e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveDOUBLE_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K75" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 5.5e0 } / { 5.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveDOUBLE_fail-double-high" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.N75" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 5.5e0 } / { 5.6e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveDOUBLE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_6e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveDOUBLELeadTrail_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K76" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 05.50e0 } / { 5.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveDOUBLELeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveDOUBLEint_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K77" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 5.0e0 } / { 5.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveDOUBLEint.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_5e0.ttl + node: http://a.example/s1 + + - name: "1doubleMaxexclusiveDOUBLEintLeadTrail_fail-double-equal" + status: nonconformant + wasDerivedFrom: "facet-tests-data.xlsx#MaxExclusive.K78" + trait: [ComparatorFacet] + comment: " { xsd:double MAXEXCLUSIVE 05.00e0 } / { 5.5e0 }" + approval: Approved + schemaURL: ../schemas/1doubleMaxexclusiveDOUBLEintLeadTrail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_DBL5_5e0.ttl + node: http://a.example/s1 + + #### } generated + ### } comparators + ### lengths + ### lengths { + - name: "1Length_fail-lit-short" + status: nonconformant + trait: [LengthFacet] + comment: " { LENGTH 5 } on { \"abcd\" }" + approval: Approved + schemaURL: ../schemas/1Length.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcd.ttl + node: http://a.example/s1 + + - name: "1Length_pass-lit-equal" + status: conformant + trait: [LengthFacet] + comment: " { LENGTH 5 } on { \"abcde\" }" + approval: Approved + schemaURL: ../schemas/1Length.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcde.ttl + node: http://a.example/s1 + + - name: "1Length_fail-lit-long" + status: nonconformant + trait: [LengthFacet] + comment: " { LENGTH 5 } on { \"abcdef\" }" + approval: Approved + schemaURL: ../schemas/1Length.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcdef.ttl + node: http://a.example/s1 + + - name: "1literalLength_fail-lit-short" + status: nonconformant + trait: [LengthFacet] + comment: " { LITERAL LENGTH 5 } on { \"abcd\" }" + approval: Approved + schemaURL: ../schemas/1literalLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcd.ttl + node: http://a.example/s1 + + - name: "1literalLength_pass-lit-equal" + status: conformant + trait: [LengthFacet] + comment: " { LITERAL LENGTH 5 } on { \"abcde\" }" + approval: Approved + schemaURL: ../schemas/1literalLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcde.ttl + node: http://a.example/s1 + + - name: "1literalLength_fail-lit-long" + status: nonconformant + trait: [LengthFacet] + comment: " { LITERAL LENGTH 5 } on { \"abcdef\" }" + approval: Approved + schemaURL: ../schemas/1literalLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcdef.ttl + node: http://a.example/s1 + + - name: "1literalLength_fail-iri-equal" + status: nonconformant + trait: [LengthFacet] + comment: " { LITERAL LENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1literalLength19.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1literalLength_fail-bnode-equal" + status: nonconformant + trait: [LexicalBNode, LengthFacet] + comment: " { LITERAL LENGTH 5 } on { _:abcde }" + approval: Approved + schemaURL: ../schemas/1literalLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcde.ttl + node: http://a.example/s1 + + - name: "1iriLength_fail-iri-short" + status: nonconformant + trait: [LengthFacet] + comment: " { IRI LENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1iriLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io.ttl + node: http://a.example/s1 + + - name: "1iriLength_pass-iri-equal" + status: conformant + trait: [LengthFacet] + comment: " { IRI LENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1iriLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1iriLength_fail-iri-long" + status: nonconformant + trait: [LengthFacet] + comment: " { IRI LENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1iriLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1a.ttl + node: http://a.example/s1 + + - name: "1iriLength_fail-lit-equal" + status: nonconformant + trait: [LengthFacet] + comment: " { IRI LENGTH 19 } on { \"abcde\" }" + approval: Approved + schemaURL: ../schemas/1iriLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcde.ttl + node: http://a.example/s1 + + - name: "1iriLength_fail-bnode-equal" + status: nonconformant + trait: [LexicalBNode, LengthFacet] + comment: " { IRI LENGTH 19 } on { _:abcde }" + approval: Approved + schemaURL: ../schemas/1iriLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcde.ttl + node: http://a.example/s1 + + - name: "1iriRefLength1_fail-iri-short" + status: nonconformant + trait: [LengthFacet] + comment: " { IRI @ LENGTH 19 } { . } on { }" + approval: Approved + schemaURL: ../schemas/1iriRefLength1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io.ttl + node: http://a.example/s1 + + - name: "1iriRefLength1_pass-iri-equal" + status: conformant + trait: [LengthFacet] + comment: " { IRI @ LENGTH 19 } { . } on { . }" + approval: Approved + schemaURL: ../schemas/1iriRefLength1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1-Io1_Ip2_Io2.ttl + node: http://a.example/s1 + + - name: "1iriRefLength1_fail-iri-long" + status: nonconformant + trait: [LengthFacet] + comment: " { IRI @ LENGTH 19 } { . } on { }" + approval: Approved + schemaURL: ../schemas/1iriRefLength1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1a.ttl + node: http://a.example/s1 + + - name: "1iriRefLength1_fail-lit-equal" + status: nonconformant + trait: [LengthFacet] + comment: " { IRI @ LENGTH 19 } { . } on { \"abcde\" }" + approval: Approved + schemaURL: ../schemas/1iriRefLength1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcde.ttl + node: http://a.example/s1 + + - name: "1iriRefLength1_fail-bnode-equal" + status: nonconformant + trait: [LengthFacet] + comment: " { IRI @ LENGTH 19 } { . } on { _:abcde }" + approval: Approved + schemaURL: ../schemas/1iriRefLength1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcde.ttl + node: http://a.example/s1 + + - name: "1bnodeLength_fail-bnode-short" + status: nonconformant + trait: [LexicalBNode, LengthFacet] + comment: " { BNODE LENGTH 5 } on { _:abcd }" + approval: Approved + schemaURL: ../schemas/1bnodeLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcd.ttl + node: http://a.example/s1 + + - name: "1bnodeLength_pass-bnode-equal" + status: conformant + trait: [LexicalBNode, LengthFacet] + comment: " { BNODE LENGTH 5 } on { _:abcde }" + approval: Approved + schemaURL: ../schemas/1bnodeLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcde.ttl + node: http://a.example/s1 + + - name: "1bnodeLength_fail-bnode-long" + status: nonconformant + trait: [LexicalBNode, LengthFacet] + comment: " { BNODE LENGTH 5 } on { _:abcdef }" + approval: Approved + schemaURL: ../schemas/1bnodeLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcdef.ttl + node: http://a.example/s1 + + - name: "1bnodeLength_fail-lit-equal" + status: nonconformant + trait: [LengthFacet] + comment: " { BNODE LENGTH 19 } on { \"abcde\" }" + approval: Approved + schemaURL: ../schemas/1bnodeLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcde.ttl + node: http://a.example/s1 + + - name: "1bnodeLength_fail-iri-equal" + status: nonconformant + trait: [LengthFacet] + comment: " { BNODE LENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1bnodeLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1nonliteralLength_fail-iri-short" + status: nonconformant + trait: [LengthFacet] + comment: " { NONLITERAL LENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1nonliteralLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io.ttl + node: http://a.example/s1 + + - name: "1nonliteralLength_pass-iri-equal" + status: conformant + trait: [LengthFacet] + comment: " { NONLITERAL LENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1nonliteralLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1nonliteralLength_fail-iri-long" + status: nonconformant + trait: [LengthFacet] + comment: " { NONLITERAL LENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1nonliteralLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1a.ttl + node: http://a.example/s1 + + - name: "1nonliteralLength_fail-lit-equal" + status: nonconformant + trait: [LengthFacet] + comment: " { NONLITERAL LENGTH 19 } on { \"abcde\" }" + approval: Approved + schemaURL: ../schemas/1nonliteralLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcde.ttl + node: http://a.example/s1 + + - name: "1nonliteralLength_fail-bnode-short" + status: nonconformant + trait: [LexicalBNode, LengthFacet] + comment: " { NONLITERAL LENGTH 19 } on { _:abcd }" + approval: Approved + schemaURL: ../schemas/1nonliteralLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcd.ttl + node: http://a.example/s1 + + - name: "1nonliteralLength_pass-bnode-equal" + status: conformant + trait: [LexicalBNode, LengthFacet] + comment: " { NONLITERAL LENGTH 19 } on { _:abcdefghijklmnopqrs }" + approval: Approved + schemaURL: ../schemas/1nonliteralLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcdefghijklmnopqrs.ttl + node: http://a.example/s1 + + - name: "1nonliteralLength_fail-bnode-long" + status: nonconformant + trait: [LexicalBNode, LengthFacet] + comment: " { NONLITERAL LENGTH 19 } on { _:abcdefghijklmnopqrst }" + approval: Approved + schemaURL: ../schemas/1nonliteralLength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcdefghijklmnopqrst.ttl + node: http://a.example/s1 + + - name: "1literalMinlength_fail-lit-short" + status: nonconformant + trait: [LengthFacet] + comment: " { LITERAL MINLENGTH 5 } on { \"abcd\" }" + approval: Approved + schemaURL: ../schemas/1literalMinlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcd.ttl + node: http://a.example/s1 + + - name: "1literalMinlength_pass-lit-equal" + status: conformant + trait: [LengthFacet] + comment: " { LITERAL MINLENGTH 5 } on { \"abcde\" }" + approval: Approved + schemaURL: ../schemas/1literalMinlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcde.ttl + node: http://a.example/s1 + + - name: "1literalMinlength_pass-lit-long" + status: conformant + trait: [LengthFacet] + comment: " { LITERAL MINLENGTH 5 } on { \"abcdef\" }" + approval: Approved + schemaURL: ../schemas/1literalMinlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcdef.ttl + node: http://a.example/s1 + + - name: "1iriMinlength_fail-iri-short" + status: nonconformant + trait: [LengthFacet] + comment: " { IRI MINLENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1iriMinlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io.ttl + node: http://a.example/s1 + + - name: "1iriMinlength_pass-iri-equal" + status: conformant + trait: [LengthFacet] + comment: " { IRI MINLENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1iriMinlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1iriMinlength_pass-iri-long" + status: conformant + trait: [LengthFacet] + comment: " { IRI MINLENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1iriMinlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1a.ttl + node: http://a.example/s1 + + - name: "1bnodeMinlength_fail-bnode-short" + status: nonconformant + trait: [LexicalBNode, LengthFacet] + comment: " { BNODE MINLENGTH 5 } on { _:abcd }" + approval: Approved + schemaURL: ../schemas/1bnodeMinlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcd.ttl + node: http://a.example/s1 + + - name: "1bnodeMinlength_pass-bnode-equal" + status: conformant + trait: [LexicalBNode, LengthFacet] + comment: " { BNODE MINLENGTH 5 } on { _:abcde }" + approval: Approved + schemaURL: ../schemas/1bnodeMinlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcde.ttl + node: http://a.example/s1 + + - name: "1bnodeMinlength_pass-bnode-long" + status: conformant + trait: [LexicalBNode, LengthFacet] + comment: " { BNODE MINLENGTH 5 } on { _:abcdef }" + approval: Approved + schemaURL: ../schemas/1bnodeMinlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcdef.ttl + node: http://a.example/s1 + + - name: "1nonliteralMinlength_fail-iri-short" + status: nonconformant + trait: [LengthFacet] + comment: " { NONLITERAL MINLENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1nonliteralMinlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io.ttl + node: http://a.example/s1 + + - name: "1nonliteralMinlength_pass-iri-equal" + status: conformant + trait: [LengthFacet] + comment: " { NONLITERAL MINLENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1nonliteralMinlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1nonliteralMinlength_pass-iri-long" + status: conformant + trait: [LengthFacet] + comment: " { NONLITERAL MINLENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1nonliteralMinlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1a.ttl + node: http://a.example/s1 + + - name: "1nonliteralMinlength_fail-bnode-short" + status: nonconformant + trait: [LexicalBNode, LengthFacet] + comment: " { NONLITERAL MINLENGTH 19 } on { _:abcd }" + approval: Approved + schemaURL: ../schemas/1nonliteralMinlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcd.ttl + node: http://a.example/s1 + + - name: "1nonliteralMinlength_pass-bnode-equal" + status: conformant + trait: [LexicalBNode, LengthFacet] + comment: " { NONLITERAL MINLENGTH 19 } on { _:abcdefghijklmnopqrs }" + approval: Approved + schemaURL: ../schemas/1nonliteralMinlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcdefghijklmnopqrs.ttl + node: http://a.example/s1 + + - name: "1nonliteralMinlength_pass-bnode-long" + status: conformant + trait: [LexicalBNode, LengthFacet] + comment: " { NONLITERAL MINLENGTH 19 } on { _:abcdefghijklmnopqrst }" + approval: Approved + schemaURL: ../schemas/1nonliteralMinlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcdefghijklmnopqrs.ttl + node: http://a.example/s1 + + - name: "1literalMaxlength_pass-lit-short" + status: conformant + trait: [LengthFacet] + comment: " { LITERAL MAXLENGTH 5 } on { \"abcd\" }" + approval: Approved + schemaURL: ../schemas/1literalMaxlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcd.ttl + node: http://a.example/s1 + + - name: "1literalMaxlength_pass-lit-equal" + status: conformant + trait: [LengthFacet] + comment: " { LITERAL MAXLENGTH 5 } on { \"abcde\" }" + approval: Approved + schemaURL: ../schemas/1literalMaxlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcde.ttl + node: http://a.example/s1 + + - name: "1literalMaxlength_fail-lit-long" + status: nonconformant + trait: [LengthFacet] + comment: " { LITERAL MAXLENGTH 5 } on { \"abcdef\" }" + approval: Approved + schemaURL: ../schemas/1literalMaxlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcdef.ttl + node: http://a.example/s1 + + - name: "1iriMaxlength_pass-iri-short" + status: conformant + trait: [LengthFacet] + comment: " { IRI MAXLENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1iriMaxlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io.ttl + node: http://a.example/s1 + + - name: "1iriMaxlength_pass-iri-equal" + status: conformant + trait: [LengthFacet] + comment: " { IRI MAXLENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1iriMaxlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1iriMaxlength_fail-iri-long" + status: nonconformant + trait: [LengthFacet] + comment: " { IRI MAXLENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1iriMaxlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1a.ttl + node: http://a.example/s1 + + - name: "1bnodeMaxlength_pass-bnode-short" + status: conformant + trait: [LexicalBNode, LengthFacet] + comment: " { BNODE MAXLENGTH 5 } on { _:abcd }" + approval: Approved + schemaURL: ../schemas/1bnodeMaxlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcd.ttl + node: http://a.example/s1 + + - name: "1bnodeMaxlength_pass-bnode-equal" + status: conformant + trait: [LexicalBNode, LengthFacet] + comment: " { BNODE MAXLENGTH 5 } on { _:abcde }" + approval: Approved + schemaURL: ../schemas/1bnodeMaxlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcde.ttl + node: http://a.example/s1 + + - name: "1bnodeMaxlength_fail-bnode-long" + status: nonconformant + trait: [LexicalBNode, LengthFacet] + comment: " { BNODE MAXLENGTH 5 } on { _:abcdef }" + approval: Approved + schemaURL: ../schemas/1bnodeMaxlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcdef.ttl + node: http://a.example/s1 + + - name: "1nonliteralMaxlength_pass-iri-short" + status: conformant + trait: [LengthFacet] + comment: " { NONLITERAL MAXLENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1nonliteralMaxlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io.ttl + node: http://a.example/s1 + + - name: "1nonliteralMaxlength_pass-iri-equal" + status: conformant + trait: [LengthFacet] + comment: " { NONLITERAL MAXLENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1nonliteralMaxlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1nonliteralMaxlength_fail-iri-long" + status: nonconformant + trait: [LengthFacet] + comment: " { NONLITERAL MAXLENGTH 19 } on { }" + approval: Approved + schemaURL: ../schemas/1nonliteralMaxlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1a.ttl + node: http://a.example/s1 + + - name: "1nonliteralMaxlength_pass-bnode-short" + status: conformant + trait: [LexicalBNode, LengthFacet] + comment: " { NONLITERAL MAXLENGTH 19 } on { _:abcd }" + approval: Approved + schemaURL: ../schemas/1nonliteralMaxlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcd.ttl + node: http://a.example/s1 + + - name: "1nonliteralMaxlength_pass-bnode-equal" + status: conformant + trait: [LexicalBNode, LengthFacet] + comment: " { NONLITERAL MAXLENGTH 19 } on { _:abcdefghijklmnopqrs }" + approval: Approved + schemaURL: ../schemas/1nonliteralMaxlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcdefghijklmnopqrs.ttl + node: http://a.example/s1 + + - name: "1nonliteralMaxlength_fail-bnode-long" + status: nonconformant + trait: [LexicalBNode, LengthFacet] + comment: " { NONLITERAL MAXLENGTH 5 } on { _:abcdefghijklmnopqrst }" + approval: Approved + schemaURL: ../schemas/1nonliteralMaxlength.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babcdefghijklmnopqrst.ttl + node: http://a.example/s1 + + ### } lengths + ### pattern + ### pattern { + - name: "1literalPattern_pass-lit-match" + status: conformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"bc\" } on { \"bc\" }" + approval: Approved + schemaURL: ../schemas/1literalPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lbclowercase.ttl + node: http://a.example/s1 + + - name: "1literalPattern_fail-lit-short" + status: nonconformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"bc\" } on { \"a\" }" + approval: Approved + schemaURL: ../schemas/1literalPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La.ttl + node: http://a.example/s1 + + - name: "1literalPattern_fail-ab" + status: nonconformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"bc\" } on { \"ab\" }" + approval: Approved + schemaURL: ../schemas/1literalPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1literalPattern_fail-cd" + status: nonconformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"bc\" } on { \"cd\" }" + approval: Approved + schemaURL: ../schemas/1literalPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lcd.ttl + node: http://a.example/s1 + + - name: "1literalPatterni_pass-lit-match" + status: conformant + trait: [PaternFacet] + comment: " { LITERAL /bc/i } on { \"bc\" }" + approval: Approved + schemaURL: ../schemas/1literalPatterni.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lbclowercase.ttl + node: http://a.example/s1 + + - name: "1literalPatterni_pass-lit-BC" + status: conformant + trait: [PaternFacet] + comment: " { LITERAL /bc/i } on { \"BC\" }" + approval: Approved + schemaURL: ../schemas/1literalPatterni.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LBC.ttl + node: http://a.example/s1 + + - name: "1literalPatterni_pass-lit-blowercaseC" + status: conformant + trait: [PaternFacet] + comment: " { LITERAL /bc/i } on { \"bC\" }" + approval: Approved + schemaURL: ../schemas/1literalPatterni.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LblowercaseC.ttl + node: http://a.example/s1 + + - name: "1literalPattern_pass-lit-into" + status: conformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"bc\" } on { \"abc\" }" + approval: Approved + schemaURL: ../schemas/1literalPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labc.ttl + node: http://a.example/s1 + + - name: "1literalPattern19_fail-iri-match" + status: nonconformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"http://a.example/o1\" } on { }" + approval: Approved + schemaURL: ../schemas/1literalPattern19.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1literalPattern_fail-bnode-match" + status: nonconformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"bc\" } on { _:ab }" + approval: Approved + schemaURL: ../schemas/1literalPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Bab.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_all_controls_pass" + status: conformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^^@^A...^_$/ } on { '^@^A...^_' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_all_controls.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_all_controls.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_all_controls_fail" + status: nonconformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^^@^A...^_$/ } on { '^@^A...^_999' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_all_controls.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_all_controls999.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_all_punctuation_pass" + status: conformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^ !\"#\\$%&'\\(\\)\\/:;<=>\\?@\\[\\]\\^_`\\{\\|\\}~$/ } on { ' !\"#$%&'()/:;<=>?@[]^_`{|}~' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_all_punctuation.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_all_punctuation.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_all_punctuation_fail" + status: nonconformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^ !\"#\\$%&'\\(\\)\\/:;<=>\\?@\\[\\]\\^_`\\{\\|\\}~$/ } on { ' !\"#$%&'()/:;<=>?@[]^_`{|}~999' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_all_punctuation.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_all_punctuation999.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_ascii_boundaries_pass" + status: conformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^^@^I^K^L^N&\\(\\[\\]^?$/ } on { '^@^I^K^L^N&([]^?' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_ascii_boundaries.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_ascii_boundaries.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_ascii_boundaries_fail" + status: nonconformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^^@^I^K^L^N&\\(\\[\\]^?$/ } on { '^@^I^K^L^N&([]^?999' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_ascii_boundaries.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_ascii_boundaries999.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_UTF8_boundaries_pass" + status: conformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^€...􏿽$/ } on { '€...􏿽' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_UTF8_boundaries.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_UTF8_boundaries.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_UTF8_boundaries_fail" + status: nonconformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^€...􏿽$/ } on { '€...􏿽999' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_UTF8_boundaries.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LSTRING_LITERAL1_with_UTF8_boundaries999.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_REGEXP_escapes_pass" + status: conformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^\\/\\t\\b\\n\\r\\f\\\\\\u0061\\U0001D4B8$/ } on { '\\/\\t\\b\\n\\r\\f\\a𝒸' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_REGEXP_escapes.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L_with_REGEXP_escapes.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_REGEXP_escapes_fail" + status: nonconformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^\\/\\t\\b\\n\\r\\f\\\\\\u0061\\U0001D4B8$/ } on { '\\/\\t\\b\\n\\r\\f\\a𝒸999' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_REGEXP_escapes.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L_with_REGEXP_escapes999.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_REGEXP_escapes_fail_escaped" + status: nonconformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^\\/\\t\\b\\n\\r\\f\\\\\\u0061\\U0001D4B8$/ } on { '\\\\/\\\\t\\\\b\\\\n\\\\r\\\\f\\\\\\u0061\\U0001D4B8' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_REGEXP_escapes.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L_with_REGEXP_escapes_escaped.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_REGEXP_escapes_escaped_pass" + status: conformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^\\\\/\\\\t\\\\b\\\\n\\\\r\\\\f\\\\\\\\\\\\u0061\\\\U0001D4B8$/ } on { '\\\\/\\\\t\\\\b\\\\n\\\\r\\\\f\\\\\\u0061\\U0001D4B8' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_REGEXP_escapes_escaped.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L_with_REGEXP_escapes_escaped.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_REGEXP_escapes_escaped_fail_escapes" + status: nonconformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^\\\\/\\\\t\\\\b\\\\n\\\\r\\\\f\\\\\\\\\\\\u0061\\\\U0001D4B8$/ } on { '\\/\\t\\b\\n\\r\\f\\a𝒸' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_REGEXP_escapes_escaped.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L_with_REGEXP_escapes.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_REGEXP_escapes_escaped_fail_escapes_bare" + status: nonconformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^\\\\/\\\\t\\\\b\\\\n\\\\r\\\\f\\\\\\\\\\\\u0061\\\\U0001D4B8$/ } on { '/\t\\b\\n\\r\\f\\a𝒸' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_REGEXP_escapes_escaped.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L_with_REGEXP_escapes_bare.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_REGEXP_escapes_bare_pass" + status: conformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^\\/\t\\n\\r-\\\\a\\U0001D4B8$/ } on { '/\t\\b\\n\\r\\f\\a𝒸' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_REGEXP_escapes_bare.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L_with_REGEXP_escapes_bare.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_REGEXP_escapes_bare_fail_escaped" + status: nonconformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^\\/\t\\n\\r-\\\\a\\U0001D4B8$/ } on { '\\\\/\\\\t\\\\b\\\\n\\\\r\\\\f\\\\\\u0061\\U0001D4B8' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_REGEXP_escapes_bare.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L_with_REGEXP_escapes_escaped.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_REGEXP_escapes_pass_bare" + status: conformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^\\/\\t\\b\\n\\r\\f\\\\\\u0061\\U0001D4B8$/ } on { '/\t\\b\\n\\r\\f\\a𝒸' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_REGEXP_escapes.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L_with_REGEXP_escapes_bare.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_REGEXP_escapes_bare_pass_escapes" + status: conformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^\\/\t\\n\\r-\\\\a\\U0001D4B8$/ } on { '\\/\\t\\b\\n\\r\\f\\a𝒸' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_REGEXP_escapes_bare.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L_with_REGEXP_escapes.ttl + node: http://a.example/s1 + + - name: "1literalPatternEnd_fail-litEnd" + status: nonconformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"bc$\" } on { \"bc$\" }" + approval: Approved + schemaURL: ../schemas/1literalPatternEnd.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LbcDollar.ttl + node: http://a.example/s1 + + - name: "1literalPatternDollar_pass-litDollar-match" + status: conformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"bc\\$\" } on { \"bc$\" }" + approval: Approved + schemaURL: ../schemas/1literalPatternDollar.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LbcDollar.ttl + node: http://a.example/s1 + + - name: "1literalPattern_pass-StartlitEnd-match" + status: nonconformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"^bc$\" } on { \"^bc$\" }" + approval: Approved + schemaURL: ../schemas/1literalStartPatternEnd.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LCarrotbcDollar.ttl + node: http://a.example/s1 + + - name: "1literalStartPatternEnd_CarrotbcDollar" + status: nonconformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"^bc$\" } on { \"^bc$\" }" + approval: Approved + schemaURL: ../schemas/1literalStartPatternEnd.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LCarrotbcDollar.ttl + node: http://a.example/s1 + + - name: "1literalCarrotPatternDollar_pass-bc" + status: nonconformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"\\^bc\\$\" } on { \"bc\" }" + approval: Approved + schemaURL: ../schemas/1literalCarrotPatternDollar.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lbclowercase.ttl + node: http://a.example/s1 + + - name: "1literalCarrotPatternDollar_pass-CarrotbcDollar" + status: conformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"\\^bc\\$\" } on { \"^bc$\" }" + approval: Approved + schemaURL: ../schemas/1literalCarrotPatternDollar.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LCarrotbcDollar.ttl + node: http://a.example/s1 + + - name: "1literalPatternabEnd_fail-bnode-match" + status: nonconformant + trait: [PaternFacet, LexicalBNode] + comment: " { LITERAL PATTERN \"bc$\" } on { _:bc }" + approval: Approved + schemaURL: ../schemas/1literalPatternabEnd.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Bbc.ttl + node: http://a.example/s1 + + - name: "1literalStartPattern_pass-bc" + status: conformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"^bc\" } on { \"bc\" }" + approval: Approved + schemaURL: ../schemas/1literalStartPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lbclowercase.ttl + node: http://a.example/s1 + + - name: "1literalStartPattern_fail-CarrotbcDollar" + status: nonconformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"^bc\" } on { \"^bc$\" }" + approval: Approved + schemaURL: ../schemas/1literalStartPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LCarrotbcDollar.ttl + node: http://a.example/s1 + + - name: "1literalPatternEnd_pass-bc" + status: conformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"bc$\" } on { \"bc\" }" + approval: Approved + schemaURL: ../schemas/1literalPatternEnd.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lbclowercase.ttl + node: http://a.example/s1 + + - name: "1literalPatternEnd_pass-CarrotbcDollar" + status: nonconformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"bc$\" } on { \"^bc$\" }" + approval: Approved + schemaURL: ../schemas/1literalPatternEnd.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LCarrotbcDollar.ttl + node: http://a.example/s1 + + - name: "1literalPattern_pass-bcDollar" + status: conformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"bc\" } on { \"bc$\" }" + approval: Approved + schemaURL: ../schemas/1literalPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LbcDollar.ttl + node: http://a.example/s1 + + - name: "1literalStarPatternEnd_pass-bc" + status: conformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"^bc$\" } on { \"bc\" }" + approval: Approved + schemaURL: ../schemas/1literalStartPatternEnd.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lbclowercase.ttl + node: http://a.example/s1 + + - name: "1literalPattern_pass-CarrotbcDollar" + status: conformant + trait: [PaternFacet] + comment: " { LITERAL PATTERN \"bc\" } on { \"^bc$\" }" + approval: Approved + schemaURL: ../schemas/1literalPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LCarrotbcDollar.ttl + node: http://a.example/s1 + + # translates to the implicitly anchored XML Schema: + # + # + # + # + # + # + # + # + # + # + # with data: + # + # v:0, v:12v:3/. + # Try at: + - name: "1literalPattern_with_all_meta_pass" + status: conformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^\t(v:[0-9]+.../ } on { '\tv:0, ...' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_all_meta.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L_with_all_meta.ttl + node: http://a.example/s1 + + - name: "1literalPattern_with_all_meta_pass-NA" + status: conformant + trait: [NumericEquivalence, OutsideBMP] + comment: " { /^\t(v:[0-9]+.../ } on { 'abc\\N/Adef' }" + approval: Approved + schemaURL: ../schemas/1literalPattern_with_all_meta.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LabcNAdef.ttl + node: http://a.example/s1 + + - name: "1iriPattern_pass-iri-match" + status: conformant + trait: [PaternFacet] + comment: " { IRI PATTERN \"http://a.example/o1\" } on { }" + approval: Approved + schemaURL: ../schemas/1iriPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1iriPattern_fail-iri-short" + status: nonconformant + trait: [PaternFacet] + comment: " { IRI PATTERN \"http://a.example/o1\" } on { }" + approval: Approved + schemaURL: ../schemas/1iriPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io.ttl + node: http://a.example/s1 + + - name: "1iriPattern_fail-iri-long" + status: nonconformant + trait: [PaternFacet] + comment: " { IRI PATTERN \"http://a.example/o1\" } on { }" + approval: Approved + schemaURL: ../schemas/1iriPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1a.ttl + node: http://a.example/s1 + + - name: "1iriPattern_fail-lit-match" + status: nonconformant + trait: [PaternFacet] + comment: " { IRI PATTERN \"http://a.example/o1\" } on { \"o1\" }" + approval: Approved + schemaURL: ../schemas/1iriPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L19.ttl + node: http://a.example/s1 + + - name: "1iriPattern_fail-bnode-match" + status: nonconformant + trait: [PaternFacet] + comment: " { IRI PATTERN \"^bc$\" } on { _:bc }" + approval: Approved + schemaURL: ../schemas/1iriPatternbc.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Bbc.ttl + node: http://a.example/s1 + + - name: "1bnodePattern_pass-bnode-match" + status: conformant + trait: [PaternFacet, LexicalBNode] + comment: " { BNODE PATTERN \"bc\" } on { _:bc }" + approval: Approved + schemaURL: ../schemas/1bnodePattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Bbc.ttl + node: http://a.example/s1 + + - name: "1bnodePattern_fail-bnode-short" + status: nonconformant + trait: [PaternFacet, LexicalBNode] + comment: " { BNODE PATTERN \"bc\" } on { _:a }" + approval: Approved + schemaURL: ../schemas/1bnodePattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Ba.ttl + node: http://a.example/s1 + + - name: "1bnodePattern_fail-bnode-long" + status: conformant + trait: [PaternFacet, LexicalBNode] + comment: " { BNODE PATTERN \"bc\" } on { _:abc }" + approval: Approved + schemaURL: ../schemas/1bnodePattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babc.ttl + node: http://a.example/s1 + + - name: "1bnodePattern_fail-lit-match" + status: nonconformant + trait: [PaternFacet] + comment: " { BNODE PATTERN \"bc\" } on { \"ab\" }" + approval: Approved + schemaURL: ../schemas/1bnodePattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1bnodePattern_fail-iri-match" + status: nonconformant # try one against relative name + trait: [PaternFacet] + comment: " { BNODE PATTERN \"bc\" } on { BASE }" + approval: Approved + schemaURL: ../schemas/1bnodePattern.shex + shape: http://a.example/S1 + dataURL: BASE_Is1_Ip1_Iab.ttl + node: http://a.example/s1 + + - name: "1nonliteralPattern_pass-iri-match" + status: conformant + trait: [PaternFacet] + comment: " { NONLITERAL PATTERN \"bc$\" } on { }" + approval: Approved + schemaURL: ../schemas/1nonliteralPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Ibc.ttl + node: http://a.example/s1 + + - name: "1nonliteralPattern_fail-iri-short" + status: nonconformant + trait: [PaternFacet] + comment: " { NONLITERAL PATTERN \"bc$\" } on { }" + approval: Approved + schemaURL: ../schemas/1nonliteralPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Ia.ttl + node: http://a.example/s1 + + - name: "1nonliteralPattern_pass-iri-long" + status: conformant + trait: [PaternFacet] + comment: " { NONLITERAL PATTERN \"bc$\" } on { }" + approval: Approved + schemaURL: ../schemas/1nonliteralPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iabc.ttl + node: http://a.example/s1 + + - name: "1nonliteralPattern_fail-lit-match" + status: nonconformant + trait: [PaternFacet] + comment: " { NONLITERAL PATTERN \"bc$\" } on { \"ab\" }" + approval: Approved + schemaURL: ../schemas/1nonliteralPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1nonliteralPattern_pass-bnode-match" + status: conformant + trait: [PaternFacet, LexicalBNode] + comment: " { NONLITERAL PATTERN \"bc$\" } on { _:bc }" + approval: Approved + schemaURL: ../schemas/1nonliteralPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Bbc.ttl + node: http://a.example/s1 + + - name: "1nonliteralPattern_fail-bnode-short" + status: nonconformant + trait: [PaternFacet, LexicalBNode] + comment: " { NONLITERAL PATTERN \"bc$\" } on { _:a }" + approval: Approved + schemaURL: ../schemas/1nonliteralPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Ba.ttl + node: http://a.example/s1 + + - name: "1nonliteralPattern_pass-bnode-long" + status: conformant + trait: [PaternFacet, LexicalBNode] + comment: " { NONLITERAL PATTERN \"bc$\" } on { _:abc }" + approval: Approved + schemaURL: ../schemas/1nonliteralPattern.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Babc.ttl + node: http://a.example/s1 + + ### } pattern + ## } facets + + ## value sets + ## value sets { + - name: "1val1dotMinusiri3_pass" + status: conformant + trait: [ValueSet, Stem] + comment: " { [.---] } on { }" + approval: Approved + schemaURL: ../schemas/1val1dotMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1val1dotMinusiri3_v1" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [.---] } on { }" + approval: Approved + schemaURL: ../schemas/1val1dotMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1val1dotMinusiri3_v2" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [.---] } on { }" + approval: Approved + schemaURL: ../schemas/1val1dotMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv2.ttl + node: http://a.example/s1 + + - name: "1val1dotMinusiri3_v3" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [.---] } on { }" + approval: Approved + schemaURL: ../schemas/1val1dotMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv3.ttl + node: http://a.example/s1 + + - name: "1val1refvsMinusiri3_pass" + status: conformant + trait: [ValueSet, Stem] + comment: " = [.---] { @ } on { }" + approval: Approved + schemaURL: ../schemas/1val1refvsMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1val1refvsMinusiri3_v1" + status: nonconformant + trait: [ValueSet, Stem] + comment: " = [.---] { @ } on { }" + approval: Approved + schemaURL: ../schemas/1val1refvsMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1val1refvsMinusiri3_v2" + status: nonconformant + trait: [ValueSet, Stem] + comment: " = [.---] { @ } on { }" + approval: Approved + schemaURL: ../schemas/1val1refvsMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv2.ttl + node: http://a.example/s1 + + - name: "1val1refvsMinusiri3_v3" + status: nonconformant + trait: [ValueSet, Stem] + comment: " = [.---] { @ } on { }" + approval: Approved + schemaURL: ../schemas/1val1refvsMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv3.ttl + node: http://a.example/s1 + + - name: "1val1dotMinusiriStem3_pass" + status: conformant + trait: [ValueSet, Stem] + comment: " { [.-~-~-~] } on { }" + approval: Approved + schemaURL: ../schemas/1val1dotMinusiriStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1val1dotMinusiriStem3_v1" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [.-~-~-~] } on { }" + approval: Approved + schemaURL: ../schemas/1val1dotMinusiriStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1val1dotMinusiriStem3_v2" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [.-~-~-~] } on { }" + approval: Approved + schemaURL: ../schemas/1val1dotMinusiriStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv2.ttl + node: http://a.example/s1 + + - name: "1val1dotMinusiriStem3_v3" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [.-~-~-~] } on { }" + approval: Approved + schemaURL: ../schemas/1val1dotMinusiriStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv3.ttl + node: http://a.example/s1 + + - name: "1val1dotMinusiriStem3_v1a" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [.-~-~-~] } on { }" + approval: Approved + schemaURL: ../schemas/1val1dotMinusiriStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1a.ttl + node: http://a.example/s1 + + - name: "1val1iri_passv1" + status: conformant + trait: [ValueSet] + comment: " { [] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iri.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1val1iri_failv1a" + status: nonconformant + trait: [ValueSet] + comment: " { [] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iri.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1a.ttl + node: http://a.example/s1 + + - name: "1val1iriStem_passv1" + status: conformant + trait: [ValueSet, Stem] + comment: " { [~] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iriStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1val1iriStem_passv1a" + status: conformant + trait: [ValueSet, Stem] + comment: " { [~] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iriStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1a.ttl + node: http://a.example/s1 + + - name: "1val1iriStem_fail" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [~] } on { <> }" + approval: Approved + schemaURL: ../schemas/1val1iriStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_I.ttl + node: http://a.example/s1 + + - name: "1val1iriStem_fail-literalIv1" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [~] } on { 'v1' }" + approval: Approved + schemaURL: ../schemas/1val1iriStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LIv1.ttl + node: http://a.example/s1 + + - name: "1val1iriStemMinusiri3_passIv" + status: conformant + trait: [ValueSet, Stem] + comment: " { [---] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iriStemMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv.ttl + node: http://a.example/s1 + + - name: "1val1iriStemMinusiri3_passIv4" + status: conformant + trait: [ValueSet, Stem] + comment: " { [---] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iriStemMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv4.ttl + node: http://a.example/s1 + + - name: "1val1iriStemMinusiri3_fail-literalIv4" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [---] } on { 'v4' }" + approval: Approved + schemaURL: ../schemas/1val1iriStemMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LIv4.ttl + node: http://a.example/s1 + + - name: "1val1iriStemMinusiri3_v1" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [---] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iriStemMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1val1iriStemMinusiri3_fail-literalIv1" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [---] } on { 'v1' }" + approval: Approved + schemaURL: ../schemas/1val1iriStemMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LIv1.ttl + node: http://a.example/s1 + + - name: "1val1iriStemMinusiri3_v2" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [---] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iriStemMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv2.ttl + node: http://a.example/s1 + + - name: "1val1iriStemMinusiri3_v3" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [---] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iriStemMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv3.ttl + node: http://a.example/s1 + + - name: "1val1iriStemMinusiri3_passIv1a" + status: conformant + trait: [ValueSet, Stem] + comment: " { [---] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iriStemMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1a.ttl + node: http://a.example/s1 + + - name: "1val1iriStemMinusiri3_fail-Ia" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [~---] } on { } -- outside the stem, not merely excluded" + approval: Proposed + schemaURL: ../schemas/1val1iriStemMinusiri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Ia.ttl + node: http://a.example/s1 + + - name: "1val1iriStemMinusiriStem3_passIv" + status: conformant + trait: [ValueSet, Stem] + comment: " { [~-~-~-~] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iriStemMinusiriStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv.ttl + node: http://a.example/s1 + + - name: "1val1iriStemMinusiriStem3_passIv4" + status: conformant + trait: [ValueSet, Stem] + comment: " { [~-~-~-~] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iriStemMinusiriStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv4.ttl + node: http://a.example/s1 + + - name: "1val1iriStemMinusiriStem3_v1" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [~-~-~-~] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iriStemMinusiriStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1val1iriStemMinusiriStem3_v2" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [~-~-~-~] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iriStemMinusiriStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv2.ttl + node: http://a.example/s1 + + - name: "1val1iriStemMinusiriStem3_v3" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [~-~-~-~] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iriStemMinusiriStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv3.ttl + node: http://a.example/s1 + + - name: "1val1iriStemMinusiriStem3_v1a" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [~-~-~-~] } on { }" + approval: Approved + schemaURL: ../schemas/1val1iriStemMinusiriStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1a.ttl + node: http://a.example/s1 + + - name: "1val1literal_passv" + status: conformant + trait: [ValueSet] + comment: " { ['v'] } on { 'v' }" + approval: Approved + schemaURL: ../schemas/1val1literal.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv.ttl + node: http://a.example/s1 + + - name: "1val1literal_failv1" + status: nonconformant + trait: [ValueSet] + comment: " { ['v'] } on { 'v1' }" + approval: Approved + schemaURL: ../schemas/1val1literal.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv1.ttl + node: http://a.example/s1 + + - name: "1val1literalStem_passv1" + status: conformant + trait: [ValueSet, Stem] + comment: " { ['v'~] } on { 'v1' }" + approval: Approved + schemaURL: ../schemas/1val1literalStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv1.ttl + node: http://a.example/s1 + + - name: "1val1literalStem_passv1a" + status: conformant + trait: [ValueSet, Stem] + comment: " { ['v'~] } on { 'v1a' }" + approval: Approved + schemaURL: ../schemas/1val1literalStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv1a.ttl + node: http://a.example/s1 + + - name: "1val1literalStem_fail" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { ['v'~] } on { '' }" + approval: Approved + schemaURL: ../schemas/1val1literalStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L.ttl + node: http://a.example/s1 + + - name: "1val1literaliriStem_fail-Iv1" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { ['v'~] } on { }" + approval: Approved + schemaURL: ../schemas/1val1literaliriStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1val1literalStemMinusliteral3_passLv" + status: conformant + trait: [ValueSet, Stem] + comment: " { ['v'-'v1'-'v2'-'v3'] } on { 'v' }" + approval: Approved + schemaURL: ../schemas/1val1literalStemMinusliteral3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv.ttl + node: http://a.example/s1 + + - name: "1val1literalStemMinusliteral3_passLv4" + status: conformant + trait: [ValueSet, Stem] + comment: " { ['v'-'v1'-'v2'-'v3'] } on { 'v4' }" + approval: Approved + schemaURL: ../schemas/1val1literalStemMinusliteral3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv4.ttl + node: http://a.example/s1 + + - name: "1val1literaliriStemMinusliteraliri3_fail-Iv4" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { ['v'-'v1'-'v2'-'v3'] } on { }" + approval: Approved + schemaURL: ../schemas/1val1literaliriStemMinusliteraliri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv4.ttl + node: http://a.example/s1 + + - name: "1val1literalStemMinusliteral3_v1" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { ['v'-'v1'-'v2'-'v3'] } on { 'v1' }" + approval: Approved + schemaURL: ../schemas/1val1literalStemMinusliteral3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv1.ttl + node: http://a.example/s1 + + - name: "1val1literaliriStemMinusliteraliri3_fail-Iv1" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { ['v'-'v1'-'v2'-'v3'] } on { }" + approval: Approved + schemaURL: ../schemas/1val1literaliriStemMinusliteraliri3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1val1literalStemMinusliteral3_v2" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { ['v'-'v1'-'v2'-'v3'] } on { 'v2' }" + approval: Approved + schemaURL: ../schemas/1val1literalStemMinusliteral3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv2.ttl + node: http://a.example/s1 + + - name: "1val1literalStemMinusliteral3_v3" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { ['v'-'v1'-'v2'-'v3'] } on { 'v3' }" + approval: Approved + schemaURL: ../schemas/1val1literalStemMinusliteral3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv3.ttl + node: http://a.example/s1 + + - name: "1val1literalStemMinusliteral3_passLv1a" + status: conformant + trait: [ValueSet, Stem] + comment: " { ['v'-'v1'-'v2'-'v3'] } on { 'v1a' }" + approval: Approved + schemaURL: ../schemas/1val1literalStemMinusliteral3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv1a.ttl + node: http://a.example/s1 + + - name: "1val1literalStemMinusliteralStem3_passLv" + status: conformant + trait: [ValueSet, Stem] + comment: " { ['v'~-'v1'~-'v2'~-'v3'~] } on { 'v' }" + approval: Approved + schemaURL: ../schemas/1val1literalStemMinusliteralStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv.ttl + node: http://a.example/s1 + + - name: "1val1literalStemMinusliteralStem3_passLv4" + status: conformant + trait: [ValueSet, Stem] + comment: " { ['v'~-'v1'~-'v2'~-'v3'~] } on { 'v4' }" + approval: Approved + schemaURL: ../schemas/1val1literalStemMinusliteralStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv4.ttl + node: http://a.example/s1 + + - name: "1val1literalStemMinusliteralStem3_v1" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { ['v'~-'v1'~-'v2'~-'v3'~] } on { 'v1' }" + approval: Approved + schemaURL: ../schemas/1val1literalStemMinusliteralStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv1.ttl + node: http://a.example/s1 + + - name: "1val1literalStemMinusliteralStem3_v2" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { ['v'~-'v1'~-'v2'~-'v3'~] } on { 'v2' }" + approval: Approved + schemaURL: ../schemas/1val1literalStemMinusliteralStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv2.ttl + node: http://a.example/s1 + + - name: "1val1literalStemMinusliteralStem3_v3" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { ['v'~-'v1'~-'v2'~-'v3'~] } on { 'v3' }" + approval: Approved + schemaURL: ../schemas/1val1literalStemMinusliteralStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv3.ttl + node: http://a.example/s1 + + - name: "1val1literalStemMinusliteralStem3_v1a" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { ['v'~-'v1'~-'v2'~-'v3'~] } on { 'v1a' }" + approval: Approved + schemaURL: ../schemas/1val1literalStemMinusliteralStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv1a.ttl + node: http://a.example/s1 + + - name: "1val1language_passLAtfr" + status: conformant + trait: [ValueSet] + comment: " { [@fr] } on { 'septante'@fr }" + approval: Approved + schemaURL: ../schemas/1val1language.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr.ttl + node: http://a.example/s1 + + - name: "1val1language_failLAtfr-be" + status: nonconformant + trait: [ValueSet] + comment: " { [@fr] } on { 'septante'@fr-be }" + approval: Approved + schemaURL: ../schemas/1val1language.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-be.ttl + node: http://a.example/s1 + + - name: "1val1language_fail-Iv" + status: nonconformant + trait: [ValueSet] + comment: " { [@fr] } on { } -- an IRI, where the set holds only literals" + approval: Proposed + schemaURL: ../schemas/1val1language.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv.ttl + node: http://a.example/s1 + + - name: "1val1emptylanguageStem_passLAtfr" + status: conformant + trait: [ValueSet, Stem] + comment: " { [@~] } on { 'septante'@fr }" + approval: Approved + schemaURL: ../schemas/1val1emptylanguageStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr.ttl + node: http://a.example/s1 + + - name: "1val1emptylanguageStem_fail-literal" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@~] } on { '' }" + approval: Approved + schemaURL: ../schemas/1val1emptylanguageStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1val1emptylanguageStem_fail-empty" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@~] } on { '' }" + approval: Approved + schemaURL: ../schemas/1val1emptylanguageStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L.ttl + node: http://a.example/s1 + + - name: "1val1emptylanguageStem_fail-integer" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@~] } on { 12345 }" + approval: Approved + schemaURL: ../schemas/1val1emptylanguageStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_INT12345.ttl + node: http://a.example/s1 + + - name: "1val1emptylanguageStemMinuslanguage3_passLAtfr" + status: conformant + trait: [ValueSet, Stem] + comment: " { [@~-@fr-be-@fr-cd-@fr-ch] } on { 'septante'@fr }" + approval: Approved + schemaURL: ../schemas/1val1emptylanguageStemMinuslanguage3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr.ttl + node: http://a.example/s1 + + - name: "1val1emptylanguageStemMinuslanguage3_failLAtfr-be" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@~-@fr-be-@fr-cd-@fr-ch] } on { 'septante'@fr-be }" + approval: Approved + schemaURL: ../schemas/1val1emptylanguageStemMinuslanguage3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-be.ttl + node: http://a.example/s1 + + - name: "1val1emptylanguageStemMinuslanguage3_passLAtfr-be-fbcl" + status: conformant + trait: [ValueSet, Stem] + comment: " { [@~-@fr-be-@fr-cd-@fr-ch] } on { 'septante'@fr-be-fbcl }" + approval: Approved + schemaURL: ../schemas/1val1emptylanguageStemMinuslanguage3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-be-fbcl.ttl + node: http://a.example/s1 + + - name: "1val1emptylanguageStemMinuslanguageStem3_LAtfr" + status: conformant + trait: [ValueSet, Stem] + comment: " { [@~-@fr-be~-@fr-cd~-@fr-ch~] } on { 'septante'@fr }" + approval: Approved + schemaURL: ../schemas/1val1emptylanguageStemMinuslanguageStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr.ttl + node: http://a.example/s1 + + - name: "1val1emptylanguageStemMinuslanguageStem3_failLAtfr-be" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@~-@fr-be~-@fr-cd~-@fr-ch~] } on { 'septante'@fr-be }" + approval: Approved + schemaURL: ../schemas/1val1emptylanguageStemMinuslanguageStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-be.ttl + node: http://a.example/s1 + + - name: "1val1emptylanguageStemMinuslanguageStem3_LAtfr-be-fbcl" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@~-@fr-be~-@fr-cd~-@fr-ch~] } on { 'septante'@fr-be-fbcl }" + approval: Approved + schemaURL: ../schemas/1val1emptylanguageStemMinuslanguageStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-be-fbcl.ttl + node: http://a.example/s1 + + - name: "1val1emptylanguageStemMinuslanguageStem3_LAtfrc" + status: conformant + trait: [ValueSet, Stem] + comment: " { [@~-@fr-be~-@fr-cd~-@fr-ch~] } on { 'septante'@frc }" + approval: Approved + schemaURL: ../schemas/1val1emptylanguageStemMinuslanguageStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfrc.ttl + node: http://a.example/s1 + + - name: "1val1languageStem_passLAtfr" + status: conformant + trait: [ValueSet, Stem] + comment: " { [@fr~] } on { 'septante'@fr }" + approval: Approved + schemaURL: ../schemas/1val1languageStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr.ttl + node: http://a.example/s1 + + - name: "1val1languageStem_failLAtfrc" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@fr~] } on { 'septante'@frc }" + approval: Approved + schemaURL: ../schemas/1val1languageStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfrc.ttl + node: http://a.example/s1 + + - name: "1val1languageStem_passLAtfr-be" + status: conformant + trait: [ValueSet, Stem] + comment: " { [@fr~] } on { 'septante'@fr-be }" + approval: Approved + schemaURL: ../schemas/1val1languageStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-be.ttl + node: http://a.example/s1 + + - name: "1val1languageStem_passLAtfr-be-fbcl" + status: conformant + trait: [ValueSet, Stem] + comment: " { [@fr~] } on { 'septante'@fr-be-fbcl }" + approval: Approved + schemaURL: ../schemas/1val1languageStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-be-fbcl.ttl + node: http://a.example/s1 + + - name: "1val1languageStem_fail" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@fr~] } on { '' }" + approval: Approved + schemaURL: ../schemas/1val1languageStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L.ttl + node: http://a.example/s1 + + - name: "1val1languageStem_fail-Iv" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@fr~] } on { } -- an IRI has no language to stem" + approval: Proposed + schemaURL: ../schemas/1val1languageStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv.ttl + node: http://a.example/s1 + + - name: "1val1literallanguageStem_failLAtfr" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { ['fr'~] } on { 'septante'@fr }" + approval: Approved + schemaURL: ../schemas/1val1literallanguageStem.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr.ttl + node: http://a.example/s1 + + - name: "1val1languageStemMinuslanguage3_passLAtfr" + status: conformant + trait: [ValueSet, Stem] + comment: " { [@fr~-@fr-be-@fr-cd-@fr-ch] } on { 'septante'@fr }" + approval: Approved + schemaURL: ../schemas/1val1languageStemMinuslanguage3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr.ttl + node: http://a.example/s1 + + - name: "1val1languageStemMinuslanguage3_passLAtfr-FR" + status: conformant + trait: [ValueSet, Stem] + comment: " { [@fr~-@fr-be-@fr-cd-@fr-ch] } on { 'septante'@fr-FR }" + approval: Approved + schemaURL: ../schemas/1val1languageStemMinuslanguage3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-fr.ttl + node: http://a.example/s1 + + - name: "1val1literallanguageStemMinusliterallanguage3_failLAtfr-FR" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { ['fr'-'fr-be'-'fr-cd'-'fr-ch'] } on { 'septante'@fr-FR }" + approval: Approved + schemaURL: ../schemas/1val1literallanguageStemMinusliterallanguage3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-fr.ttl + node: http://a.example/s1 + + - name: "1val1languageStemMinuslanguage3_failLAtfr-be" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@fr~-@fr-be-@fr-cd-@fr-ch] } on { 'septante'@fr-be }" + approval: Approved + schemaURL: ../schemas/1val1languageStemMinuslanguage3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-be.ttl + node: http://a.example/s1 + + - name: "1val1literallanguageStemMinusliterallanguage3_failLAtfr-BE" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { ['fr'-'fr-be'-'fr-cd'-'fr-ch'] } on { 'septante'@fr-be }" + approval: Approved + schemaURL: ../schemas/1val1literallanguageStemMinusliterallanguage3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-be.ttl + node: http://a.example/s1 + + - name: "1val1languageStemMinuslanguage3_failLAtfr-cd" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@fr~-@fr-be-@fr-cd-@fr-ch] } on { 'septante'@fr-cd }" + approval: Approved + schemaURL: ../schemas/1val1languageStemMinuslanguage3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-cd.ttl + node: http://a.example/s1 + + - name: "1val1languageStemMinuslanguage3_failLAtfr-ch" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@fr~-@fr-be-@fr-cd-@fr-ch] } on { 'septante'@fr-ch }" + approval: Approved + schemaURL: ../schemas/1val1languageStemMinuslanguage3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-ch.ttl + node: http://a.example/s1 + + - name: "1val1languageStemMinuslanguage3_passLAtfr-be-fbcl" + status: conformant + trait: [ValueSet, Stem] + comment: " { [@fr~-@fr-be-@fr-cd-@fr-ch] } on { 'septante'@fr-be-fbcl }" + approval: Approved + schemaURL: ../schemas/1val1languageStemMinuslanguage3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-be-fbcl.ttl + node: http://a.example/s1 + + - name: "1val1languageStemMinuslanguage3_fail-Iv" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@fr~-@fr-be-@fr-cd-@fr-ch] } on { } -- an IRI has no language to stem" + approval: Proposed + schemaURL: ../schemas/1val1languageStemMinuslanguage3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv.ttl + node: http://a.example/s1 + + - name: "1val1languageStemMinuslanguageStem3_passLAtfr" + status: conformant + trait: [ValueSet, Stem] + comment: " { [@fr~-@fr-be~-@fr-cd~-@fr-ch~] } on { 'septante'@fr }" + approval: Approved + schemaURL: ../schemas/1val1languageStemMinuslanguageStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr.ttl + node: http://a.example/s1 + + - name: "1val1languageStemMinuslanguageStem3_LAtfrc" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@fr~-@fr-be~-@fr-cd~-@fr-ch~] } on { 'septante'@frc }" + approval: Approved + schemaURL: ../schemas/1val1languageStemMinuslanguageStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfrc.ttl + node: http://a.example/s1 + + - name: "1val1languageStemMinuslanguageStem3_passLAtfr-FR" + status: conformant + trait: [ValueSet, Stem] + comment: " { [@fr~-@fr-be~-@fr-cd~-@fr-ch~] } on { 'septante'@fr-FR }" + approval: Approved + schemaURL: ../schemas/1val1languageStemMinuslanguageStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-fr.ttl + node: http://a.example/s1 + + - name: "1val1languageStemMinuslanguageStem3_LAtfr-be" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@fr~-@fr-be~-@fr-cd~-@fr-ch~] } on { 'septante'@fr-be }" + approval: Approved + schemaURL: ../schemas/1val1languageStemMinuslanguageStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-be.ttl + node: http://a.example/s1 + + - name: "1val1languageStemMinuslanguageStem3_LAtfr-cd" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@fr~-@fr-be~-@fr-cd~-@fr-ch~] } on { 'septante'@fr-cd }" + approval: Approved + schemaURL: ../schemas/1val1languageStemMinuslanguageStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-cd.ttl + node: http://a.example/s1 + + - name: "1val1languageStemMinuslanguageStem3_LAtfr-ch" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@fr~-@fr-be~-@fr-cd~-@fr-ch~] } on { 'septante'@fr-ch }" + approval: Approved + schemaURL: ../schemas/1val1languageStemMinuslanguageStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-ch.ttl + node: http://a.example/s1 + + - name: "1val1languageStemMinuslanguageStem3_passLAtfr-bel" + status: conformant + trait: [ValueSet, Stem] + comment: " { [@fr~-@fr-be~-@fr-cd~-@fr-ch~] } on { 'septante'@fr-bel }" + approval: Approved + schemaURL: ../schemas/1val1languageStemMinuslanguageStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-bel.ttl + node: http://a.example/s1 + + - name: "1val1languageStemMinuslanguageStem3_LAtfr-be-fbcl" + status: nonconformant + trait: [ValueSet, Stem] + comment: " { [@fr~-@fr-be~-@fr-cd~-@fr-ch~] } on { 'septante'@fr-be-fbcl }" + approval: Approved + schemaURL: ../schemas/1val1languageStemMinuslanguageStem3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_LAtfr-be-fbcl.ttl + node: http://a.example/s1 + + ## } value sets + + ## triple expressions + ### AND tripleExpr + + ### OR tripleExpr + ## triple expressions { + ### AND tripleExpr { + # !../schemas/2dot.shex + # !../schemas/2dotSemis.shex [2dotSemis.shex] + # !../schemas/open2dotclose.shex [2dotSemis.shex] + # !../schemas/open2dotsemisclose.shex [2dotSemis.shex] + # !../schemas/3Eachdot.shex + # !../schemas/open3Eachdotclose.shex [3Eachdot.shex] + + ### } AND tripleExpr + ### OR tripleExpr { + + # !../schemas/1dotOne1dot.shex + # !../schemas/1dotSemiOne1dotSemi.shex + # !../schemas/open1dotOne1dotclose.shex [1dotSemiOne1dotSemi.shex] + # !../schemas/open1dotSemiOne1dotSemicloseSemi.shex [1dotSemiOne1dotSemi.shex] + # !../schemas/2dotOne1dot.shex + # !../schemas/2dotSemiOne1dotSemi.shex [2dotOne1dot.shex] + # !../schemas/open2dotOne1dotclose.shex [2dotOne1dot.shex] + # !../schemas/open2dotSemisOne1dotSemiclose.shex [2dotOne1dot.shex] + # !../schemas/openopen2dotcloseOne1dotclose.shex [2dotOne1dot.shex] + # !../schemas/openopen2dotSemiscloseOne1dotSemiclose.shex [2dotOne1dot.shex] + # !../schemas/open1dotopen1dotOne1dotcloseclose.shex + # !../schemas/open1dotopen1dotSemiOne1dotSemicloseSemicloseSemi.shex [open1dotopen1dotOne1dotcloseclose.shex] + - name: "1dotOne2dot_pass_p1" + status: conformant + trait: [OneOf, EachOf-unvisited] + comment: ":S1 {:p1 .|:p2 .; :p3 .} / { :s1 :p1 \"p1-0\" . }" + approval: Approved + schemaURL: ../schemas/1dotOne2dot.shex + shape: http://a.example/S1 + dataURL: p1.ttl + node: x + + - name: "1dotOne2dot_pass_p2p3" + status: conformant + trait: [OneOf, EachOf] + comment: ":S1 {:p1 .|:p2 .; :p3 .} / { :s1 :p2 \"p2-0\"; :p3 \"p3-0\" . }" + approval: Approved + schemaURL: ../schemas/1dotOne2dot.shex + shape: http://a.example/S1 + dataURL: p2p3.ttl + node: x + + - name: "1dotOne2dot-oneOf_fail_p1p2p3" + status: nonconformant + trait: [OneOf, EachOf-unvisited] + comment: ":S1 {:p1 .|:p2 .; :p3 .} / { :s1 :p1 \"p1-0\"; :p2 \"p2-0\"; :p3 \"p3-0\" . }" + approval: Approved + schemaURL: ../schemas/1dotOne2dot.shex + shape: http://a.example/S1 + dataURL: p1p2p3.ttl + node: x + + - name: "1dotOne2dot-someOf_fail_p1p2p3" + status: nonconformant + trait: [OneOf, EachOf, MissedMatchables] + comment: ":S1 {:p1 .|:p2 .; :p3 .} / { :s1 :p1 \"p1-0\"; :p2 \"p2-0\"; :p3 \"p3-0\" . }" + approval: Approved + schemaURL: ../schemas/1dotOne2dot.shex + shape: http://a.example/S1 + dataURL: p1p2p3.ttl + node: x + #<#1dotOne2dot-firstOf_pass_p1p2p3> + # open1dotOneopen2dotcloseclose_... same as 1dotOne2dot + # @@ eliminate as duplicate? + - name: open1dotOneopen2dotcloseclose_pass_p1 + status: conformant + trait: [OneOf, EachOf-unvisited] + comment: ":S1 {(:p1 .|(:p2 .; :p3 .))} / { :s1 :p1 \"p1-0\" . }" + approval: Approved + schemaURL: ../schemas/open1dotOneopen2dotcloseclose.shex + shape: http://a.example/S1 + dataURL: p1.ttl + node: x + + - name: open1dotOneopen2dotcloseclose_pass_p2p3 + status: conformant + trait: [OneOf, EachOf] + comment: ":S1 {(:p1 .|(:p2 .; :p3 .))} / { :s1 :p2 \"p2-0\"; :p3 \"p3-0\" . }" + approval: Approved + schemaURL: ../schemas/open1dotOneopen2dotcloseclose.shex + shape: http://a.example/S1 + dataURL: p2p3.ttl + node: x + + - name: open1dotOneopen2dotcloseclose_fail_p1p2p3 + status: nonconformant + trait: [OneOf, EachOf-unvisited] + comment: ":S1 {(:p1 .|(:p2 .; :p3 .))} / { :s1 :p1 \"p1-0\"; :p2 \"p2-0\"; :p3 \"p3-0\" . }" + approval: Approved + schemaURL: ../schemas/open1dotOneopen2dotcloseclose.shex + shape: http://a.example/S1 + dataURL: p1p2p3.ttl + node: x + # 1dotSemiOne2dotSemis ... same as 1dotOne2dot + # open1dotSemiOne2dotsemisclose_... same as 1dotOne2dot + # open1dotSemiOneopen2dotSemiscloseclose_... same as 1dotOne2dot + # open1dotOne2dotclose_... same as 1dotOne2dot + - name: openopen1dotOne1dotclose1dotclose_pass_p1p3 + status: conformant + trait: [OneOf, EachOf] + comment: ":S1 { ((:p1 .| :p2 .); :p3 .) } / { :p1 \"p1-0\"; :p3 \"p3-0\" . }" + approval: Approved + schemaURL: ../schemas/openopen1dotOne1dotclose1dotclose.shex + shape: http://a.example/S1 + dataURL: p1p3.ttl + node: x + + - name: openopen1dotOne1dotclose1dotclose_pass_p2p3 + status: conformant + trait: [OneOf, EachOf] + comment: ":S1 { ((:p1 .| :p2 .); :p3 .) } / { :p2 \"p2-0\"; :p3 \"p3-0\" . }" + approval: Approved + schemaURL: ../schemas/openopen1dotOne1dotclose1dotclose.shex + shape: http://a.example/S1 + dataURL: p2p3.ttl + node: x + + - name: openopen1dotOne1dotclose1dotclose_fail_p1 + status: nonconformant + trait: [OneOf, EachOf-unvisited] + comment: ":S1 { ((:p1 .| :p2 .); :p3 .) } / { :p1 \"p1-0\" . }" + approval: Approved + schemaURL: ../schemas/openopen1dotOne1dotclose1dotclose.shex + shape: http://a.example/S1 + dataURL: p1.ttl + node: x + + - name: openopen1dotOne1dotclose1dotclose_fail_p3 + status: nonconformant + trait: [OneOf, EachOf] + comment: ":S1 { ((:p1 .| :p2 .); :p3 .) } / { :p3 \"p3-0\" . }" + approval: Approved + schemaURL: ../schemas/openopen1dotOne1dotclose1dotclose.shex + shape: http://a.example/S1 + dataURL: p3.ttl + node: x + + - name: openopen1dotOne1dotclose1dotclose_fail_p1p2 + status: nonconformant + trait: [OneOf, EachOf] + comment: ":S1 { ((:p1 .| :p2 .); :p3 .) } / { :p1 \"p1-0\"; :p2 \"p2-0\" . }" + approval: Approved + schemaURL: ../schemas/openopen1dotOne1dotclose1dotclose.shex + shape: http://a.example/S1 + dataURL: p1p2.ttl + node: x + + ### } OR tripleExpr + ## } triple expressions + # openopen1dotSemiOne1dotSemiclose1dotSemicloseSemi_... same as openopen1dotOne1dotclose1dotclose + + ## value expressions + ### value reference + ## value expressions { + ### value reference { + - name: "1val1vExprRefIRIREF1_fail-lit-short" + status: nonconformant + trait: [ValueReference, LengthFacet] + comment: " = LITERAL MINLENGTH 5 { @ } on { \"abcd\" }" + approval: Approved + schemaURL: ../schemas/1val1vExprRefIRIREF1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcd.ttl + node: http://a.example/s1 + + - name: "1val1vExprRefIRIREF1_pass-lit-equal" + status: conformant + trait: [ValueReference, LengthFacet] + comment: " = LITERAL MINLENGTH 5 { @ } on { \"abcde\" }" + approval: Approved + schemaURL: ../schemas/1val1vExprRefIRIREF1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcde.ttl + node: http://a.example/s1 + + - name: "1val1vExprRefbnode1_fail-lit-short" + status: nonconformant + trait: [ValueReference, LengthFacet] + comment: "_:vc1 = LITERAL MINLENGTH 5 { @_:vc1 } on { \"abcd\" }" + approval: Approved + schemaURL: ../schemas/1val1vExprRefbnode1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcd.ttl + node: http://a.example/s1 + + - name: "1val1vExprRefbnode1_pass-lit-equal" + status: conformant + trait: [ValueReference, LengthFacet] + comment: "_:vc1 = LITERAL MINLENGTH 5 { @_:vc1 } on { \"abcde\" }" + approval: Approved + schemaURL: ../schemas/1val1vExprRefbnode1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcde.ttl + node: http://a.example/s1 + + ### } value reference + + ### AND valueExpr + ### AND valueExpr { + - name: "1dotShapeAND1dot3X_pass" + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " { . } AND { . } AND { . } on { 'X'; 'X'; 'X' }" + approval: Approved + schemaURL: ../schemas/1dotShapeAND1dot3X.shex + shape: http://a.example/S1 + dataURL: In1_Ipx_LXX3.ttl + node: http://a.example/n1 + + - name: "1dotShapeAND1dot3X_fail" + status: nonconformant + trait: [OrValueExpression, ValueReference] + comment: " { . } AND { . } AND { . } on { , , . \"X\" . \"X\" . \"X\" }" + approval: Approved + schemaURL: ../schemas/1dotShapeAND1dot3X.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ipx_LXX3.ttl + node: http://a.example/n2 + + - name: "1dotRefAND3_failAll" + status: nonconformant + trait: [OrValueExpression, ValueReference] + comment: " { @ AND @ AND @ } { . } { . } { . } on { }" + approval: Approved + schemaURL: ../schemas/1dotRefAND3.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.ttl + node: http://a.example/n1 + + - name: "1dotRefAND3_failShape2Shape3" + status: nonconformant + trait: [OrValueExpression, ValueReference] + comment: " { @ AND @ AND @ } { . } { . } { . } on { . \"X\" }" + approval: Approved + schemaURL: ../schemas/1dotRefAND3.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1dotRefAND3_failShape1Shape3" + status: nonconformant + trait: [OrValueExpression, ValueReference] + comment: " { @ AND @ AND @ } { . } { . } { . } on { . \"X\" }" + approval: Approved + schemaURL: ../schemas/1dotRefAND3.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In3.In3_Ip3_LX.ttl + node: http://a.example/n1 + + - name: "1dotRefAND3_failShape1Shape2" + status: nonconformant + trait: [OrValueExpression, ValueReference] + comment: " { @ AND @ AND @ } { . } { . } { . } on { . \"X\" }" + approval: Approved + schemaURL: ../schemas/1dotRefAND3.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In4.In4_Ip4_LX.ttl + node: http://a.example/n1 + + - name: "1dotRefAND3_passShape1Shape2Shape3" + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " { @ AND @ AND @ } { . } { . } { . } on { , , . \"X\" . \"X\" . \"X\" }" + approval: Approved + schemaURL: ../schemas/1dotRefAND3.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ipx_LXX3.ttl + node: http://a.example/n1 + + - name: "1val1vExpr1AND1AND1Ref3_pass" + status: conformant + trait: [AndValueExpression, ValueReference] + comment: " = ... = ... { @ AND ... @ } on { 'abab' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1AND1AND1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labab.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1AND1AND1Ref3_failvc1" + status: nonconformant + trait: [AndValueExpression, ValueReference] + comment: " = ... = ... { @ AND ... @ } on { 'ab' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1AND1AND1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1AND1AND1Ref3_failvc2" + status: nonconformant + trait: [AndValueExpression, ValueReference] + comment: " = ... = ... { @ AND ... @ } on { 'ababab' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1AND1AND1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lababab.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1AND1AND1Ref3_failvc3" + status: nonconformant + trait: [AndValueExpression, ValueReference] + comment: " = ... = ... { @ AND ... @ } on { 'baba' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1AND1AND1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lbaba.ttl + node: http://a.example/s1 + + - name: "1val1vExprRefAND3_pass" + status: conformant + trait: [AndValueExpression, ValueReference] + comment: " = ... = ... = @ AND ... @ { @ } on { 'abab' }" + approval: Approved + schemaURL: ../schemas/1val1vExprRefAND3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labab.ttl + node: http://a.example/s1 + + - name: "1val1vExprRefAND3_failvc3" + status: nonconformant + trait: [AndValueExpression, ValueReference] + comment: " = ... = ... = @ AND ... @ { @ } on { 'baba' }" + approval: Approved + schemaURL: ../schemas/1val1vExprRefAND3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lbaba.ttl + node: http://a.example/s1 + + - name: "1val1vExprRefAND3_failvc2" + status: nonconformant + trait: [AndValueExpression, ValueReference] + comment: " = ... = ... = @ AND ... @ { @ } on { 'ababab' }" + approval: Approved + schemaURL: ../schemas/1val1vExprRefAND3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lababab.ttl + node: http://a.example/s1 + + - name: "1val1vExprRefAND3_failvc1" + status: nonconformant + trait: [AndValueExpression, ValueReference] + comment: " = ... = ... = @ AND ... @ { @ } on { 'ab' }" + approval: Approved + schemaURL: ../schemas/1val1vExprRefAND3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1val1vExprAND3_pass" + status: conformant + trait: [AndValueExpression] + comment: " { MINLENGTH 4 AND MAXLENGTH 5 AND ~ '(ab)+' } on { 'abab' }" + approval: Approved + schemaURL: ../schemas/1val1vExprAND3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labab.ttl + node: http://a.example/s1 + + - name: "1val1vExprAND3_failvc1" + status: nonconformant + trait: [AndValueExpression] + comment: " { MINLENGTH 4 AND MAXLENGTH 5 AND ~ '(ab)+' } on { 'ab' }" + approval: Approved + schemaURL: ../schemas/1val1vExprAND3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1val1vExprAND3_failvc2" + status: nonconformant + trait: [AndValueExpression] + comment: " { MINLENGTH 4 AND MAXLENGTH 5 AND ~ '(ab)+' } on { 'ababab' }" + approval: Approved + schemaURL: ../schemas/1val1vExprAND3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lababab.ttl + node: http://a.example/s1 + + - name: "1val1vExprAND3_failvc3" + status: nonconformant + trait: [AndValueExpression] + comment: " { MINLENGTH 4 AND MAXLENGTH 5 AND ~ '(ab)+' } on { 'baba' }" + approval: Approved + schemaURL: ../schemas/1val1vExprAND3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lbaba.ttl + node: http://a.example/s1 + + ### } AND valueExpr + + ### OR valueExpr + ### OR valueExpr { + - name: refBNodeORrefIRI_ReflexiveIRI + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " { BNODE @ OR MINLENGTH 20 @ } on { }" + approval: Approved + schemaURL: ../schemas/1bnodeRefORRefMinlength.shex + shape: http://a.example/S1 + dataURL: In1a_Ip1_In1a.ttl + node: http://a.example/n1a + + - name: refBNodeORrefIRI_ReflexiveShortIRI + status: nonconformant + trait: [OrValueExpression, ValueReference] + comment: " { BNODE @ OR MINLENGTH 20 @ } on { }" + approval: Approved + schemaURL: ../schemas/1bnodeRefORRefMinlength.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In1.ttl + node: http://a.example/n1 + + - name: refBNodeORrefIRI_IntoReflexiveIRI + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " { BNODE @ OR MINLENGTH 20 @ } on { . }" + approval: Approved + schemaURL: ../schemas/1bnodeRefORRefMinlength.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2a.In2a_Ip1_In2a.ttl + node: http://a.example/n1 + + - name: refBNodeORrefIRI_IntoReflexiveBNode + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " { BNODE @ OR MINLENGTH 20 @ } on { _:n2 . _:n2 _:n2 }" + approval: Approved + schemaURL: ../schemas/1bnodeRefORRefMinlength.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_Bn2.Bn2_Ip1_Bn2.ttl + node: http://a.example/n1 + + - name: refBNodeORrefIRI_CyclicIRI_IRI + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " { BNODE @ OR MINLENGTH 20 @ } on { . }" + approval: Approved + schemaURL: ../schemas/1bnodeRefORRefMinlength.shex + shape: http://a.example/S1 + dataURL: In1a_Ip1_In2a.In2a_Ip1_In1a.ttl + node: http://a.example/n1a + + - name: refBNodeORrefIRI_CyclicIRI_BNode + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " { BNODE @ OR MINLENGTH 20 @ } on { _:n2 . _:n2 }" + approval: Approved + schemaURL: ../schemas/1bnodeRefORRefMinlength.shex + shape: http://a.example/S1 + dataURL: In1a_Ip1_Bn2.Bn2_Ip1_In1a.ttl + node: http://a.example/n1a + + - name: refBNodeORrefIRI_CyclicIRI_ShortIRI + status: nonconformant + trait: [OrValueExpression, ValueReference] + comment: " { BNODE @ OR MINLENGTH 20 @ } on { . }" + approval: Approved + schemaURL: ../schemas/1bnodeRefORRefMinlength.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2a.In2a_Ip1_In1.ttl + node: http://a.example/n1 + + - name: "1dotRefOR3_fail" + status: nonconformant + trait: [OrValueExpression, ValueReference] + comment: " { @ OR @ OR @ } { . } { . } { . } on { }" + approval: Approved + schemaURL: ../schemas/1dotRefOR3.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.ttl + node: http://a.example/n1 + + - name: "1dotRefOR3_passShape1" + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " { @ OR @ OR @ } { . } { . } { . } on { . \"X\" }" + approval: Approved + schemaURL: ../schemas/1dotRefOR3.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1dotRefOR3_passShape2" + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " { @ OR @ OR @ } { . } { . } { . } on { . \"X\" }" + approval: Approved + schemaURL: ../schemas/1dotRefOR3.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In3.In3_Ip3_LX.ttl + node: http://a.example/n1 + + - name: "1dotRefOR3_passShape3" + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " { @ OR @ OR @ } { . } { . } { . } on { . \"X\" }" + approval: Approved + schemaURL: ../schemas/1dotRefOR3.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In4.In4_Ip4_LX.ttl + node: http://a.example/n1 + + - name: "1dotRefOR3_passShape1Shape2Shape3" + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " { @ OR @ OR @ } { . } { . } { . } on { , , . \"X\" . \"X\" . \"X\" }" + approval: Approved + schemaURL: ../schemas/1dotRefOR3.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ipx_LXX3.ttl + node: http://a.example/n1 + + - name: "1val1vExpr1OR1OR1Ref3_fail" + status: nonconformant + trait: [OrValueExpression, ValueReference] + comment: " = ... = ... { @ OR ... @ } on { 'a' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1OR1OR1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1OR1OR1Ref3_passvc1" + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " = ... = ... { @ OR ... @ } on { 'ab' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1OR1OR1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1OR1OR1Ref3_passvc2" + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " = ... = ... { @ OR ... @ } on { 'cd' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1OR1OR1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lcd.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1OR1OR1Ref3_passvc3" + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " = ... = ... { @ OR ... @ } on { 'ef' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1OR1OR1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lef.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1OR1OR1Ref3_passvc1vc2vc3" + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " = ... = ... { @ OR ... @ } on { 'abcdef' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1OR1OR1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcdef.ttl + node: http://a.example/s1 + + - name: "1val1vExprRefOR3_passvc1vc2vc3" + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " = ... = ... = @ OR ... @ { @ } on { 'abcdef' }" + approval: Approved + # !! ShapeOrResults with no solutions. + schemaURL: ../schemas/1val1vExprRefOR3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcdef.ttl + node: http://a.example/s1 + + - name: "1val1vExprRefOR3_passvc3" + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " = ... = ... = @ OR ... @ { @ } on { 'ef' }" + approval: Approved + # !! ShapeOrResults with no solutions. + schemaURL: ../schemas/1val1vExprRefOR3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lef.ttl + node: http://a.example/s1 + + - name: "1val1vExprRefOR3_passvc2" + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " = ... = ... = @ OR ... @ { @ } on { 'cd' }" + approval: Approved + # !! ShapeOrResults with no solutions. + schemaURL: ../schemas/1val1vExprRefOR3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lcd.ttl + node: http://a.example/s1 + + - name: "1val1vExprRefOR3_passvc1" + status: conformant + trait: [OrValueExpression, ValueReference] + comment: " = ... = ... = @ OR ... @ { @ } on { 'ab' }" + approval: Approved + # !! ShapeOrResults with no solutions. + schemaURL: ../schemas/1val1vExprRefOR3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1val1vExprRefOR3_fail" + status: nonconformant + trait: [OrValueExpression, ValueReference] + comment: " = ... = ... = @ OR ... @ { @ } on { 'a' }" + approval: Approved + schemaURL: ../schemas/1val1vExprRefOR3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La.ttl + node: http://a.example/s1 + + - name: "1val1vExprOR3_fail" + status: nonconformant + trait: [OrValueExpression] + comment: " { /^ab/ OR /cd/ OR /ef$/ } on { 'a' }" + approval: Approved + schemaURL: ../schemas/1val1vExprOR3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La.ttl + node: http://a.example/s1 + + - name: "1val1vExprOR3_passvc1" + status: conformant + trait: [OrValueExpression] + comment: " { /^ab/ OR /cd/ OR /ef$/ } on { 'ab' }" + approval: Approved + schemaURL: ../schemas/1val1vExprOR3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + - name: "1val1vExprOR3_passvc2" + status: conformant + trait: [OrValueExpression] + comment: " { /^ab/ OR /cd/ OR /ef$/ } on { 'cd' }" + approval: Approved + schemaURL: ../schemas/1val1vExprOR3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lcd.ttl + node: http://a.example/s1 + + - name: "1val1vExprOR3_passvc3" + status: conformant + trait: [OrValueExpression] + comment: " { /^ab/ OR /cd/ OR /ef$/ } on { 'ef' }" + approval: Approved + schemaURL: ../schemas/1val1vExprOR3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lef.ttl + node: http://a.example/s1 + + - name: "1val1vExprOR3_passvc1vc2vc3" + status: conformant + trait: [OrValueExpression] + comment: " { /^ab/ OR /cd/ OR /ef$/ } on { 'abcdef' }" + approval: Approved + schemaURL: ../schemas/1val1vExprOR3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcdef.ttl + node: http://a.example/s1 + + ### } OR valueExpr + + ### NOT valueExpr + ### NOT valueExpr { + - name: "1NOTIRI_passLv" + status: conformant + trait: [TriplePattern] + comment: " { NOT IRI } on { 'v' }" + approval: Approved + schemaURL: ../schemas/1NOTIRI.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv.ttl + node: http://a.example/s1 + + - name: "1NOTIRI_failIo1" + status: nonconformant + trait: [TriplePattern] + comment: " { NOT IRI } on { }" + approval: Approved + schemaURL: ../schemas/1NOTIRI.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1NOTIRI_failempty" + status: nonconformant + trait: [TriplePattern] + comment: " { NOT IRI } on { }" + approval: Approved + schemaURL: ../schemas/1NOTIRI.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + + - name: "1NOTNOTIRI_failLv" + status: nonconformant + trait: [TriplePattern] + comment: " { NOT(NOT IRI) } on { 'v' }" + approval: Approved + schemaURL: ../schemas/1NOTNOTIRI.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv.ttl + node: http://a.example/s1 + + - name: "1NOTNOTIRI_passIo1" + status: conformant + trait: [TriplePattern] + comment: " { NOT(NOT IRI) } on { }" + approval: Approved + schemaURL: ../schemas/1NOTNOTIRI.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1NOTvs_failIv1" + status: nonconformant + trait: [ValueSet] + comment: " { NOT [ ] } on { }" + approval: Approved + schemaURL: ../schemas/1NOTvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1NOTvs_passIo1" + status: conformant + trait: [TriplePattern] + comment: " { NOT [ ] } on { }" + approval: Approved + schemaURL: ../schemas/1NOTvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1NOTvs_failempty" + status: nonconformant + trait: [TriplePattern] + comment: " { NOT [ ] } on { }" + approval: Approved + schemaURL: ../schemas/1NOTvs.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + + - name: "1NOTNOTvs_passIv1" + status: conformant + trait: [ValueSet] + comment: " { NOT(NOT []) } on { }" + approval: Approved + schemaURL: ../schemas/1NOTNOTvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1NOTNOTvs_failIo1" + status: nonconformant + trait: [TriplePattern] + comment: " { NOT(NOT []) } on { }" + approval: Approved + schemaURL: ../schemas/1NOTNOTvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1NOTdot_failIv1" + status: nonconformant + trait: [ValueSet] + comment: " { NOT . } on { }" + approval: Approved + schemaURL: ../schemas/1NOTdot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1NOTdot_failIo1" + status: nonconformant + trait: [TriplePattern] + comment: " { NOT . } on { }" + approval: Approved + schemaURL: ../schemas/1NOTdot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1NOTdot_failempty" + status: nonconformant + trait: [Wildcard] + comment: " { NOT . } on { }" + approval: Approved + schemaURL: ../schemas/1NOTdot.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + + - name: "1NOTNOTdot_passIv1" + status: conformant + trait: [ValueSet] + comment: " { NOT(NOT .) } on { }" + approval: Approved + schemaURL: ../schemas/1NOTNOTdot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1NOTNOTdot_passIo1" + status: conformant + trait: [TriplePattern] + comment: " { NOT(NOT .) } on { }" + approval: Approved + schemaURL: ../schemas/1NOTNOTdot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1_NOTliteral_ANDvs_passIv1" + status: conformant + trait: [ValueSet] + comment: " { (NOT LITERAL) AND [ ] } on { }" + approval: Approved + schemaURL: ../schemas/1_NOTliteral_ANDvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1_NOTliteral_ANDvs_failIo1" + status: nonconformant + trait: [TriplePattern] + comment: " { (NOT LITERAL) AND [ ] } on { }" + approval: Approved + schemaURL: ../schemas/1_NOTliteral_ANDvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1_NOTliteral_ANDvs_failLv" + status: nonconformant + trait: [TriplePattern] + comment: " { (NOT LITERAL) AND [ ] } on { 'v' }" + approval: Approved + schemaURL: ../schemas/1_NOTliteral_ANDvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv.ttl + node: http://a.example/s1 + + - name: "1NOT_literalANDvs__passIv1" + status: conformant + trait: [ValueSet] + comment: " { NOT (LITERAL AND [ ]) } on { }" + approval: Approved + schemaURL: ../schemas/1NOT_literalANDvs_.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1NOT_literalANDvs__passLv" + status: conformant + trait: [TriplePattern] + comment: " { NOT (LITERAL AND [ ]) } on { 'v' }" + approval: Approved + schemaURL: ../schemas/1NOT_literalANDvs_.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv.ttl + node: http://a.example/s1 + + - name: "1NOTliteralANDvs_passIv1" + status: conformant + trait: [ValueSet] + comment: " { NOT LITERAL AND [ ] } on { }" + approval: Approved + schemaURL: ../schemas/1NOTliteralANDvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1NOTliteralANDvs_failIo1" + status: nonconformant + trait: [TriplePattern] + comment: " { NOT LITERAL AND [ ] } on { }" + approval: Approved + schemaURL: ../schemas/1NOTliteralANDvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1NOTliteralANDvs_failLv" + status: nonconformant + trait: [TriplePattern] + comment: " { NOT LITERAL AND [ ] } on { 'v' }" + approval: Approved + schemaURL: ../schemas/1NOTliteralANDvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv.ttl + node: http://a.example/s1 + + - name: "1_NOTvs_ANDvs_failIv1" + status: nonconformant + trait: [ValueSet] + comment: " { (NOT []) AND [] } on { }" + approval: Approved + schemaURL: ../schemas/1_NOTvs_ANDvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1_NOTvs_ANDvs_passIv2" + status: conformant + trait: [ValueSet] + comment: " { (NOT []) AND [] } on { }" + approval: Approved + schemaURL: ../schemas/1_NOTvs_ANDvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv2.ttl + node: http://a.example/s1 + + - name: "1_NOTvs_ANDvs_failIv3" + status: nonconformant + trait: [ValueSet] + comment: " { (NOT []) AND [] } on { }" + approval: Approved + schemaURL: ../schemas/1_NOTvs_ANDvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv3.ttl + node: http://a.example/s1 + + - name: "1NOT_vsANDvs__passIv1" + status: conformant + trait: [ValueSet] + comment: " { NOT ([] AND []) } on { }" + approval: Approved + schemaURL: ../schemas/1NOT_vsANDvs_.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1NOT_vsANDvs__passIv2" + status: conformant + trait: [ValueSet] + comment: " { NOT ([] AND []) } on { }" + approval: Approved + schemaURL: ../schemas/1NOT_vsANDvs_.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv2.ttl + node: http://a.example/s1 + + - name: "1NOT_vsANDvs__passIv3" + status: conformant + trait: [ValueSet] + comment: " { NOT ([] AND []) } on { }" + approval: Approved + schemaURL: ../schemas/1NOT_vsANDvs_.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv3.ttl + node: http://a.example/s1 + + - name: "1NOTvsANDvs_failIv1" + status: nonconformant + trait: [ValueSet] + comment: " { NOT [] AND [] } on { }" + approval: Approved + schemaURL: ../schemas/1NOTvsANDvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1NOTvsANDvs_passIv2" + status: conformant + trait: [ValueSet] + comment: " { NOT [] AND [] } on { }" + approval: Approved + schemaURL: ../schemas/1NOTvsANDvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv2.ttl + node: http://a.example/s1 + + - name: "1NOTvsANDvs_failIv3" + status: nonconformant + trait: [ValueSet] + comment: " { NOT [] AND [] } on { }" + approval: Approved + schemaURL: ../schemas/1NOTvsANDvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv3.ttl + node: http://a.example/s1 + + - name: "1_NOTliteral_ORvs_passIv1" + status: conformant + trait: [ValueSet] + comment: " { (NOT LITERAL) OR [ ] } on { }" + approval: Approved + schemaURL: ../schemas/1_NOTliteral_ORvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1_NOTliteral_ORvs_passIo1" + status: conformant + trait: [TriplePattern] + comment: " { (NOT LITERAL) OR [ ] } on { }" + approval: Approved + schemaURL: ../schemas/1_NOTliteral_ORvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1_NOTliteral_ORvs_failLv" + status: nonconformant + trait: [TriplePattern] + comment: " { (NOT LITERAL) OR [ ] } on { 'v' }" + approval: Approved + schemaURL: ../schemas/1_NOTliteral_ORvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv.ttl + node: http://a.example/s1 + + - name: "1NOT_literalORvs__failIv1" + status: nonconformant + trait: [ValueSet] + comment: " { NOT (LITERAL OR [ ]) } on { }" + approval: Approved + schemaURL: ../schemas/1NOT_literalORvs_.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1NOT_literalORvs__passIo1" + status: conformant + trait: [TriplePattern] + comment: " { NOT (LITERAL OR [ ]) } on { }" + approval: Approved + schemaURL: ../schemas/1NOT_literalORvs_.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1NOT_literalORvs__failLv" + status: nonconformant + trait: [TriplePattern] + comment: " { NOT (LITERAL OR [ ]) } on { 'v' }" + approval: Approved + schemaURL: ../schemas/1NOT_literalORvs_.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv.ttl + node: http://a.example/s1 + + - name: "1NOTliteralORvs_passIv1" + status: conformant + trait: [ValueSet] + comment: " { NOT LITERAL OR [ ] } on { }" + approval: Approved + schemaURL: ../schemas/1NOTliteralORvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1NOTliteralORvs_passIo1" + status: conformant + trait: [TriplePattern] + comment: " { NOT LITERAL OR [ ] } on { }" + approval: Approved + schemaURL: ../schemas/1NOTliteralORvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1NOTliteralORvs_failLv" + status: nonconformant + trait: [TriplePattern] + comment: " { NOT LITERAL OR [ ] } on { 'v' }" + approval: Approved + schemaURL: ../schemas/1NOTliteralORvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lv.ttl + node: http://a.example/s1 + + - name: "1_NOTvs_ORvs_failIv1" + status: nonconformant + trait: [ValueSet] + comment: " { (NOT []) OR [] } on { }" + approval: Approved + schemaURL: ../schemas/1_NOTvs_ORvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1_NOTvs_ORvs_passIv2" + status: conformant + trait: [ValueSet] + comment: " { (NOT []) OR [] } on { }" + approval: Approved + schemaURL: ../schemas/1_NOTvs_ORvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv2.ttl + node: http://a.example/s1 + + - name: "1_NOTvs_ORvs_passIv3" + status: conformant + trait: [ValueSet] + comment: " { (NOT []) OR [] } on { }" + approval: Approved + schemaURL: ../schemas/1_NOTvs_ORvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv3.ttl + node: http://a.example/s1 + + - name: "1NOT_vsORvs__failIv1" + status: nonconformant + trait: [ValueSet] + comment: " { NOT ([] OR []) } on { }" + approval: Approved + schemaURL: ../schemas/1NOT_vsORvs_.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1NOT_vsORvs__failIv2" + status: nonconformant + trait: [ValueSet] + comment: " { NOT ([] OR []) } on { }" + approval: Approved + schemaURL: ../schemas/1NOT_vsORvs_.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv2.ttl + node: http://a.example/s1 + + - name: "1NOT_vsORvs__passIv3" + status: conformant + trait: [ValueSet] + comment: " { NOT ([] OR []) } on { }" + approval: Approved + schemaURL: ../schemas/1NOT_vsORvs_.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv3.ttl + node: http://a.example/s1 + + - name: "1NOTvsORvs_failIv1" + status: nonconformant + trait: [ValueSet] + comment: " { NOT [] OR [] } on { }" + approval: Approved + schemaURL: ../schemas/1NOTvsORvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: "1NOTvsORvs_passIv2" + status: conformant + trait: [ValueSet] + comment: " { NOT [] OR [] } on { }" + approval: Approved + schemaURL: ../schemas/1NOTvsORvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv2.ttl + node: http://a.example/s1 + + - name: "1NOTvsORvs_passIv3" + status: conformant + trait: [ValueSet] + comment: " { NOT [] OR [] } on { }" + approval: Approved + schemaURL: ../schemas/1NOTvsORvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv3.ttl + node: http://a.example/s1 + + - name: NOT1NOTvs_passIv1 + status: conformant + trait: [ValueSet] + comment: " NOT { NOT [ ] } on { }" + approval: Approved + schemaURL: ../schemas/NOT1NOTvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/s1 + + - name: NOT1NOTvs_passIv2 + status: conformant + trait: [ValueSet] + comment: " NOT { NOT [ ] } on { }" + approval: Approved + schemaURL: ../schemas/NOT1NOTvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv2.ttl + node: http://a.example/s1 + + - name: NOT1NOTvs_failIv3 + status: nonconformant + trait: [ValueSet] + comment: " NOT { NOT [ ] } on { }" + approval: Approved + schemaURL: ../schemas/NOT1NOTvs.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Iv3.ttl + node: http://a.example/s1 + + ### } NOT valueExpr + + ### AND OR valueExpr + ### AND OR valueExpr { + - name: "1val1vExpr1AND1OR1Ref3_pass-vc1vc2" + status: conformant + trait: [AndValueExpression, ValueReference] + comment: " ... ... { @ AND @ OR @ } on { 'abcd' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1AND1OR1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcd.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1AND1OR1Ref3_pass-vc1vc2vc3" + status: conformant + trait: [AndValueExpression, ValueReference] + comment: " ... ... { @ AND @ OR @ } on { 'abab' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1AND1OR1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labab.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1AND1OR1Ref3_pass-vc1vc3" + status: conformant + trait: [AndValueExpression, ValueReference] + comment: " ... ... { @ AND @ OR @ } on { 'ababab' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1AND1OR1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lababab.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1AND1OR1Ref3_failvc1vc3" + status: nonconformant + trait: [AndValueExpression, ValueReference] + comment: " ... ... { @ AND ... @ } on { 'abc' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1AND1OR1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labc.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1AND1OR1Ref3_failvc2vc3" + status: nonconformant + trait: [AndValueExpression, ValueReference] + comment: " ... ... { @ AND ... @ } on { 'abcdef' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1AND1OR1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcdef.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1AND1OR1Ref3_failvc1vc2vc3" + status: nonconformant + trait: [AndValueExpression, ValueReference] + comment: " ... ... { @ AND ... @ } on { 'a' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1AND1OR1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La.ttl + node: http://a.example/s1 + + # >5 | ( <3 & /^(ab)*$/ ) + # 1 abcdef + # 13 ababab + # 23 ab + - name: "1val1vExpr1OR1AND1Ref3_pass-vc1" + status: conformant + trait: [AndValueExpression, ValueReference] + comment: " ... ... = @ AND @ OR @ { @ } on { 'abcdef' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1OR1AND1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcdef.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1OR1AND1Ref3_pass-vc1vc3" + status: conformant + trait: [AndValueExpression, ValueReference] + comment: " ... ... = @ AND @ OR @ { @ } on { 'ababab' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1OR1AND1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lababab.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1OR1AND1Ref3_pass-vc2vc3" + status: conformant + trait: [AndValueExpression, ValueReference] + comment: " ... ... = @ AND @ OR @ { @ } on { 'ab' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1OR1AND1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lab.ttl + node: http://a.example/s1 + + # >5 | ( <3 & /^(ab)*$/ ) + # !1!2 abab + # !1!3 cd + # !1!2!3 abcd + - name: "1val1vExpr1OR1AND1Ref3_failvc1vc2" + status: nonconformant + trait: [AndValueExpression, ValueReference] + comment: " ... ... = @ AND @ OR @ { @ } on { 'abab' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1OR1AND1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labab.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1OR1AND1Ref3_failvc1vc3" + status: nonconformant + trait: [AndValueExpression, ValueReference] + comment: " ... ... = @ AND @ OR @ { @ } on { 'cd' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1OR1AND1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Lcd.ttl + node: http://a.example/s1 + + - name: "1val1vExpr1OR1AND1Ref3_failvc1vc2vc3" + status: nonconformant + trait: [AndValueExpression, ValueReference] + comment: " ... ... { @ OR @ AND @ } on { 'abcd' }" + approval: Approved + schemaURL: ../schemas/1val1vExpr1OR1AND1Ref3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcd.ttl + node: http://a.example/s1 + + ### } AND OR valueExpr + ## } value expressions + + ## repetitions + ## repetitions { + + # sht:RepeatedGroup e.g. { (:fname .; :lname .){2} } + - name: open3Onedotclosecard2_fail-p1 + status: nonconformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2} } / { \"p1-0\" }" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard2.shex + shape: http://a.example/S1 + dataURL: p1.ttl + node: x + + - name: open3Onedotclosecard2_pass-p1X2 + status: conformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2} } / { \"p1-n\" }X2" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard2.shex + shape: http://a.example/S1 + dataURL: p1X2.ttl + node: x + # + - name: open3Onedotclosecard2_fail-p1X3 + status: nonconformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2} } / { \"p1-n\" }X3" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard2.shex + shape: http://a.example/S1 + dataURL: p1X3.ttl + node: x + + - name: open3Onedotclosecard2_fail-p1X4 + status: nonconformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2} } / { \"p1-n\" }X4" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard2.shex + shape: http://a.example/S1 + dataURL: p1X4.ttl + node: x + + - name: open3Onedotclosecard2_pass-p1p2 + status: conformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2} } / { \"p1-0\"; \"p2-0\" }" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard2.shex + shape: http://a.example/S1 + dataURL: p1p2.ttl + node: x + + - name: open3Onedotclosecard2_pass-p1p3 + status: conformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2} } / { \"p1-0\"; \"p3-0\" }" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard2.shex + shape: http://a.example/S1 + dataURL: p1p3.ttl + node: x + + - name: open3Onedotclosecard2_pass-p2p3 + status: conformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2} } / { \"p2-0\"; \"p3-0\" }" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard2.shex + shape: http://a.example/S1 + dataURL: p2p3.ttl + node: x + + - name: open3Onedotclosecard2_fail-p1p2p3 + status: nonconformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2} } / { \"p1-0\"; \"p2-0\"; \"p3-0\" }" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard2.shex + shape: http://a.example/S1 + dataURL: p1p2p3.ttl + node: x + # + - name: open3Onedotclosecard23_fail-p1 + status: nonconformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2,3} } / { \"p1-0\" }" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard23.shex + shape: http://a.example/S1 + dataURL: p1.ttl + node: x + + - name: open3Onedotclosecard23_pass-p1X2 + status: conformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2,3} } / { \"p1-n\" }X2" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard23.shex + shape: http://a.example/S1 + dataURL: p1X2.ttl + node: x + # + - name: open3Onedotclosecard23_pass-p1X3 + status: conformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2,3} } / { \"p1-n\" }X3" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard23.shex + shape: http://a.example/S1 + dataURL: p1X3.ttl + node: x + # + - name: open3Onedotclosecard23_fail-p1X4 + status: nonconformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2,3} } / { \"p1-n\" }X4" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard23.shex + shape: http://a.example/S1 + dataURL: p1X4.ttl + node: x + + - name: open3Onedotclosecard23_pass-p1p2 + status: conformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2,3} } / { \"p1-0\"; \"p2-0\" }" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard23.shex + shape: http://a.example/S1 + dataURL: p1p2.ttl + node: x + + - name: open3Onedotclosecard23_pass-p1p3 + status: conformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2,3} } / { \"p1-0\"; \"p3-0\" }" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard23.shex + shape: http://a.example/S1 + dataURL: p1p3.ttl + node: x + + - name: open3Onedotclosecard23_pass-p2p3 + status: conformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2,3} } / { \"p2-0\"; \"p3-0\" }" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard23.shex + shape: http://a.example/S1 + dataURL: p2p3.ttl + node: x + + - name: open3Onedotclosecard23_pass-p1p2p3 + status: conformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| . ){2,3} } / { \"p1-0\"; \"p2-0\"; \"p3-0\" }" + approval: Approved + schemaURL: ../schemas/open3Onedotclosecard23.shex + shape: http://a.example/S1 + dataURL: p1p2p3.ttl + node: x + + - name: open4Onedotclosecard23_fail-p1p2p3p4 + status: nonconformant + trait: [EachOf, RepeatedOneOf] + comment: " { ( .| .| .| . ){2,3} } / { \"p1-n\"; \"p2-n\"; \"p3-n\" ; \"p4-n\" }" + approval: Approved + schemaURL: ../schemas/open4Onedotclosecard23.shex + shape: http://a.example/S1 + dataURL: p1p2p3p4.ttl + node: x + # + - name: open3Eachdotclosecard23_pass-p1p2p3X3 + status: conformant + trait: [EachOf, RepeatedGroup] + comment: " { ( .; .; . ){2,3} } / { \"p1-n\"; \"p2-n\"; \"p3-n\" }X3" + approval: Approved + schemaURL: ../schemas/open3Eachdotclosecard23.shex + shape: http://a.example/S1 + dataURL: p1p2p3X3.ttl + node: x + + ## } repetitions + + ## shape expressions + ### AND shapeExpr + ## shape expressions { + ### AND shapeExpr { + - name: "1val1vShapeANDRef3_pass" + status: conformant + trait: [AndShapeShapeession] + comment: " { minlength 4 } AND { maxlength 5 } AND { pattern '(ab)+' } on { 'abab' }" + approval: Approved + schemaURL: ../schemas/1val1vShapeANDRef3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labab.ttl + node: http://a.example/s1 + + ### } AND shapeExpr + ## } shape expressions + + ## closed + ## closed { + - name: "1dotClosed_pass" + status: conformant + trait: [Closed] + comment: " CLOSED { . } on { }" + approval: Approved + schemaURL: ../schemas/1dotClosed.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotClosed_fail_lower" + status: nonconformant + trait: [Closed] + comment: " CLOSED { . } on { ; }" + approval: Approved + schemaURL: ../schemas/1dotClosed.shex + shape: http://a.example/S1 + dataURL: Is1_Ip0_Io0;Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotClosed_fail_higher" + status: nonconformant + trait: [Closed] + comment: " CLOSED { . } on { ; }" + approval: Approved + schemaURL: ../schemas/1dotClosed.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1;Ip2_Io2.ttl + node: http://a.example/s1 + + - name: FocusIRI2EachBnodeNested2EachIRIRef_pass + status: conformant + trait: [Closed] + comment: " IRI PATTERN '^https?://' { ; BNODE { LITERAL ; IRI PATTERN '^https://' @? } AND CLOSED { . ; . } } on { 'ab'^^ ; [ 'ab' ; ex:n1 ] }" + approval: Approved + schemaURL: ../schemas/FocusIRI2EachBnodeNested2EachIRIRef.shex + shape: http://a.example/S1 + dataURL: FocusIRI2EachBnodeNested2EachIRIRef.ttl + node: http://a.example/n1 + + - name: FocusIRI2EachBnodeNested2EachIRIRef_fail + status: nonconformant + trait: [Closed] + comment: " IRI PATTERN '^https?://' { ; BNODE { LITERAL ; IRI PATTERN '^https://' @? } AND CLOSED { . ; . } } on { 'ab'^^ ; [ 'ab' ; ex:n1 ; 5 ] }" + approval: Approved + schemaURL: ../schemas/FocusIRI2EachBnodeNested2EachIRIRef.shex + shape: http://a.example/S1 + dataURL: FocusIRI2EachBnodeNested3EachIRIRef.ttl + node: http://a.example/n1 + + ## } closed + + ## extra + ## extra { + - name: "1val1IRIREFExtra1_pass-iri1" + status: conformant + trait: [Extra, IriEquivalence] + seeAlso: ["#1val1IRIREF_pass", "#1val1IRIREF_v2", "#1val1IRIREF_pass"] + comment: " EXTRA { [] } on { }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFExtra1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1val1IRIREFExtra1_pass-iri2" + status: conformant + trait: [Extra, IriEquivalence] + comment: " EXTRA { [] } on { , }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFExtra1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1,Io2.ttl + node: http://a.example/s1 + + - name: "1val1IRIREFExtra1Closed_pass-iri1" + status: conformant + trait: [VapidExtra, Extra] + comment: " EXTRA CLOSED { . } on { }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFExtra1Closed.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1val1IRIREFExtra1Closed_pass-iri2" + status: conformant + trait: [VapidExtra, Extra] + comment: " EXTRA CLOSED { . } on { , }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFExtra1Closed.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1,Io2.ttl + node: http://a.example/s1 + + - name: "1val1IRIREFExtra1Closed_fail-iri2_higher" + status: nonconformant + trait: [VapidExtra, Extra] + comment: " EXTRA CLOSED { . } on { , ; }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFExtra1Closed.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1,Io2;Ip2_Io2.ttl + node: http://a.example/s1 + + - name: "1val1IRIREFClosedExtra1_pass-iri1" + status: conformant + trait: [VapidExtra, Extra] + comment: " CLOSED EXTRA { . } on { }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFClosedExtra1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1val1IRIREFClosedExtra1_pass-iri2" + status: conformant + trait: [VapidExtra, Extra] + comment: " CLOSED EXTRA { . } on { , }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFClosedExtra1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1,Io2.ttl + node: http://a.example/s1 + + - name: "1val1IRIREFClosedExtra1_fail-iri2_higher" + status: nonconformant + trait: [VapidExtra, Extra] + comment: " CLOSED EXTRA { . } on { , ; }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFClosedExtra1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1,Io2;Ip2_Io2.ttl + node: http://a.example/s1 + + - name: "1val2IRIREFExtra1_fail-iri2" + status: nonconformant + trait: [Extra, ValueSet] + comment: " EXTRA { [ ] } on { , }" + approval: Approved + schemaURL: ../schemas/1val2IRIREFExtra1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1,Io2.ttl + node: http://a.example/s1 + + - name: "1val2IRIREFPlusExtra1_pass-iri2" + status: conformant + trait: [Extra, ValueSet] + comment: " EXTRA { [ ]+ } on { , }" + approval: Approved + schemaURL: ../schemas/1val2IRIREFPlusExtra1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1,Io2.ttl + node: http://a.example/s1 + + - name: "1val2IRIREFExtra1_pass-iri-bnode" + status: conformant + trait: [Extra, ValueSet] + comment: " EXTRA { [ ] } on { , _:o2 }" + approval: Approved + schemaURL: ../schemas/1val2IRIREFExtra1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1,Bo2.ttl + node: http://a.example/s1 + + - name: "1val1IRIREFExtra1p2_pass-iri1" + status: conformant + trait: [Extra, IriEquivalence] + seeAlso: ["#1val1IRIREF_pass", "#1val1IRIREF_v2", "#1val1IRIREF_pass"] + comment: " EXTRA { [] } on { }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFExtra1p2.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1val1IRIREFExtra1p2_fail-iri2" + status: nonconformant + trait: [Extra, IriEquivalence] + comment: " EXTRA { [] } on { , }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFExtra1p2.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1,Io2.ttl + node: http://a.example/s1 + + - name: "1dotOne2dotExtra-someOf_pass_p1p2p3" + status: nonconformant + trait: [OneOf, EachOf, Extra, MissedMatchables] + comment: ":S1 EXTRA {:p1 .|:p2 .; :p3 .} / { :s1 :p1 \"p1-0\"; :p2 \"p2-0\"; :p3 \"p3-0\" . }" + approval: Approved + schemaURL: ../schemas/1dotOne2dot.shex + shape: http://a.example/S1 + dataURL: p1p2p3.ttl + node: x + + - name: "1val1IRIREFExtra1One_pass-iri1" + status: conformant + trait: [Extra, IriEquivalence, EachOf] + seeAlso: ["#1val1IRIREF_pass", "#1val1IRIREF_v2", "#1val1IRIREF_pass"] + comment: " EXTRA { . | []; .? } on { }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFExtra1One.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1val1IRIREFExtra1One_pass-iri2" + status: conformant + trait: [Extra, IriEquivalence, EachOf] + comment: " EXTRA { . | []; .? } on { , }" + approval: Approved + schemaURL: ../schemas/1val1IRIREFExtra1One.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1,Io2.ttl + node: http://a.example/s1 + + - name: "1dotExtra1_pass-iri1" + status: conformant + trait: [VapidExtra, Extra] + comment: " EXTRA { . } on { }" + approval: Approved + schemaURL: ../schemas/1dotExtra1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotExtra1_fail-iri2" + status: nonconformant + trait: [VapidExtra, Extra] + comment: " EXTRA { . } on { , }" + approval: Approved + schemaURL: ../schemas/1dotExtra1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1,Io2.ttl + node: http://a.example/s1 + + - name: "3EachdotExtra3_pass-iri1" + status: conformant + trait: [Extra, IriEquivalence, EachOf] + comment: " EXTRA { []; []; [] } on { ; ; }" + approval: Approved + schemaURL: ../schemas/3EachdotExtra3.shex + shape: http://a.example/S1 + dataURL: Is_Ipn_IonX3.ttl + node: http://a.example/s + + - name: "3Eachdot3Extra_pass-iri1" + status: conformant + trait: [Extra, IriEquivalence, EachOf] + comment: " EXTRA EXTRA EXTRA { []; []; [] } on { ; ; }" + approval: Approved + schemaURL: ../schemas/3Eachdot3Extra.shex + shape: http://a.example/S1 + dataURL: Is_Ipn_IonX3.ttl + node: http://a.example/s + + - name: "3EachdotExtra3NLex_pass-iri1" + status: conformant + trait: [Extra, IriEquivalence, EachOf] + comment: "PREFIX ex: EXTRA ex:p1 ex:p2 ex:p3 { []; []; [] } on { ; ; }" + approval: Approved + schemaURL: ../schemas/3EachdotExtra3NLex.shex + shape: http://a.example/S1 + dataURL: Is_Ipn_IonX3.ttl + node: http://a.example/s + + - name: "3EachdotExtra3_pass-iri2" + status: conformant + trait: [Extra, IriEquivalence, EachOf] + comment: " EXTRA { []; []; [] } on { , ; , ; , }" + approval: Approved + schemaURL: ../schemas/3EachdotExtra3.shex + shape: http://a.example/S1 + dataURL: Is_Ipn_IonX3.Is_Ipn_IonaX3.ttl + node: http://a.example/s + + - name: "3Eachdot3Extra_pass-iri2" + status: conformant + trait: [Extra, IriEquivalence, EachOf] + comment: " EXTRA EXTRA EXTRA { []; []; [] } on { , ; , ; , }" + approval: Approved + schemaURL: ../schemas/3Eachdot3Extra.shex + shape: http://a.example/S1 + dataURL: Is_Ipn_IonX3.Is_Ipn_IonaX3.ttl + node: http://a.example/s + + - name: "3EachdotExtra3NLex_pass-iri2" + status: conformant + trait: [Extra, IriEquivalence, EachOf] + comment: "PREFIX ex: EXTRA ex:p1 ex:p2 ex:p3 { []; []; [] } on { , ; , ; , }" + approval: Approved + schemaURL: ../schemas/3EachdotExtra3NLex.shex + shape: http://a.example/S1 + dataURL: Is_Ipn_IonX3.Is_Ipn_IonaX3.ttl + node: http://a.example/s + + ## } extra + + ## start + ## start { + - name: startRefIRIREF_pass-noOthers + status: conformant + trait: [Start] + comment: "start= { . } on { }" + approval: Approved + schemaURL: ../schemas/startRefIRIREF.shex + # sht:shape ; + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: startRefIRIREF_pass-others_lexicallyEarlier + status: conformant + trait: [Start] + comment: "start= { . } on { ; }" + approval: Approved + schemaURL: ../schemas/startRefIRIREF.shex + # sht:shape ; + dataURL: Is1_Ip0_Io0;Ip1_Io1.ttl + node: http://a.example/s1 + + - name: startRefIRIREF_fail-missing + status: nonconformant + trait: [Start] + comment: "start= { . } on { }" + approval: Approved + schemaURL: ../schemas/startRefIRIREF.shex + # sht:shape ; + dataURL: Is1_Ip2_Io1.ttl + node: http://a.example/s1 + + - name: startRefbnode_pass-noOthers + status: conformant + trait: [Start] + comment: "start=_:S _:S { . } on { }" + approval: Approved + schemaURL: ../schemas/startRefbnode.shex + # sht:shape ; + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: startRefbnode_fail-missing + status: nonconformant + trait: [Start] + comment: "start=_:S _S { . } on { }" + approval: Approved + schemaURL: ../schemas/startRefbnode.shex + # sht:shape ; + dataURL: Is1_Ip2_Io1.ttl + node: http://a.example/s1 + + - name: startInline_pass-noOthers + status: conformant + trait: [Start] + comment: "start={ . } on { }" + approval: Approved + schemaURL: ../schemas/startInline.shex + # sht:shape ; + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: startEqualSpaceInline_pass-noOthers + status: conformant + trait: [Start] + comment: "start= { . } on { }" + approval: Approved + schemaURL: ../schemas/startEqualSpaceInline.shex + # sht:shape ; + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: startSpaceEqualInline_pass-noOthers + status: conformant + trait: [Start] + comment: "start ={ . } on { }" + approval: Approved + schemaURL: ../schemas/startSpaceEqualInline.shex + # sht:shape ; + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: startInline_fail-missing + status: nonconformant + trait: [Start] + comment: "start={ . } on { }" + approval: Approved + schemaURL: ../schemas/startInline.shex + # sht:shape ; + dataURL: Is1_Ip2_Io1.ttl + node: http://a.example/s1 + + ## } start + + ## include + ## include { + - name: "2EachInclude1_pass" + status: conformant + trait: [Include, EachOf] + comment: " { &; . } { . } on { \"X\" ; \"Y\" }" + approval: Approved + schemaURL: ../schemas/2EachInclude1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_LX.In1_Ip2_LY.ttl + node: http://a.example/n1 + + - name: "2EachInclude1-after_pass" + status: conformant + trait: [Include, EachOf] + comment: " { .; & } { . } on { \"X\" ; \"Y\" }" + approval: Approved + schemaURL: ../schemas/2EachInclude1-after.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_LX.In1_Ip2_LY.ttl + node: http://a.example/n1 + + - name: "2OneInclude1_pass" + status: conformant + trait: [Include, OneOf] + comment: " { & | . } { . } on { \"X\" }" + approval: Approved + schemaURL: ../schemas/2OneInclude1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_LX.ttl + node: http://a.example/n1 + + - name: "2OneInclude1-after_pass" + status: conformant + trait: [Include, OneOf] + comment: " { . | & } { . } on { \"X\" }" + approval: Approved + schemaURL: ../schemas/2OneInclude1-after.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_LX.ttl + node: http://a.example/n1 + + - name: openEachInclude1dotclosecardPlusc1IRI_pass-b1c1d1aI1 + status: conformant + trait: [Include, EachOf, NonDotCardinality] + comment: " { $ ( :b .; :c . ) } { ( &; :d . )+; :a IRI } on { :b \"1\" ; :c \"1\" ; :d \"1\" ; :a :o }" + approval: Approved + schemaURL: ../schemas/openEachInclude1dotclosecardPlusc1IRI.shex + shape: http://a.example/S + dataURL: b1c1d1aI1.ttl + node: x + + - name: openEachInclude1dotclosecardPlusc1IRI_pass-b2c2d2aI1 + status: conformant + trait: [Include, EachOf, NonDotCardinality] + comment: " { $ ( :b .; :c . ) } { ( &; :d . )+; :a IRI } on { :b \"1\", \"2\" ; :c \"1\", \"2\" ; :d \"1\", \"2\" ; :a :o }" + approval: Approved + schemaURL: ../schemas/openEachInclude1dotclosecardPlusc1IRI.shex + shape: http://a.example/S + dataURL: b2c2d2aI1.ttl + node: x + + - name: openEachInclude1dotclosecardPlusc1IRI_fail-b1c1d1a1 + status: nonconformant + trait: [Include, EachOf, NonDotCardinality] + comment: " { $ ( :b .; :c . ) } { ( &; :d . )+; :a IRI } on { :b \"1\" ; :c \"1\" ; :d \"1\" ; :a \"1\" }" + approval: Approved + schemaURL: ../schemas/openEachInclude1dotclosecardPlusc1IRI.shex + shape: http://a.example/S + dataURL: b1c1d1a1.ttl + node: x + + - name: openEachInclude1dotclosecardPlusc1IRI_fail-aI1 + status: nonconformant + trait: [Include, EachOf, NonDotCardinality] + comment: " { $ ( :b .; :c . ) } { ( &; :d . )+; :a IRI } on { :a :o }" + approval: Approved + schemaURL: ../schemas/openEachInclude1dotclosecardPlusc1IRI.shex + shape: http://a.example/S + dataURL: aI1.ttl + node: x + + - name: openOneInclude1dotclosecardPlusc1IRI_pass-d1aI1 + status: conformant + trait: [Include, OneOf, NonDotCardinality] + comment: " { $ ( :b .; :c . ) } { ( & | :d . )+; :a IRI } on { :d \"1\" ; :a :o }" + approval: Approved + schemaURL: ../schemas/openOneInclude1dotclosecardPlusc1IRI.shex + shape: http://a.example/S + dataURL: d1aI1.ttl + node: x + + - name: openOneInclude1dotclosecardPlusc1IRI_pass-b1c1d1aI1 + status: conformant + trait: [Include, OneOf, NonDotCardinality] + comment: " { $ ( :b .; :c . ) } { ( & | :d . )+; :a IRI } on { :b \"1\" ; :c \"1\" ; :d \"1\" ; :a :o }" + approval: Approved + schemaURL: ../schemas/openOneInclude1dotclosecardPlusc1IRI.shex + shape: http://a.example/S + dataURL: b1c1d1aI1.ttl + node: x + + - name: openOneInclude1dotclosecardPlusc1IRI_fail-d1a1 + status: nonconformant + trait: [Include, OneOf, NonDotCardinality] + comment: " { $ ( :b .; :c . ) } { ( & | :d . )+; :a IRI } on { :d \"1\" ; :a \"1\" }" + approval: Approved + schemaURL: ../schemas/openOneInclude1dotclosecardPlusc1IRI.shex + shape: http://a.example/S + dataURL: d1a1.ttl + node: x + + - name: openOneInclude1dotclosecardPlusc1IRI_fail-b1d1aI1 + status: nonconformant + trait: [Include, OneOf, NonDotCardinality] + comment: " { $ ( :b .; :c . ) } { ( & | :d . )+; :a IRI } on { :b \"1\" ; :d \"1\" ; :a :o }" + approval: Approved + schemaURL: ../schemas/openOneInclude1dotclosecardPlusc1IRI.shex + shape: http://a.example/S + dataURL: b1d1aI1.ttl + node: x + + ## } include + + ## annotations + ## annotations { + - name: "1dotAnnotIRIREF_pass" + status: conformant + trait: [Annotation] + comment: " { .// } on { }" + approval: Approved + schemaURL: ../schemas/1dotAnnotIRIREF.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotAnnotIRIREF_missing" + status: nonconformant + trait: [Annotation] + comment: " { .// } on { }" + approval: Approved + schemaURL: ../schemas/1dotAnnotIRIREF.shex + shape: http://a.example/S1 + dataURL: Is1_Ip2_Io1.ttl + node: http://a.example/s1 + + - name: "1dotPlusAnnotIRIREF_pass" + status: conformant + trait: [Annotation] + comment: " { .+// } on { 'a', }" + approval: Approved + schemaURL: ../schemas/1dotPlusAnnotIRIREF.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Io1.ttl + node: http://a.example/s1 + + - name: "1dotAnnotAIRIREF_pass" + status: conformant + trait: [Annotation] + comment: " { .// a } on { }" + approval: Approved + schemaURL: ../schemas/1dotAnnotAIRIREF.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotAnnotSTRING_LITERAL1_pass" + status: conformant + trait: [Annotation] + comment: " { .// 'STRING_LITERAL1' } on { }" + approval: Approved + schemaURL: ../schemas/1dotAnnotSTRING_LITERAL1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotAnnot3_pass" + status: conformant + trait: [Annotation] + comment: " { .// '1'// '2'// '3' } on { }" + approval: Approved + schemaURL: ../schemas/1dotAnnot3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotAnnot3_missing" + status: nonconformant + trait: [Annotation] + comment: " { .// '1'// '2'// '3' } on { }" + approval: Approved + schemaURL: ../schemas/1dotAnnot3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip2_Io1.ttl + node: http://a.example/s1 + + - name: "1inversedotAnnot3_pass" + status: conformant + trait: [Annotation] + comment: " { ^ .// '1'// '2'// '3' } on { }" + approval: Approved + schemaURL: ../schemas/1inversedotAnnot3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/o1 + + - name: "1inversedotAnnot3_missing" + status: nonconformant + trait: [Annotation] + comment: " { ^ .// '1'// '2'// '3' } on { }" + approval: Approved + schemaURL: ../schemas/1inversedotAnnot3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip2_Io1.ttl + node: http://a.example/o1 + + - name: "1dotShapeAnnotIRIREF_pass" + status: conformant + trait: [Annotation] + comment: " { . } // on { }" + approval: Approved + schemaURL: ../schemas/1dotShapeAnnotIRIREF.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotShapeAnnotIRIREF_missing" + status: nonconformant + trait: [Annotation] + comment: " { . } // on { }" + approval: Approved + schemaURL: ../schemas/1dotShapeAnnotIRIREF.shex + shape: http://a.example/S1 + dataURL: Is1_Ip2_Io1.ttl + node: http://a.example/s1 + + - name: "1dotShapePlusAnnotIRIREF_pass" + status: conformant + trait: [Annotation] + comment: " { .+ } // on { 'a', }" + approval: Approved + schemaURL: ../schemas/1dotShapePlusAnnotIRIREF.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_La,Io1.ttl + node: http://a.example/s1 + + - name: "1dotShapeAnnotAIRIREF_pass" + status: conformant + trait: [Annotation] + comment: " { . } // a on { }" + approval: Approved + schemaURL: ../schemas/1dotShapeAnnotAIRIREF.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotShapeAnnotSTRING_LITERAL1_pass" + status: conformant + trait: [Annotation] + comment: " { . } // 'STRING_LITERAL1' on { }" + approval: Approved + schemaURL: ../schemas/1dotShapeAnnotSTRING_LITERAL1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "2val1refvsAnnot_pass" + status: conformant + trait: [Annotation] + comment: " { [1 5] 3; @ 4 } [2 6] 7 on { }" + approval: Approved + schemaURL: ../schemas/2val1refvsAnnot.shex + shape: http://a.example/S + dataURL: In1_Ip1_L1.In1_Ip2_L2.ttl + node: http://a.example/n1 + + ## semantic actions + + # !../schemas/open3EachdotcloseAnnot3.shex + + ## } annotations + ## semantic actions { + - name: "1dotCode1_pass" + status: conformant + trait: [SemanticAction] + comment: " { . %{ print(o) %} } on { }" + approval: Approved + schemaURL: ../schemas/1dotCode1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "http://a.example/o1" + + - name: "1dotNoCode1_pass" + status: conformant + trait: [SemanticAction, ExternalSemanticAction] + comment: " { . %% } + %{ print(o) %} on { }" + approval: Approved + schemaURL: ../schemas/1dotNoCode1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + semActsURL: ../schemas/1dotNoCode1.semact + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "http://a.example/o1" + + - name: "1inversedotCode1_pass" + status: conformant + trait: [SemanticAction] + comment: " { ^ . %{ print(o) %} } on { }" + approval: Approved + schemaURL: ../schemas/1inversedotCode1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/o1 + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "http://a.example/o1" + + - name: "1dotCode3_pass" + status: conformant + trait: [SemanticAction, OrderedSemanticActions] + comment: " { . %{ print(s) %} %{ print(p) %} %{ print(o) %} } on { }" + approval: Approved + schemaURL: ../schemas/1dotCode3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "http://a.example/s1" + - extension: http://shex.io/extensions/Test/ + prints: "http://a.example/p1" + - extension: http://shex.io/extensions/Test/ + prints: "http://a.example/o1" + + - name: "1dotNoCode3_pass" + status: conformant + trait: [SemanticAction, ExternalSemanticAction] + comment: " { . %% %% %% } + %{ print(s) %} %{ print(p) %} %{ print(o) %} on { }" + approval: Approved + schemaURL: ../schemas/1dotNoCode3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + semActsURL: ../schemas/1dotNoCode3.semact + extensionResults: + - extension: "http://shex.io/extensions/Test/#a" + prints: "http://a.example/s1" + - extension: "http://shex.io/extensions/Test/#b" + prints: "http://a.example/p1" + - extension: "http://shex.io/extensions/Test/#c" + prints: "http://a.example/o1" + + - name: "1dotCode3fail_abort" + status: nonconformant + trait: [SemanticAction] + comment: " { . %{ print(s) %}%{ fail(s) %}%{ print(o) %} } on { }" + approval: Approved + schemaURL: ../schemas/1dotCode3fail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1dotCodeWithEscapes1_pass" + status: conformant + trait: [SemanticAction] + comment: " { . %{ print\\u0028\\u0022\\%{\\\\\\\\\\%}\\u0022\\u0029 %} } on { }" + approval: Approved + schemaURL: ../schemas/1dotCodeWithEscapes1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "%{\\%}" + + - name: "1dotCode1_with_backslash_pass" + status: conformant + trait: [SemanticAction] + comment: " { . %{ print(o) %} } on { 'a\\\\b' } — the object's value holds one backslash, calibrating that prints are unescaped literals" + approval: Approved + schemaURL: ../schemas/1dotCode1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_L_with_backslash.ttl + node: http://a.example/s1 + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "a\\b" + + - name: "1dotShapeCode1_pass" + status: conformant + trait: [SemanticAction] + comment: " { . } %{ print(\"shape action\") %} on { }" + approval: Approved + schemaURL: ../schemas/1dotShapeCode1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "shape action" + + - name: "1dotShapeNoCode1_pass" + status: conformant + trait: [SemanticAction, ExternalSemanticAction] + comment: " { . } %% + %{ print(o) %} on { }" + approval: Approved + schemaURL: ../schemas/1dotShapeNoCode1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + semActsURL: ../schemas/1dotShapeNoCode1.semact + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "shape action" + + - name: open3EachdotcloseCode1-p1p2p3 + status: conformant + trait: [SemanticAction, EachOf] + comment: " { ( .; .; . ) %{ print(\"group semAct\") %} } / { :s1 :p1 \"p1-0\"; :p2 \"p2-0\"; :p3 \"p3-0\" . }" + approval: Approved + schemaURL: ../schemas/open3EachdotcloseCode1.shex + shape: http://a.example/S1 + dataURL: p1p2p3.ttl + node: x + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "group semAct" + + - name: "1dotShapeCode1fail_abort" + status: nonconformant + trait: [SemanticAction] + comment: " { . } %{ fail(s) %} on { }" + approval: Approved + schemaURL: ../schemas/1dotShapeCode1fail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: open3EachdotcloseCode1fail_abort + status: nonconformant + trait: [SemanticAction, EachOf] + comment: " { ( .; .; . ) %{ fail(s) %} } on { :p1 \"p1-0\"; :p2 \"p2-0\"; :p3 \"p3-0\" }" + approval: Approved + schemaURL: ../schemas/open3EachdotcloseCode1fail.shex + shape: http://a.example/S1 + dataURL: p1p2p3.ttl + node: x + + - name: open2OnedotcloseCode1fail_abort + status: nonconformant + trait: [SemanticAction, OneOf] + comment: " { ( . | . ) %{ fail(s) %} } on { }" + approval: Approved + schemaURL: ../schemas/open2OnedotcloseCode1fail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: startCode1_pass + status: conformant + trait: [SemanticAction] + comment: "%{print('startAct')%} { . } on { }" + approval: Approved + schemaURL: ../schemas/startCode1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "startAct" + + - name: startNoCode1_pass + status: conformant + trait: [SemanticAction, ExternalSemanticAction] + comment: "%% { . } + %{print(\"startAct\")%} on { }" + approval: Approved + schemaURL: ../schemas/startNoCode1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + semActsURL: ../schemas/startNoCode1.semact + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "startAct" + + - name: startCode1fail_abort + status: nonconformant + trait: [SemanticAction] + comment: "%{ fail('startAct') %} { . } on { }" + approval: Approved + schemaURL: ../schemas/startCode1fail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "startAct" + + - name: startCode1startRef_pass + status: conformant + trait: [SemanticAction] + comment: "%{print('startAct')%} start= { . } on { }" + approval: Approved + schemaURL: ../schemas/startCode1startRef.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "startAct" + + - name: startCode1startReffail_abort + status: nonconformant + trait: [SemanticAction] + comment: "%{ fail('startAct') %} start= { . } on { }" + approval: Approved + schemaURL: ../schemas/startCode1startReffail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "startAct" + + - name: startCode3_pass + status: conformant + trait: [SemanticAction] + comment: "%{print('startAct 1')%} %{print('startAct 2')%} %{print('startAct 3')%} { . } on { }" + approval: Approved + schemaURL: ../schemas/startCode3.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "startAct 1" + - extension: http://shex.io/extensions/Test/ + prints: "startAct 2" + - extension: http://shex.io/extensions/Test/ + prints: "startAct 3" + + - name: startCode3fail_abort + status: nonconformant + trait: [SemanticAction] + comment: "%{print('startAct 1')%} %{ fail('startAct 2') %} %{print('startAct 3')%} { . } on { }" + approval: Approved + schemaURL: ../schemas/startCode3fail.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "2val1refvsCode_pass" + status: conformant + trait: [SemanticAction] + comment: " { [1 5] %{ print(o) %}; @ %{ print(o) %} } [2 6] %{ print(n) %} on { }" + approval: Approved + schemaURL: ../schemas/2val1refvsCode.shex + shape: http://a.example/S + dataURL: In1_Ip1_L1.In1_Ip2_L2.ttl + node: http://a.example/n1 + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "\"2\"^^http://www.w3.org/2001/XMLSchema#integer" + - extension: http://shex.io/extensions/Test/ + prints: "\"1\"^^http://www.w3.org/2001/XMLSchema#integer" + - extension: http://shex.io/extensions/Test/ + prints: "\"2\"^^http://www.w3.org/2001/XMLSchema#integer" + + ## } semantic actions + + ## annotations + semantic actions + ## annotations + semantic actions { + - name: open3Eachdotclosecard23Annot3Code2-p1p2p3X3 + status: conformant + trait: [Annotation, SemanticAction, EachOf, RepeatedGroup] + comment: " { ( .; .; . ){2,3} // \"1\" // \"2\" // \"3\" %{ p(\"...1\") %} %{ p(\"...2\") %} } / { \"p1-n\"; \"p2-n\"; \"p3-n\" }X3" + approval: Approved + schemaURL: ../schemas/open3Eachdotclosecard23Annot3Code2.shex + shape: http://a.example/S1 + dataURL: p1p2p3X3.ttl + node: x + extensionResults: + - extension: http://shex.io/extensions/Test/ + prints: "group semAct 1" + - extension: http://shex.io/extensions/Test/ + prints: "group semAct 2" + + ## } annotations + semantic actions + + ## focus constraint + ### kind + - name: "0focusIRI_other" + status: conformant + trait: [Empty] + comment: " IRI { } on { }" + approval: Approved + schemaURL: ../schemas/0focusIRI.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "0focusIRI_other_fail-bnodeFocusLabel" + status: nonconformant + trait: [Empty, ToldBNode] + comment: " IRI { } on { _:abcd }" + approval: Approved + schemaURL: ../schemas/0focusIRI.shex + queryMap: "_:abcd@" + dataURL: Babcd_Ip1_Io1.ttl + + - name: "0focusIRI_empty" + status: conformant + trait: [Empty] + comment: " IRI { } on { }" + approval: Approved + schemaURL: ../schemas/0focusIRI.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + ## focus constraint { + ### kind { + - name: "0focusIRI_empty_fail-bnodeFocusLabel" + status: nonconformant + trait: [Empty, ToldBNode] + comment: " IRI { } on { }" + approval: Approved + schemaURL: ../schemas/0focusIRI.shex + queryMap: "_:s1@" + dataURL: empty.ttl + + - name: "0focusBNODE_empty_fail-iriFocusLabel" + status: nonconformant + trait: [Empty] + comment: " BNODE { } on in { }" + approval: Approved + schemaURL: ../schemas/0focusBNODE.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + + - name: "0focusBNODE_empty" + status: conformant + trait: [Empty, ToldBNode] + comment: " BNODE { } on _:abcd in { }" + approval: Approved + schemaURL: ../schemas/0focusBNODE.shex + queryMap: "_:abcd@" + dataURL: empty.ttl + + - name: "0focusBNODE_other_fail-iriFocusLabel" + status: nonconformant + trait: [Empty] + comment: " BNODE { } on { }" + approval: Approved + schemaURL: ../schemas/0focusBNODE.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "0focusBNODE_other" + status: conformant + trait: [Empty, ToldBNode] + comment: " BNODE { } on { _:abcd }" + approval: Approved + schemaURL: ../schemas/0focusBNODE.shex + queryMap: "_:abcd@" + dataURL: Babcd_Ip1_Io1.ttl + + - name: "1focusIRI_dot_fail-bnodeFocusLabel" + status: nonconformant + trait: [FocusConstraint, ToldBNode] + comment: " IRI { . } on in { _:abcd }" + approval: Approved + schemaURL: ../schemas/1focusIRI_dot.shex + queryMap: "_:abcd@" + dataURL: Babcd_Ip1_Io1.ttl + + - name: "1focusIRI_dot_pass" + status: conformant + trait: [FocusConstraint] + comment: " IRI { . } on in { }" + approval: Approved + schemaURL: ../schemas/1focusIRI_dot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1focusBNODE_dot_fail-iriFocusLabel-equal" + status: nonconformant + trait: [FocusConstraint, LexicalBNode] + comment: " BNODE { . } on in { }" + approval: Approved + schemaURL: ../schemas/1focusBNODE_dot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1focusBNODE_dot_pass" + status: conformant + trait: [FocusConstraint, ToldBNode] + comment: " BNODE { . } on in { _:abcdefghijklmnopqrs }" + approval: Approved + schemaURL: ../schemas/1focusBNODE_dot.shex + queryMap: "_:abcdefghijklmnopqrs@" + dataURL: Babcdefghijklmnopqrs_Ip1_Io1.ttl + + - name: "1focusnonLiteral-dot_pass-iri-equal" + status: conformant + trait: [FocusConstraint, LengthFacet] + comment: " NONLITERAL { . } on { }" + approval: Approved + schemaURL: ../schemas/1focusnonLiteral-dot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + ### } kind + + ### datatype + ### datatype { + - name: focusdatatype_pass + status: conformant + trait: [FocusConstraint] + comment: " on { 'ab'^^my:bloodType }" + approval: Approved + schemaURL: ../schemas/focusdatatype.shex + queryMap: "\"ab\"^^@" + dataURL: Is1_Ip1_LabDTbloodType.ttl + + - name: focusdatatype_fail + status: nonconformant + trait: [FocusConstraint] + comment: " on { 'ab'^^my:bloodType999 }" + approval: Approved + schemaURL: ../schemas/focusdatatype.shex + queryMap: "\"ab\"^^@" + dataURL: Is1_Ip1_LabDTbloodType999.ttl + + - name: focusdatatype_pass-empty + status: conformant + trait: [FocusConstraint] + comment: " on 'ab'^^ in { }" + approval: Approved + schemaURL: ../schemas/focusdatatype.shex + queryMap: "\"ab\"^^@" + dataURL: empty.ttl + + - name: focusdatatype_fail-empty + status: nonconformant + trait: [FocusConstraint] + comment: " on 'ab'^^ in { }" + approval: Approved + schemaURL: ../schemas/focusdatatype.shex + queryMap: "\"ab\"^^@" + dataURL: empty.ttl + + ### } datatype + + ### value sets + ### value sets { + - name: focusvs_pass + status: conformant + trait: [FocusConstraint] + comment: " [ ] on { }" + approval: Approved + schemaURL: ../schemas/focusvs.shex + shape: http://a.example/vs1 + dataURL: Is1_Ip1_Iv1.ttl + node: http://a.example/v1 + + - name: focusvs_fail + status: nonconformant + trait: [FocusConstraint] + comment: " [ ] on { }" + approval: Approved + schemaURL: ../schemas/focusvs.shex + shape: http://a.example/vs1 + dataURL: Is1_Ip1_Iv1a.ttl + node: http://a.example/v1a + + ### } value sets + + ### AND focus + ### AND focus { + - name: "1focusvsANDdatatype_fail" + status: nonconformant + trait: [FocusConstraint, Unsatisfiable] + comment: " [ ] AND on { }" + approval: Approved + schemaURL: ../schemas/focusvsANDdatatype.shex + shape: http://a.example/vs1 + dataURL: empty.ttl + node: http://a.example/v1 + + - name: "1focusvsANDIRI_pass" + status: conformant + trait: [FocusConstraint] + comment: " [ ] AND IRI on in { }" + approval: Approved + schemaURL: ../schemas/focusvsANDIRI.shex + shape: http://a.example/vs1 + dataURL: empty.ttl + node: http://a.example/v1 + + - name: "1focusvsANDIRI_fail" + status: nonconformant + trait: [FocusConstraint] + comment: " [ ] AND IRI on in { }" + approval: Approved + schemaURL: ../schemas/focusvsANDIRI.shex + shape: http://a.example/vs1 + dataURL: empty.ttl + node: http://a.example/v4 + + ### } AND focus + + ### OR focus + ### OR focus { + - name: "1focusvsORdatatype_pass-val" + status: conformant + trait: [FocusConstraint] + comment: " [ ] OR on in { }" + approval: Approved + schemaURL: ../schemas/focusvsORdatatype.shex + shape: http://a.example/vs1 + dataURL: empty.ttl + node: http://a.example/v1 + + - name: "1focusvsORdatatype_fail-val" + status: nonconformant + trait: [FocusConstraint] + comment: " [ ] OR on in { }" + approval: Approved + schemaURL: ../schemas/focusvsORdatatype.shex + shape: http://a.example/vs1 + dataURL: empty.ttl + node: http://a.example/v4 + + - name: "1focusvsORdatatype_pass-dt" + status: conformant + trait: [FocusConstraint] + comment: " [ ] OR on 'v1'^^ in { }" + approval: Approved + schemaURL: ../schemas/focusvsORdatatype.shex + queryMap: "\"v1\"^^@" + dataURL: empty.ttl + + - name: "1focusvsORdatatype_fail-dt" + status: nonconformant + trait: [FocusConstraint] + comment: " [ ] OR on 'v1'^^ in { }" + approval: Approved + schemaURL: ../schemas/focusvsORdatatype.shex + queryMap: "\"v1\"^^@" + dataURL: empty.ttl + + - name: focusNOTRefOR1dot_pass-inOR + status: conformant + trait: [FocusConstraint] + comment: " NOT @ OR { . } { . } in { }" + approval: Proposed + schemaURL: ../schemas/focusNOTRefOR1dot.shex + shape: http://a.example/S1 + dataURL: In1_Ip2_In2.ttl + node: http://a.example/n1 + + - name: focusNOTRefOR1dot_fail-inNOT + status: nonconformant + trait: [FocusConstraint] + comment: " NOT @ OR { . } { . } in { }" + approval: Proposed + schemaURL: ../schemas/focusNOTRefOR1dot.shex + shape: http://a.example/S1 + dataURL: In1_Ip3_In2.ttl + node: http://a.example/n1 + + - name: focusNOTRefOR1dot_pass-other + status: conformant + trait: [FocusConstraint] + comment: " NOT @ OR { . } { . } in { }" + approval: Proposed + schemaURL: ../schemas/focusNOTRefOR1dot.shex + shape: http://a.example/S1 + dataURL: In1_Ip4_In2.ttl + node: http://a.example/n1 + + ### } OR focus + + ### NOT focus + + ### facet + #### length + ### focusFacet { + #### lengths { + - name: "1focusLength-dot_fail-iri-short" + status: nonconformant + trait: [FocusConstraint, LengthFacet] + comment: " LENGTH 19 { . } on { }" + approval: Approved + schemaURL: ../schemas/1focusLength-dot.shex + shape: http://a.example/S1 + dataURL: Is_Ip1_Io1.ttl + node: http://a.example/s + + - name: "1focusLength-dot_pass-iri-equal" + status: conformant + trait: [FocusConstraint, LengthFacet] + comment: " LENGTH 19 { . } on { }" + approval: Approved + schemaURL: ../schemas/1focusLength-dot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1focusLength-dot_fail-iri-long" + status: nonconformant + trait: [FocusConstraint, LengthFacet] + comment: " LENGTH 19 { . } on { }" + approval: Approved + schemaURL: ../schemas/1focusLength-dot.shex + shape: http://a.example/S1 + dataURL: Is1a_Ip1_Io1.ttl + node: http://a.example/s1a + + - name: "1focusLength-dot_fail-bnode-short" + status: nonconformant + trait: [FocusConstraint, LexicalBNode, LengthFacet, ToldBNode] + comment: " LENGTH 19 { . } on { _:abcd }" + approval: Approved + schemaURL: ../schemas/1focusLength-dot.shex + queryMap: "_:abcd@" + dataURL: Babcd_Ip1_Io1.ttl + + - name: "1focusLength-dot_pass-bnode-equal" + status: conformant + trait: [FocusConstraint, LexicalBNode, LengthFacet, ToldBNode] + comment: " LENGTH 19 { . } on { _:abcdefghijklmnopqrs }" + approval: Approved + schemaURL: ../schemas/1focusLength-dot.shex + queryMap: "_:abcdefghijklmnopqrs@" + dataURL: Babcdefghijklmnopqrs_Ip1_Io1.ttl + + - name: "1focusLength-dot_fail-bnode-long" + status: nonconformant + trait: [FocusConstraint, LexicalBNode, LengthFacet, ToldBNode] + comment: " LENGTH 19 { . } on { _:abcdefghijklmnopqrst }" + approval: Approved + schemaURL: ../schemas/1focusLength-dot.shex + queryMap: "_:abcdefghijklmnopqrst@" + dataURL: Babcdefghijklmnopqrst_Ip1_Io1.ttl + + - name: "1focusMinLength-dot_fail-iri-short" + status: nonconformant + trait: [FocusConstraint, LengthFacet] + comment: " MINLENGTH 19 { . } on { }" + approval: Approved + schemaURL: ../schemas/1focusMinLength-dot.shex + shape: http://a.example/S1 + dataURL: Is_Ip1_Io1.ttl + node: http://a.example/s + + - name: "1focusMinLength-dot_pass-iri-equal" + status: conformant + trait: [FocusConstraint, LengthFacet] + comment: " MINLENGTH 19 { . } on { }" + approval: Approved + schemaURL: ../schemas/1focusMinLength-dot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1focusMinLength-dot_pass-iri-long" + status: conformant + trait: [FocusConstraint, LengthFacet] + comment: " MINLENGTH 19 { . } on { }" + approval: Approved + schemaURL: ../schemas/1focusMinLength-dot.shex + shape: http://a.example/S1 + dataURL: Is1a_Ip1_Io1.ttl + node: http://a.example/s1a + + - name: "1focusMinLength-dot_fail-bnode-short" + status: nonconformant + trait: [FocusConstraint, LengthFacet, LexicalBNode, ToldBNode] + comment: " MINLENGTH 19 { . } on { _:abcd }" + approval: Approved + schemaURL: ../schemas/1focusMinLength-dot.shex + queryMap: "_:abcd@" + dataURL: Babcd_Ip1_Io1.ttl + + - name: "1focusMinLength-dot_pass-bnode-equal" + status: conformant + trait: [FocusConstraint, LengthFacet, LexicalBNode, ToldBNode] + comment: " MINLENGTH 19 { . } on { _:abcdefghijklmnopqrs }" + approval: Approved + schemaURL: ../schemas/1focusMinLength-dot.shex + queryMap: "_:abcdefghijklmnopqrs@" + dataURL: Babcdefghijklmnopqrs_Ip1_Io1.ttl + + - name: "1focusMinLength-dot_pass-bnode-long" + status: conformant + trait: [FocusConstraint, LengthFacet, ToldBNode] + comment: " MINLENGTH 19 { . } on { _:abcdefghijklmnopqrst }" + approval: Approved + schemaURL: ../schemas/1focusMinLength-dot.shex + queryMap: "_:abcdefghijklmnopqrst@" + dataURL: Babcdefghijklmnopqrst_Ip1_Io1.ttl + + - name: "1focusMaxLength-dot_pass-iri-short" + status: conformant + trait: [FocusConstraint, LengthFacet] + comment: " MAXLENGTH 19 { . } on { }" + approval: Approved + schemaURL: ../schemas/1focusMaxLength-dot.shex + shape: http://a.example/S1 + dataURL: Is_Ip1_Io1.ttl + node: http://a.example/s + + - name: "1focusMaxLength-dot_pass-iri-equal" + status: conformant + trait: [FocusConstraint, LengthFacet] + comment: " MAXLENGTH 19 { . } on { }" + approval: Approved + schemaURL: ../schemas/1focusMaxLength-dot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1focusMaxLength-dot_fail-iri-long" + status: nonconformant + trait: [FocusConstraint, LengthFacet] + comment: " MAXLENGTH 19 { . } on { }" + approval: Approved + schemaURL: ../schemas/1focusMaxLength-dot.shex + shape: http://a.example/S1 + dataURL: Is1a_Ip1_Io1.ttl + node: http://a.example/s1a + + - name: "1focusMaxLength-dot_pass-bnode-short" + status: conformant + trait: [FocusConstraint, LengthFacet, LexicalBNode, ToldBNode] + comment: " MAXLENGTH 19 { . } on { _:abcd }" + approval: Approved + schemaURL: ../schemas/1focusMaxLength-dot.shex + queryMap: "_:abcd@" + dataURL: Babcd_Ip1_Io1.ttl + + - name: "1focusMaxLength-dot_pass-bnode-equal" + status: conformant + trait: [FocusConstraint, LengthFacet, LexicalBNode, ToldBNode] + comment: " MAXLENGTH 19 { . } on { _:abcdefghijklmnopqrs }" + approval: Approved + schemaURL: ../schemas/1focusMaxLength-dot.shex + queryMap: "_:abcdefghijklmnopqrs@" + dataURL: Babcdefghijklmnopqrs_Ip1_Io1.ttl + + - name: "1focusMaxLength-dot_fail-bnode-long" + status: nonconformant + trait: [FocusConstraint, LexicalBNode, ToldBNode, LengthFacet] + comment: " MAXLENGTH 19 { . } on { _:abcdefghijklmnopqrst }" + approval: Approved + schemaURL: ../schemas/1focusMaxLength-dot.shex + queryMap: "_:abcdefghijklmnopqrst@" + dataURL: Babcdefghijklmnopqrst_Ip1_Io1.ttl + + #### } lengths + + #### pattern + #### pattern { + - name: "1focusPattern-dot_fail-iri-match" + status: nonconformant + trait: [PaternFacet] + comment: " PATTERN '^http://a.example/s1$' { } on { }" + approval: Approved + schemaURL: ../schemas/1focusPattern-dot.shex + shape: http://a.example/S1 + dataURL: Is2_Ip1_Io.ttl + node: http://a.example/s2 + + - name: "1focusPattern-dot_fail-iri-short" + status: nonconformant + trait: [PaternFacet] + comment: " PATTERN '^http://a.example/s1$' { } on { }" + approval: Approved + schemaURL: ../schemas/1focusPattern-dot.shex + shape: http://a.example/S1 + dataURL: Is_Ip1_Io1.ttl + node: http://a.example/s + + - name: "1focusPattern-dot_pass-iri-match" + status: conformant + trait: [PaternFacet] + comment: " PATTERN 'http://a.example/s1' { } on { }" + approval: Approved + schemaURL: ../schemas/1focusPattern-dot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1focusPattern-dot_fail-iri-long" + status: nonconformant + trait: [PaternFacet] + comment: " PATTERN '^http://a.example/s1$' { } on { }" + approval: Approved + schemaURL: ../schemas/1focusPattern-dot.shex + shape: http://a.example/S1 + dataURL: Is1a_Ip1_Io1.ttl + node: http://a.example/s1a + + - name: "1focusPatternB-dot_fail-iri-match" + status: nonconformant + trait: [PaternFacet] + comment: " PATTERN 'abcdefghijklmnopqrs' { } on { }" + approval: Approved + schemaURL: ../schemas/1focusPatternB-dot.shex + shape: http://a.example/S1 + dataURL: Is2_Ip1_Io.ttl + node: http://a.example/s2 + + - name: "1focusPatternB-dot_fail-bnode-short" + status: nonconformant + trait: [PaternFacet, LexicalBNode, ToldBNode] + comment: " PATTERN 'abcdefghijklmnopqrs' { } on { _:abcd }" + approval: Approved + schemaURL: ../schemas/1focusPatternB-dot.shex + queryMap: "_:abcd@" + dataURL: Babcd_Ip1_Io1.ttl + + - name: "1focusPatternB-dot_pass-bnode-match" + status: conformant + trait: [PaternFacet, LexicalBNode, ToldBNode] + comment: " PATTERN 'abcdefghijklmnopqrs' { } on { _:abcdefghijklmnopqrs }" + approval: Approved + schemaURL: ../schemas/1focusPatternB-dot.shex + queryMap: "_:abcdefghijklmnopqrs@" + dataURL: Babcdefghijklmnopqrs_Ip1_Io1.ttl + + - name: "1focusPatternB-dot_pass-bnode-long" + status: conformant + trait: [PaternFacet, LexicalBNode, ToldBNode] + comment: " PATTERN 'abcdefghijklmnopqrs' { } on { _:abcdefghijklmnopqrst }" + approval: Approved + schemaURL: ../schemas/1focusPatternB-dot.shex + queryMap: "_:abcdefghijklmnopqrst@" + dataURL: Babcdefghijklmnopqrst_Ip1_Io1.ttl + + #### } pattern + ### } focusFacet + + ### kind + length facet + ### kind + length facet { + - name: "1focusIRILength_dot_fail-bnodeFocusLabel-equal" + status: nonconformant + trait: [FocusConstraint, LexicalBNode, LengthFacet, ToldBNode] + comment: " IRI LENGTH 19 { . } on in { _:abcdefghijklmnopqrs }" + approval: Approved + schemaURL: ../schemas/1focusIRILength_dot.shex + queryMap: "_:abcdefghijklmnopqrs@" + dataURL: Babcdefghijklmnopqrs_Ip1_Io1.ttl + + - name: "1focusIRILength_dot_fail-short" + status: nonconformant + trait: [FocusConstraint, LengthFacet] + comment: " IRI LENGTH 19 { . } on in { }" + approval: Approved + schemaURL: ../schemas/1focusIRILength_dot.shex + shape: http://a.example/S1 + dataURL: Is_Ip1_Io1.ttl + node: http://a.example/s + + - name: "1focusIRILength_dot_pass" + status: conformant + trait: [FocusConstraint, LengthFacet] + comment: " IRI LENGTH 19 { . } on in { }" + approval: Approved + schemaURL: ../schemas/1focusIRILength_dot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1focusIRILength_dot_fail-long" + status: nonconformant + trait: [FocusConstraint, LengthFacet] + comment: " IRI LENGTH 19 { . } on in { }" + approval: Approved + schemaURL: ../schemas/1focusIRILength_dot.shex + shape: http://a.example/S1 + dataURL: Is1a_Ip1_Io1.ttl + node: http://a.example/s1a + + - name: "1focusBNODELength_dot_fail-iriFocusLabel-equal" + status: nonconformant + trait: [LexicalBNode, LengthFacet] + comment: " BNODE LENGTH 19 { . } on in { }" + approval: Approved + schemaURL: ../schemas/1focusBNODELength_dot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: "1focusBNODELength_dot_fail-short" + status: nonconformant + trait: [FocusConstraint, LengthFacet, LexicalBNode, ToldBNode] + comment: " BNODE LENGTH 19 { . } on in { _:abcd }" + approval: Approved + schemaURL: ../schemas/1focusBNODELength_dot.shex + queryMap: "_:abcd@" + dataURL: Babcd_Ip1_Io1.ttl + + - name: "1focusBNODELength_dot_pass" + status: conformant + trait: [FocusConstraint, LengthFacet, LexicalBNode, ToldBNode] + comment: " BNODE LENGTH 19 { . } on in { _:abcdefghijklmnopqrs }" + approval: Approved + schemaURL: ../schemas/1focusBNODELength_dot.shex + queryMap: "_:abcdefghijklmnopqrs@" + dataURL: Babcdefghijklmnopqrs_Ip1_Io1.ttl + + - name: "1focusBNODELength_dot_fail-long" + status: nonconformant + trait: [FocusConstraint, LengthFacet, LexicalBNode, ToldBNode] + comment: " BNODE LENGTH 19 { . } on in { _:abcdefghijklmnopqrst }" + approval: Approved + schemaURL: ../schemas/1focusBNODELength_dot.shex + queryMap: "_:abcdefghijklmnopqrst@" + dataURL: Babcdefghijklmnopqrst_Ip1_Io1.ttl + + - name: "1focusnonLiteralLength-dot_pass-iri-equal" + status: conformant + trait: [FocusConstraint, LengthFacet] + comment: " NONLITERAL LENGTH 19 { . } on { }" + approval: Approved + schemaURL: ../schemas/1focusnonLiteralLength-dot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + ### } kind + length facet + + ### AND OR NOT + ### AND OR NOT { + + # @@ In1_Ip1_In2.ttl failure tests + - name: NOT1dotOR2dot_pass-empty + status: conformant + trait: [OrValueExpression, NotValueExpression] + comment: " NOT { . } OR { .; . } on { }" + approval: Approved + schemaURL: ../schemas/NOT1dotOR2dot.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/n1 + + - name: NOT1dotOR2dot_pass-NoShape1 + status: conformant + trait: [OrValueExpression, NotValueExpression] + comment: " NOT { . } OR { .; . } on { }" + approval: Approved + schemaURL: ../schemas/NOT1dotOR2dot.shex + shape: http://a.example/S1 + dataURL: In1_Ip2_In2.ttl + node: http://a.example/n1 + + - name: NOT1dotOR2dot_pass-Shape2 + status: conformant + trait: [OrValueExpression, NotValueExpression] + comment: " NOT { . } OR { .; . } on { . }" + approval: Approved + schemaURL: ../schemas/NOT1dotOR2dot.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In1_Ip2_In3.ttl + node: http://a.example/n1 + + - name: NOT1dotOR2dot_fail-Shape2 + status: nonconformant + trait: [OrValueExpression, NotValueExpression] + comment: " NOT { . } OR { .; . } on { }" + approval: Approved + schemaURL: ../schemas/NOT1dotOR2dot.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.ttl + node: http://a.example/n1 + + - name: NOT1dotOR2dotX3_pass-empty + status: conformant + trait: [OrValueExpression, NotValueExpression] + comment: " ((NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) ) on { }" + approval: Approved + schemaURL: ../schemas/NOT1dotOR2dotX3.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/n1 + + - name: NOT1dotOR2dotX3_pass-NoShape1 + status: conformant + trait: [OrValueExpression, NotValueExpression] + comment: " ((NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) ) on { }" + approval: Approved + schemaURL: ../schemas/NOT1dotOR2dotX3.shex + shape: http://a.example/S1 + dataURL: In1_Ip2_In2.ttl + node: http://a.example/n1 + + - name: NOT1dotOR2dotX3_pass-Shape2 + status: conformant + trait: [OrValueExpression, NotValueExpression] + comment: " ((NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) ) on { . }" + approval: Approved + schemaURL: ../schemas/NOT1dotOR2dotX3.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In1_Ip2_In3.ttl + node: http://a.example/n1 + + - name: NOT1dotOR2dotX3_fail-Shape2 + status: nonconformant + trait: [OrValueExpression, NotValueExpression] + comment: " ((NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) ) on { }" + approval: Approved + schemaURL: ../schemas/NOT1dotOR2dotX3.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.ttl + node: http://a.example/n1 + + - name: NOT1dotOR2dotX3AND1_fail-empty + status: nonconformant + trait: [OrValueExpression, NotValueExpression] + comment: " ((NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) AND ({ . } OR { . } OR { . } ) ) on { }" + approval: Approved + schemaURL: ../schemas/NOT1dotOR2dotX3AND1.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/n1 + + - name: NOT1dotOR2dotX3AND1_fail-NoShape1 + status: nonconformant + trait: [OrValueExpression, NotValueExpression] + comment: " ((NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) AND ({ . } OR { . } OR { . } ) ) on { }" + approval: Approved + schemaURL: ../schemas/NOT1dotOR2dotX3AND1.shex + shape: http://a.example/S1 + dataURL: In1_Ip2_In2.ttl + node: http://a.example/n1 + + - name: NOT1dotOR2dotX3AND1_pass-Shape2 + status: conformant + trait: [OrValueExpression, NotValueExpression] + comment: " ((NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) AND ({ . } OR { . } OR { . } ) ) on { . }" + approval: Approved + schemaURL: ../schemas/NOT1dotOR2dotX3AND1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In1_Ip2_In3.ttl + node: http://a.example/n1 + + - name: NOT1dotOR2dotX3AND1_fail-Shape2 + status: nonconformant + trait: [OrValueExpression, NotValueExpression] + comment: " ((NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) AND (NOT { . } OR { .; . }) AND ({ . } OR { . } OR { . } ) ) on { }" + approval: Approved + schemaURL: ../schemas/NOT1dotOR2dotX3AND1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.ttl + node: http://a.example/n1 + + - name: "1NOTRefOR1dot_pass-inOR" + status: conformant + comment: " { NOT @ OR { . } } { . } in { . \"X\" }" + approval: Proposed + schemaURL: ../schemas/1NOTRefOR1dot.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "1NOTRefOR1dot_fail-inNOT" + status: nonconformant + comment: " { NOT @ OR { . } } { . } in { . \"X\" }" + approval: Proposed + schemaURL: ../schemas/1NOTRefOR1dot.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip3_LX.ttl + node: http://a.example/n1 + + - name: "1NOTRefOR1dot_pass-other" + status: conformant + comment: " { NOT @ OR { . } } { . } in { . \"X\" }" + approval: Proposed + schemaURL: ../schemas/1NOTRefOR1dot.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip4_LX.ttl + node: http://a.example/n1 + + ### } AND OR NOT + ## } focus constraint + + ## shape extern + ## shape extern { + - name: shapeExtern_pass + status: conformant + trait: [SemanticAction, ExternalShape] + comment: " EXTERNAL + { . } on in { . \"X\" }" + approval: Approved + schemaURL: ../schemas/shapeExtern.shex + shape: http://a.example/Sext + dataURL: In1_Ip1_In2.In2_Ip2_LX.ttl + node: http://a.example/n2 + shapeExternsURL: ../schemas/shapeExtern.shextern + + - name: shapeExtern_fail + status: nonconformant + trait: [SemanticAction, ExternalShape] + comment: " EXTERNAL + { . } on in { . \"X\" }" + approval: Approved + schemaURL: ../schemas/shapeExtern.shex + shape: http://a.example/Sext + dataURL: In1_Ip1_In2.In2_Ip2_LX.ttl + node: http://a.example/n1 + shapeExternsURL: ../schemas/shapeExtern.shextern + + - name: shapeExternRef_pass + status: conformant + trait: [SemanticAction, ExternalShape] + comment: " { @ } EXTERNAL + { . } on { . \"X\" }" + approval: Approved + schemaURL: ../schemas/shapeExternRef.shex + shape: http://a.example/S + dataURL: In1_Ip1_In2.In2_Ip2_LX.ttl + node: http://a.example/n1 + shapeExternsURL: ../schemas/shapeExtern.shextern + + - name: shapeExternRef_fail + status: nonconformant + trait: [SemanticAction, ExternalShape] + comment: " { @ } EXTERNAL + { . } on { }" + approval: Approved + schemaURL: ../schemas/shapeExternRef.shex + shape: http://a.example/S + dataURL: In1_Ip1_In2.ttl + node: http://a.example/n1 + shapeExternsURL: ../schemas/shapeExtern.shextern + + ## } shape extern + + ## relative IRIs + ## relative IRIs { + # schema paths include ../validation in order to be easy to find. + - name: "1dot-relative_pass-short-shape" + status: conformant + trait: [relativeIRI] + comment: " { [] } on in { }" + approval: Approved + schemaURL: ../validation/1dot-relative.shex + shape: S1 + dataURL: Is1_Ip1_Io1-relative.ttl + node: s1 + + - name: "1dot-relative_pass-relative-shape" + status: conformant + trait: [relativeIRI] + comment: " { [] } on <../validation/S1> in { }" + approval: Approved + schemaURL: ../validation/1dot-relative.shex + shape: ../validation/S1 + dataURL: Is1_Ip1_Io1-relative.ttl + node: s1 + + ## } relative IRIs + + ## manual schemas + ## manual schemas { + - name: false-lead-excluding-value-shape + status: conformant + trait: [EachOf] + comment: " { :a @*; (:a @+ | :b int); :b .} {:b @} {:b @} {:c .} {:d .}" + approval: Approved + schemaURL: ../validation/false-lead-excluding-value-shape.shex + shape: http://a.example.org/S + dataURL: false-lead-excluding-value-shape.ttl + node: x + + - name: nPlus1 + status: conformant + trait: [EachOf, Exhaustive] + comment: " { :a .*; (:a .+ | :a .); :a . } / { :a 1, 3 }" + approval: Approved + schemaURL: ../validation/nPlus1.shex + shape: http://a.example.org/S + dataURL: nPlus1.ttl + node: x + # <#nPlus1-greedy_fail> + + # <#nPlus1-greedy_fail> a sht:ValidationFailure ; + # mf:name "nPlus1-greedy_fail" ; + # sht:trait sht:EachOf , sht:Greedy ; + # rdfs:comment " { :a .*; (:a .+ | :a .); :a . } / { :a 1, 3 } Greedy" ; + # mf:status mf:Approved ; + # mf:action [ + # sht:schema <../validation/nPlus1.shex> ; + # sht:shape ; + # sht:data ; + # sht:focus + # ] + # . + - name: nPlus1-greedy-rewrite + status: conformant + trait: [EachOf] + comment: " { :a [1]; (:a [2]+ | :a [3]); :a [4]* } / { :a 1, 3 }" + approval: Approved + schemaURL: ../validation/nPlus1-greedy-rewrite.shex + shape: http://a.example.org/S + dataURL: nPlus1.ttl + node: x + + - name: skipped + status: conformant + trait: [EachOf] + comment: " { ( :a .; :b . )?; :c . } on { :c 1 }" + approval: Approved + schemaURL: ../validation/skipped.shex + shape: http://a.example.org/S + dataURL: skipped.ttl + node: x + + - name: open2Eachdotclosecard25c1dot + status: conformant + trait: [EachOf] + comment: " { ( :a .; :b . ){2,5}; :c . }" + approval: Approved + schemaURL: ../schemas/open2Eachdotclosecard25c1dot.shex + shape: http://a.example/S + dataURL: abX3c1.ttl + node: x + + - name: "2Eachdot" + status: conformant + trait: [EachOf] + comment: "@@ 2Eachdot" + approval: Approved + schemaURL: ../schemas/2Eachdot.shex + shape: http://a.example/S + dataURL: a1b1.ttl + node: s0 + + - name: PstarT + status: conformant + trait: [EachOf] + comment: " {:a @

*; :a @} / { :a , ,

, }" + approval: Approved + schemaURL: ../validation/Pstar.shex + shape: http://a.example/base/S1 + dataURL: Pstar.ttl + node: http://a.example/base/n + # <#PstarT-greedy> + + # <#PstarT-greedy> a sht:ValidationTest ; + # mf:name "PstarT-greedy" ; + # sht:trait sht:EachOf , sht:Greedy ; + # rdfs:comment " {:a @

*; :a @} / { :a , ,

, } Greedy" ; + # mf:status mf:Approved ; + # mf:action [ + # sht:schema <../validation/Pstar.shex> ; + # sht:shape ; + # sht:data ; + # sht:focus + # ] + # . + - name: PTstar + status: conformant + trait: [EachOf, Exhaustive] + comment: " {:a @

; :a @*} / { :a , ,

, }" + approval: Approved + schemaURL: ../validation/Pstar.shex + shape: http://a.example/base/S2 + dataURL: Pstar.ttl + node: http://a.example/base/n + # <#PTstar-greedy-fail> + + # <#PTstar-greedy-fail> a sht:ValidationFailure ; + # mf:name "PTstar-greedy-fail" ; + # sht:trait sht:EachOf , sht:Greedy ; + # rdfs:comment " {:a @

; :a @*} / { :a , ,

, } Greedy" ; + # mf:status mf:Approved ; + # mf:action [ + # sht:schema <../validation/Pstar.shex> ; + # sht:shape ; + # sht:data ; + # sht:focus + # ] + # . + - name: PTstar-greedy-rewrite + status: conformant + trait: [EachOf] + comment: " {:a @*; :a @

} / { :a , ,

, }" + approval: Approved + schemaURL: ../validation/Pstar-greedy-rewrite.shex + shape: http://a.example/base/S2 + dataURL: Pstar.ttl + node: http://a.example/base/n + + - name: PstarTstar + status: conformant + trait: [EachOf] + comment: " {:a @

*; :a @*} / { :a , ,

, }" + approval: Approved + schemaURL: ../validation/Pstar.shex + shape: http://a.example/base/S3 + dataURL: Pstar.ttl + node: http://a.example/base/n + + - name: P2T2 + status: conformant + trait: [EachOf, Exhaustive] + comment: " {:a @

{2}; :a @{2}} / { :a , ,

, }" + approval: Approved + schemaURL: ../validation/Pstar.shex + shape: http://a.example/base/S4 + dataURL: Pstar.ttl + node: http://a.example/base/n + + - name: "8dot5a2b1c_pass-a5b2c1" + status: conformant + trait: [EachOf, Exhaustive] + comment: " { :a .; :a .; :a .; :a .; :a .; :b .; :b .; :c . } on { :a \"1\", \"2\", \"3\", \"4\", \"5\" ; :b \"1\", \"2\" ; :c \"1\" }" + approval: Approved + schemaURL: ../schemas/8dot5a2b1c.shex + shape: http://a.example/S + dataURL: a5b2c1.ttl + node: x + + - name: "8dot5a2b1c_fail-a5b1" + status: nonconformant + trait: [EachOf, Exhaustive] + comment: " { :a .; :a .; :a .; :a .; :a .; :b .; :b .; :c . } on { :a \"1\", \"2\", \"3\", \"4\", \"5\" ; :b \"1\" }" + approval: Approved + schemaURL: ../schemas/8dot5a2b1c.shex + shape: http://a.example/S + dataURL: a5b1.ttl + node: x + + - name: "8dot5a2b1c_fail-a6b2c1" + status: nonconformant + trait: [EachOf, Exhaustive] + comment: " { :a .; :a .; :a .; :a .; :a .; :b .; :b .; :c . } on { :a \"1\", \"2\", \"3\", \"4\", \"5\", \"6\" ; :b \"1\", \"2\" ; :c \"1\" }" + approval: Approved + schemaURL: ../schemas/8dot5a2b1c.shex + shape: http://a.example/S + dataURL: a6b2c1.ttl + node: x + + ## } manual schemas + + ## error reporting + ## Abstract { + + ## } Abstract + # deferred { + ## error reporting { + - name: "1dot_fail-empty-err" + status: nonconformant + trait: [ErrorReport] + comment: " { . } on { }" + approval: Approved + schemaURL: ../schemas/1dot.shex + shape: http://a.example/S1 + dataURL: empty.ttl + node: http://a.example/s1 + + - name: "2dot_fail-empty-err" + status: nonconformant # 2dot_fail-missing-err + trait: [ErrorReport] + comment: " { .; . } on { }" + approval: Approved + schemaURL: ../schemas/2dot.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + ## } error reporting + + ## imports + ### shape reference + ## imports { + ### shape reference { + + ### 2RefS1-IS2 : I=2RefS2 S1 | 2RefS2 : S2 sht:imports + ### 2RefS2-IS1 : I=2RefS1 S2 | 2RefS1 : S1 sht:imports + ### 2RefS1-Icirc: I=2RefS2-Icirc S1 | 2RefS2-Icirc: I=2RefS1 S2 sht:imports , sht:circularImports + + ### 3circRefS123 : S1 S2 S3 + ### 3circRefS1-IS23 : I=3circRefS23 S1 | 3circRefS23 : S2 S3 + ### 3circRefS1-IS2-IS3 : I=3circRefS2-IS3 S1 | 3circRefS2-IS3 : I=3circRefS3 S2 | 3circRefS3: S3 + ### 3circRefS3-IS12 : I=3circRefS12 S3 | 3circRefS12 : S1 S2 + ### 3circRefS123-Icirc : I=3circRefS123-Icirc S1 S2 S3 + ### 3circRefS1-Icirc : I=3circRefS2-Icirc S1 | 3circRefS2-Icirc : I=3circRefS3-Icirc S2 | 3circRefS3-Icirc: I=3circRefS1-Icirc S3 + ### 3circRefS1-IS2-IS3-IS3 : I=3circRefS2-IS3 I=3circRefS3 S1 | 3circRefS2-IS3 : I=3circRefS3 S2 | 3circRefS3: S3 + - name: "2RefS1-IS2" + status: conformant + trait: [Import] + comment: "I2 { @ } | { . } on { . \"X\" }" + approval: Approved + schemaURL: ../schemas/2RefS1-IS2.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "2RefS1-IS2_fail-p2" + status: nonconformant + trait: [Import] + comment: "I2 { @ } | { . } on { }" + approval: Approved + schemaURL: ../schemas/2RefS1-IS2.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.ttl + node: http://a.example/n1 + + - name: "2RefS2-IS1" + status: conformant + trait: [Import] + comment: "I2 { . } | { @ } on { . \"X\" }" + approval: Approved + schemaURL: ../schemas/2RefS2-IS1.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "2RefS1-Icirc" + status: conformant + trait: [Import] + comment: "I2 { @ } | I1 { . } on { . \"X\" }" + approval: Approved + schemaURL: ../schemas/2RefS1-Icirc.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: "2RefS1-Icirc_fail-p2" + status: nonconformant + trait: [Import] + comment: "I2circ { @ } | { . } on { }" + approval: Approved + schemaURL: ../schemas/2RefS1-Icirc.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.ttl + node: http://a.example/n1 + + - name: "3circRefS1-IS23" + status: conformant + trait: [Import] + comment: "I23 { .; @? } | { @ } { @ } on { \"X\" ; . . . \"X\" }" + approval: Approved + schemaURL: ../schemas/3circRefS1-IS23.shex + shape: http://a.example/S1 + dataURL: "3circRefPlus1_pass-open.ttl" + node: http://a.example/n1 + + - name: "3circRefS1-IS23_pass-p1" + status: conformant + trait: [Import] + comment: "I23 { .; @? } | { @ } { @ } on { }" + approval: Approved + schemaURL: ../schemas/3circRefS1-IS23.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_In2.ttl + node: http://a.example/n1 + + - name: "3circRefS1-IS2-IS3" + status: conformant + trait: [Import] + comment: "I2 { .; @? } | I3 { @ } | { @ } on { \"X\" ; . . . \"X\" }" + approval: Approved + schemaURL: ../schemas/3circRefS1-IS2-IS3.shex + shape: http://a.example/S1 + dataURL: "3circRefPlus1_pass-open.ttl" + node: http://a.example/n1 + + - name: "3circRefS3-IS12" + status: conformant + trait: [Import] + comment: "I2 { @ } | { .; @? } { @ } on { \"X\" ; . . . \"X\" }" + approval: Approved + schemaURL: ../schemas/3circRefS3-IS12.shex + shape: http://a.example/S1 + dataURL: "3circRefPlus1_pass-open.ttl" + node: http://a.example/n1 + + - name: "3circRefS123-Icirc" + status: conformant + trait: [Import] + comment: "I1 { .; @? } { @ } { @ } on { \"X\" ; . . . \"X\" }" + approval: Approved + schemaURL: ../schemas/3circRefS123-Icirc.shex + shape: http://a.example/S1 + dataURL: "3circRefPlus1_pass-open.ttl" + node: http://a.example/n1 + + - name: "3circRefS1-Icirc" + status: conformant + trait: [Import] + comment: "I2 { .; @? } | I3 { @ } | I1 { @ } on { \"X\" ; . . . \"X\" }" + approval: Approved + schemaURL: ../schemas/3circRefS1-Icirc.shex + shape: http://a.example/S1 + dataURL: "3circRefPlus1_pass-open.ttl" + node: http://a.example/n1 + + - name: "3circRefS1-IS2-IS3-IS3" + status: conformant + trait: [Import] + comment: "I2 I3 { .; @? } | I3 { @ } | { @ } on { \"X\" ; . . . \"X\" }" + approval: Approved + schemaURL: ../schemas/3circRefS1-IS2-IS3-IS3.shex + shape: http://a.example/S1 + dataURL: "3circRefPlus1_pass-open.ttl" + node: http://a.example/n1 + + ### } shape reference + + ### start shape reference + ### start shape reference { + - name: start2RefS1-IstartS2 + status: conformant + trait: [Import, Start] + comment: "I2 start=@ { @ } | { . } on { . \"X\" }" + approval: Proposed + schemaURL: ../schemas/start2RefS1-IstartS2.shex + # sht:shape ; + dataURL: In1_Ip1_In2.In2_Ip2_LX.ttl + node: http://a.example/n1 + + - name: start2RefS2-IstartS1 + status: conformant + trait: [Import, Start] + comment: "I2 start=@ { @ } | { . } on { . \"X\" }" + approval: Proposed + schemaURL: ../schemas/start2RefS2-IstartS1.shex + # sht:shape ; + dataURL: In1_Ip2_In2.In2_Ip1_LX.ttl + node: http://a.example/n1 + + ### } start shape reference + + ### value reference + ### value reference { + - name: "1valExprRef-IV1_fail-lit-short" + status: nonconformant + trait: [ValueReference, LengthFacet, Import] + comment: " = LITERAL MINLENGTH 5 { } on { \"abcd\" }" + approval: Approved + schemaURL: ../schemas/1valExprRef-IV1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcd.ttl + node: http://a.example/s1 + + - name: "1valExprRef-IV1_pass-lit-equal" + status: conformant + trait: [ValueReference, LengthFacet, Import] + comment: " = LITERAL MINLENGTH 5 { } on { \"abcde\" }" + approval: Approved + schemaURL: ../schemas/1valExprRef-IV1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcde.ttl + node: http://a.example/s1 + + - name: "1valExprRefbnode-IV1_fail-lit-short" + status: nonconformant + trait: [BNodeShapeLabel, CrossFileBNodeShapeLabel, ValueReference, LengthFacet, Import] + comment: "_:vc1 = LITERAL MINLENGTH 5 { _:vc1 } on { \"abcd\" }" + approval: Approved + schemaURL: ../schemas/1valExprRefbnode-IV1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcd.ttl + node: http://a.example/s1 + + - name: "1valExprRefbnode-IV1_pass-lit-equal" + status: conformant + trait: [BNodeShapeLabel, CrossFileBNodeShapeLabel, ValueReference, LengthFacet, Import] + comment: "_:vc1 = LITERAL MINLENGTH 5 { _:vc1 } on { \"abcde\" }" + approval: Approved + schemaURL: ../schemas/1valExprRefbnode-IV1.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Labcde.ttl + node: http://a.example/s1 + + ### } value reference + + ### include (ref to triple expression) + ### include { + - name: "2EachInclude1-IS2_pass" + status: conformant + trait: [Include, EachOf, Import] + comment: "I2 { &; . } on { \"X\" ; \"Y\" }" + approval: Approved + schemaURL: ../schemas/2EachInclude1-IS2.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_LX.In1_Ip2_LY.ttl + node: http://a.example/n1 + + ### } include + ## } imports + + # could steal from: <#2EachInclude1-after_pass> <#2OneInclude1_pass> <#2OneInclude1-after_pass> + + ## lists + ## lists { + - name: "1list0PlusDot-empty_pass" + status: conformant + trait: [Include, EachOf, Import] + comment: " { (DOT*) } on { () }" + approval: Proposed + schemaURL: ../schemas/1list0PlusDot.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_list_empty.ttl + node: http://a.example/n1 + + - name: "1list0PlusDot-list_Iv1,Iv2,Iv3_pass" + status: conformant + trait: [Include, EachOf, Import] + comment: " { (DOT*) } on { ( ) }" + approval: Proposed + schemaURL: ../schemas/1list0PlusDot.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_list_Iv1,Iv2,Iv3.ttl + node: http://a.example/n1 + + - name: "1list0PlusDot-list_Iv1,Iv2,Lx_pass" + status: conformant + trait: [Include, EachOf, Import] + comment: " { (DOT*) } on { ( \"X\") }" + approval: Proposed + schemaURL: ../schemas/1list0PlusDot.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_list_Iv1,Iv2,LX.ttl + node: http://a.example/n1 + + - name: "1list0PlusDot-manualList_Iv1,Iv2,Iv3_pass" + status: conformant + trait: [Include, EachOf, Import] + comment: " { (DOT*) } on { ( ) }" + approval: Proposed + schemaURL: ../schemas/1list0PlusDot.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_manualList_Iv1,Iv2,Iv3.ttl + node: http://a.example/n1 + + - name: "1list0PlusDot-manualList_extraArc_Iv1,Iv2,Iv3_fail" + status: nonconformant + trait: [Include, EachOf, Import] + comment: " { (DOT*) } on { ( ) }" + approval: Proposed + schemaURL: ../schemas/1list0PlusDot.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_manualList_extraArc_Iv1,Iv2,Iv3.ttl + node: http://a.example/n1 + # <#1list0PlusDot-manualList_circular_Iv1,Iv2,Iv3_fail> + + # <#1list0PlusDot-manualList_circular_Iv1,Iv2,Iv3_fail> a sht:ValidationFailure ; + # mf:name "1list0PlusDot-manualList_circular_Iv1,Iv2,Iv3_fail" ; + # sht:trait sht:Include , sht:EachOf , sht:Import ; + # rdfs:comment " { (DOT*) } on { ( ) }" ; + # mf:status mf:Proposed ; + # mf:action [ + # sht:schema <../schemas/1list0PlusDot.shex> ; + # sht:shape ; + # sht:data ; + # sht:focus + # ] + # . + - name: "1list0PlusDot-manualList_2firsts_Iv1,Iv2,Iv3_fail" + status: nonconformant + trait: [Include, EachOf, Import] + comment: " { (DOT*) } on { ( ) }" + approval: Proposed + schemaURL: ../schemas/1list0PlusDot.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_manualList_2firsts_Iv1,Iv2,Iv3.ttl + node: http://a.example/n1 + + - name: "1list0PlusIri-empty_pass" + status: conformant + trait: [Include, EachOf, Import] + comment: " { (IRI*) } on { () }" + approval: Proposed + schemaURL: ../schemas/1list0PlusIri.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_list_empty.ttl + node: http://a.example/n1 + + - name: "1list0PlusIri-list_Iv1,Iv2,Iv3_pass" + status: conformant + trait: [Include, EachOf, Import] + comment: " { (IRI*) } on { ( ) }" + approval: Proposed + schemaURL: ../schemas/1list0PlusIri.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_list_Iv1,Iv2,Iv3.ttl + node: http://a.example/n1 + + - name: "1list0PlusIri-list_Iv1,Iv2,Lx_fail" + status: nonconformant + trait: [Include, EachOf, Import] + comment: " { (IRI*) } on { ( \"X\") }" + approval: Proposed + schemaURL: ../schemas/1list0PlusIri.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_list_Iv1,Iv2,LX.ttl + node: http://a.example/n1 + + - name: "1list1PlusIri-empty_pass" + status: nonconformant + trait: [Include, EachOf, Import] + comment: " { (IRI*) } on { () }" + approval: Proposed + schemaURL: ../schemas/1list1PlusIri.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_list_empty.ttl + node: http://a.example/n1 + + - name: "1list1PlusIri-list_Iv1,Iv2,Iv3_pass" + status: conformant + trait: [Include, EachOf, Import] + comment: " { (IRI*) } on { ( ) }" + approval: Proposed + schemaURL: ../schemas/1list1PlusIri.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_list_Iv1,Iv2,Iv3.ttl + node: http://a.example/n1 + + - name: "1list1PlusIri-list_Iv1,Iv2,Lx_fail" + status: nonconformant + trait: [Include, EachOf, Import] + comment: " { (IRI*) } on { ( \"X\") }" + approval: Proposed + schemaURL: ../schemas/1list1PlusIri.shex + shape: http://a.example/S1 + dataURL: In1_Ip1_list_Iv1,Iv2,LX.ttl + node: http://a.example/n1 + + ## } lists + + ## ShapeMaps + ## ShapeMaps { + - name: node_kind_example + status: nonconformant # node_kind_example + trait: [ShapeMap] + comment: " { IRI} on { . . \"o3\" }" + approval: Proposed + schemaURL: ../schemas/node_kind_example.shex + queryMapURL: node_kind_example_map.json + dataURL: node_kind_example.ttl + resultURL: node_kind_example_results.json + + - name: dependent_shape + status: conformant # dependent_shape + trait: [ShapeMap] + comment: " { @} { []} on { . }" + approval: Proposed + schemaURL: ../schemas/dependent_shape.shex + queryMapURL: dependent_shape_map.json + dataURL: dependent_shape.ttl + resultURL: dependent_shape_results.json + + - name: recursion_example + status: conformant # recursion_example + trait: [ShapeMap, RecursiveData] + comment: " { @*} on { . . }" + approval: Proposed + schemaURL: ../schemas/recursion_example.shex + queryMapURL: recursion_example_map.json + dataURL: recursion_example.ttl + resultURL: recursion_example_results.json + + ## } ShapeMaps + + ## Extends + - name: extends-abstract-multi-empty_fail-Ref2ExtraP + status: nonconformant + trait: [Extends, Abstract, MultiExtends, Closed] + comment: " C { ... @ ... @ } ABS EXT @ ABS EXT @ EXT @ on { ... - @ f:name; f:givenName; f:familyName. ... } " + approval: proposed + schemaURL: ../schemas/extends-abstract-multi-empty.shex + shape: http://a.example/IssueShape + dataURL: extends-abstract-multi-empty_employee-extraP.ttl + node: http://a.example/Issue1 + + - name: extends-abstract-multi-empty_fail-Ref1ExtraP + status: nonconformant + trait: [Extends, Abstract, MultiExtends, Closed] + comment: " C { ... @ ... @ } ABS EXT @ ABS EXT @ EXT @ on { ... - @ f:name; f:givenName; f:familyName. ... } " + approval: proposed + schemaURL: ../schemas/extends-abstract-multi-empty.shex + shape: http://a.example/IssueShape + dataURL: extends-abstract-multi-empty_user-extraP.ttl + node: http://a.example/Issue1 + + - name: extends-abstract-multi-empty_fail-ReferrerExtraP + status: nonconformant + trait: [Extends, Abstract, MultiExtends, Closed] + comment: " C { ... @ ... @ } ABS EXT @ ABS EXT @ EXT @ on { ... - @ f:name; f:givenName; f:familyName. ... } " + approval: proposed + schemaURL: ../schemas/extends-abstract-multi-empty.shex + shape: http://a.example/IssueShape + dataURL: extends-abstract-multi-empty_issue-extraP.ttl + node: http://a.example/Issue1 + + - name: extends-abstract-multi-empty_fail-Ref1ExtraOR + status: nonconformant + trait: [Extends, Abstract, MultiExtends, Closed] + comment: " C { ... @ ... @ } ABS EXT @ ABS EXT @ EXT @ on { ... - @ f:name; f:givenName; f:familyName. ... } " + approval: proposed + schemaURL: ../schemas/extends-abstract-multi-empty.shex + shape: http://a.example/IssueShape + dataURL: extends-abstract-multi-empty_extraOR.ttl + node: http://a.example/Issue1 + + - name: extends-abstract-multi-empty_fail-missingRef2 + status: nonconformant + trait: [Extends, Abstract, MultiExtends, Closed] + comment: " C { ... @ ... @ } ABS EXT @ ABS EXT @ EXT @ on { ... - @ ... ... } " + approval: proposed + schemaURL: ../schemas/extends-abstract-multi-empty.shex + shape: http://a.example/IssueShape + dataURL: extends-abstract-multi-empty_no-person.ttl + node: http://a.example/Issue1 + + - name: extends-abstract-multi-empty_pass-missingOptRef1 + status: conformant + trait: [Extends, Abstract, MultiExtends, Closed] + comment: " C { ... @ ... @ } ABS EXT @ ABS EXT @ EXT @ on { ... - @ ... ... } " + approval: proposed + schemaURL: ../schemas/extends-abstract-multi-empty.shex + shape: http://a.example/IssueShape + dataURL: extends-abstract-multi-empty_no-employee.ttl + node: http://a.example/Issue1 + ## Extends { + - name: extends-abstract-multi-empty_pass + status: conformant + trait: [Extends, Abstract, MultiExtends, Closed] + comment: " C { ... @ ... @ } ABS EXT @ ABS EXT @ EXT @ on { ... ... ... } " + approval: proposed + schemaURL: ../schemas/extends-abstract-multi-empty.shex + shape: http://a.example/IssueShape + dataURL: extends-abstract-multi-empty_pass.ttl + node: http://a.example/Issue1 + + - name: ExtendsRepeatedP-pass + status: conformant + trait: [Extends, Exhaustive] + comment: " { :p{2}; :q[3] } @AND{ :p+; :q+ } EXT @ { :p } on { :s :p 1,2,3; :q 3 }" + approval: proposed + schemaURL: ../schemas/ExtendsRepeatedP.shex + shape: "http://a.example/#C" + dataURL: sP123q3.ttl + node: http://a.example/s + + - name: ExtendsRepeatedP-fail_vs + status: nonconformant + trait: [Extends] + comment: " { :p{2}; :q[3] } @AND{ :p+; :q+ } EXT @ { :p } on { :s :p 1,2,3; :q 99 }" + approval: proposed + schemaURL: ../schemas/ExtendsRepeatedP.shex + shape: "http://a.example/#C" + dataURL: sP123q99.ttl + node: http://a.example/s + + - name: ANDAbstract-pass + status: conformant + trait: [Extends] + comment: "ABSTRACT /sA/ AND {:p} @ AND /s B/ {:p} on {

0 }" + approval: proposed + schemaURL: ../schemas/ANDAbstract.shex + shape: http://a.example/B + dataURL: sAB.ttl + node: http://a.example/sABxxxxxxxxx + + - name: ANDAbstract-fail_G1pattern + status: nonconformant + trait: [Extends] + comment: "ABSTRACT /sA/ AND {:p} @ AND /s B/ {:p} on {

0 }" + approval: proposed + schemaURL: ../schemas/ANDAbstract.shex + shape: http://a.example/B + dataURL: sAB.ttl + node: http://a.example/sAxxxxxxxxxx + + - name: ANDAbstract-fail_pattern + status: nonconformant + trait: [Extends] + comment: "ABSTRACT /sA/ AND {:p} @ AND /s B/ {:p} on {

0 }" + approval: proposed + schemaURL: ../schemas/ANDAbstract.shex + shape: http://a.example/B + dataURL: sAB.ttl + node: http://a.example/sxBxxxxxxxxx + + - name: "1dotAbstract_fail-abstract" + status: nonconformant + trait: [Extends] + comment: "ABSTRACT { . } on { } -- nothing extends , so no node can satisfy it" + approval: Proposed + schemaURL: ../schemas/1dotAbstract.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: AND3G-pass + status: conformant + trait: [Extends] + comment: "ABS ABS @ @ AND @ on {

0 }" + approval: proposed + schemaURL: ../schemas/AND3G.shex + shape: http://a.example/D + dataURL: sABCD.ttl + node: http://a.example/sABCDxxxxxxx + + - name: AND3G-fail_G2pattern + status: nonconformant + trait: [Extends] + comment: "ABS ABS @ @ AND @ on {

0 }" + approval: proposed + schemaURL: ../schemas/AND3G.shex + shape: http://a.example/D + dataURL: sABCD.ttl + node: http://a.example/sxBCDxxxxxxx + + - name: AND3G-fail_G1Bpattern + status: nonconformant + trait: [Extends] + comment: "ABS ABS @ @ AND @ on {

0 }" + approval: proposed + schemaURL: ../schemas/AND3G.shex + shape: http://a.example/D + dataURL: sABCD.ttl + node: http://a.example/sABxDxxxxxxx + + - name: ExtendAND3G-pass + status: conformant + trait: [Extends, Exhaustive] + comment: " EXTENDS @ {:p [2]} on {

0, 2 }" + approval: proposed + schemaURL: ../schemas/ExtendAND3G.shex + shape: http://a.example/E + dataURL: sABCDE.ttl + node: http://a.example/sABCDExxxxxx + + - name: ExtendAND3G-fail_EXTG1 + status: nonconformant + trait: [Extends] + comment: " EXTENDS @ {:p [2]} on {

2 }" + approval: proposed + schemaURL: ../schemas/ExtendAND3G.shex + shape: http://a.example/E + dataURL: sABCDE.ttl + node: http://a.example/sABCDExxxxx1 + + - name: ExtendAND3G-fail_ExtraP + status: nonconformant + trait: [Extends] + comment: " EXTENDS @ {:p [2]} on {

0, 2, 3 }" + approval: proposed + schemaURL: ../schemas/ExtendAND3G.shex + shape: http://a.example/E + dataURL: sABCDE.ttl + node: http://a.example/sABCDExxxxx3 + + - name: ExtendAND3G-fail_G3pattern + status: nonconformant + trait: [Extends] + comment: " EXTENDS @ {:p [2]} on {

0, 2 }" + approval: proposed + schemaURL: ../schemas/ExtendAND3G.shex + shape: http://a.example/E + dataURL: sABCDE.ttl + node: http://a.example/sxBCDExxxxxx + + - name: ExtendAND3G-fail_EXTG1ANDG1 + status: nonconformant + trait: [Extends] + comment: " EXTENDS @ {:p [2]} on {

0, 2 }" + approval: proposed + schemaURL: ../schemas/ExtendAND3G.shex + shape: http://a.example/E + dataURL: sABCDE.ttl + node: http://a.example/sABxDExxxxxx + + - name: ExtendAND3G-fail_EXTG1pattern + status: nonconformant + trait: [Extends] + comment: " EXTENDS @ {:p [2]} on {

0, 2 }" + approval: proposed + schemaURL: ../schemas/ExtendAND3G.shex + shape: http://a.example/E + dataURL: sABCDE.ttl + node: http://a.example/sABCxExxxxxx + + - name: ExtendAND3G-fail_G0 + status: nonconformant + trait: [Extends] + comment: " EXTENDS @ {:p [2]} on {

0, 2 }" + approval: proposed + schemaURL: ../schemas/ExtendAND3G.shex + shape: http://a.example/E + dataURL: sABCDE.ttl + node: http://a.example/sABCDxxxxxxx + + - name: Extend3G-pass + status: conformant + trait: [Extends, Exhaustive] + comment: "@@Extend3G-15" + approval: proposed + schemaURL: ../schemas/Extend3G.shex + shape: http://a.example/G + dataURL: sABCDEFG.ttl + node: http://a.example/sABCDEFGxxxx + + - name: Extend3G-t16 + status: nonconformant + trait: [Extends] + comment: "@@Extend3G-16" + approval: proposed + schemaURL: ../schemas/Extend3G.shex + shape: http://a.example/G + dataURL: sABCDEFG.ttl + node: http://a.example/sABCDEFGxxx1 + + - name: Extend3G-t17 + status: nonconformant + trait: [Extends] + comment: "@@Extend3G-17" + approval: proposed + schemaURL: ../schemas/Extend3G.shex + shape: http://a.example/G + dataURL: sABCDEFG.ttl + node: http://a.example/sABCDEFGxxx3 + + - name: Extend3G-t18 + status: nonconformant + trait: [Extends] + comment: "@@Extend3G-18" + approval: proposed + schemaURL: ../schemas/Extend3G.shex + shape: http://a.example/G + dataURL: sABCDEFG.ttl + node: http://a.example/sxBCDEFGxxxx + + - name: Extend3G-t19 + status: nonconformant + trait: [Extends] + comment: "@@Extend3G-19" + approval: proposed + schemaURL: ../schemas/Extend3G.shex + shape: http://a.example/G + dataURL: sABCDEFG.ttl + node: http://a.example/sABxDEFGxxxx + + - name: Extend3G-t20 + status: nonconformant + trait: [Extends] + comment: "@@Extend3G-20" + approval: proposed + schemaURL: ../schemas/Extend3G.shex + shape: http://a.example/G + dataURL: sABCDEFG.ttl + node: http://a.example/sABCxEFGxxxx + + - name: Extend3G-t21 + status: nonconformant + trait: [Extends] + comment: "@@Extend3G-21" + approval: proposed + schemaURL: ../schemas/Extend3G.shex + shape: http://a.example/G + dataURL: sABCDEFG.ttl + node: http://a.example/sABCDxFGxxxx + + - name: ExtendANDExtend3GAND3G-pass + status: conformant + trait: [Extends, Exhaustive] + comment: "@@ExtendANDExtend3GAND3G-22" + approval: proposed + schemaURL: ../schemas/ExtendANDExtend3GAND3G.shex + shape: http://a.example/J + dataURL: sABCDEFGHIJ.ttl + node: http://a.example/sABCDEFGHIJx + + - name: ExtendANDExtend3GAND3G-t23 + status: conformant + trait: [Extends] + comment: "@@ExtendANDExtend3GAND3G-23" + approval: proposed + schemaURL: ../schemas/ExtendANDExtend3GAND3G.shex + shape: http://a.example/A + dataURL: sABCDEFGHIJ.ttl + node: http://a.example/sABCDEFGHIJx + + - name: ExtendANDExtend3GAND3G-t24 + status: nonconformant + trait: [Extends] + comment: "@@ExtendANDExtend3GAND3G-24" + approval: proposed + schemaURL: ../schemas/ExtendANDExtend3GAND3G.shex + shape: http://a.example/J + dataURL: sABCDEFGHIJ.ttl + node: http://a.example/sxBCDEFGHIJx + + - name: ExtendANDExtend3GAND3G-t25 + status: nonconformant + trait: [Extends] + comment: "@@ExtendANDExtend3GAND3G-25" + approval: proposed + schemaURL: ../schemas/ExtendANDExtend3GAND3G.shex + shape: http://a.example/J + dataURL: sABCDEFGHIJ.ttl + node: http://a.example/sABCDEFxHIJx + + - name: ExtendANDExtend3GAND3G-t26 + status: nonconformant + trait: [Extends] + comment: "@@ExtendANDExtend3GAND3G-26" + approval: proposed + schemaURL: ../schemas/ExtendANDExtend3GAND3G.shex + shape: http://a.example/J + dataURL: sABCDEFGHIJ.ttl + node: http://a.example/sABCDEFGxIJx + + - name: ExtendANDExtend3GAND3G-t27 + status: nonconformant + trait: [Extends] + comment: "@@ExtendANDExtend3GAND3G-27" + approval: proposed + schemaURL: ../schemas/ExtendANDExtend3GAND3G.shex + shape: http://a.example/J + dataURL: sABCDEFGHIJ.ttl + node: http://a.example/sABCDEFGHxJx + + - name: ExtendANDExtend3GAND3G-t28 + status: nonconformant + trait: [Extends] + comment: "@@ExtendANDExtend3GAND3G-28" + approval: proposed + schemaURL: ../schemas/ExtendANDExtend3GAND3G.shex + shape: http://a.example/J + dataURL: sABCDEFGHIJ.ttl + node: http://a.example/sABCDEFGHIxx + + - name: ExtendANDExtend3GAND3G-t29 + status: nonconformant + trait: [Extends] + comment: "@@ExtendANDExtend3GAND3G-29" + approval: proposed + schemaURL: ../schemas/ExtendANDExtend3GAND3G.shex + shape: http://a.example/J + dataURL: sABCDEFGHIJ.ttl + node: http://a.example/sABCDEFGHIJ0 + + - name: ExtendANDExtend3GAND3G-t30 + status: nonconformant + trait: [Extends] + comment: "@@ExtendANDExtend3GAND3G-30" + approval: proposed + schemaURL: ../schemas/ExtendANDExtend3GAND3G.shex + shape: http://a.example/J + dataURL: sABCDEFGHIJ.ttl + node: http://a.example/sABCDEFGHIJ1 + + - name: ExtendANDExtend3GAND3G-t31 + status: nonconformant + trait: [Extends] + comment: "@@ExtendANDExtend3GAND3G-31" + approval: proposed + schemaURL: ../schemas/ExtendANDExtend3GAND3G.shex + shape: http://a.example/J + dataURL: sABCDEFGHIJ.ttl + node: http://a.example/sABCDEFGHIJ2 + + - name: ExtendANDExtend3GAND3G-t32 + status: nonconformant + trait: [Extends] + comment: "@@ExtendANDExtend3GAND3G-32" + approval: proposed + schemaURL: ../schemas/ExtendANDExtend3GAND3G.shex + shape: http://a.example/J + dataURL: sABCDEFGHIJ.ttl + node: http://a.example/sABCDEFGHIJ3 + + - name: ExtendANDExtend3GAND3G-t33 + status: conformant + trait: [Extends, Exhaustive] + comment: "@@ExtendANDExtend3GAND3G-33" + approval: proposed + schemaURL: ../schemas/ExtendANDExtend3GAND3G.shex + shape: http://a.example/J + dataURL: sABCDEFGHIJ.ttl + node: http://a.example/sABCDEFGHIJ5 + + - name: ExtendANDExtend3GAND3G-t34 + status: nonconformant + trait: [Extends] + comment: "@@ExtendANDExtend3GAND3G-34" + approval: proposed + schemaURL: ../schemas/ExtendANDExtend3GAND3G.shex + shape: http://a.example/J + dataURL: sABCDEFGHIJ.ttl + node: http://a.example/sABCDEFGHIJ6 + + - name: ExtendANDExtend3GAND3G-t35 + status: nonconformant + trait: [Extends] + comment: "@@ExtendANDExtend3GAND3G-35" + approval: proposed + schemaURL: ../schemas/ExtendANDExtend3GAND3G.shex + shape: http://a.example/J + dataURL: sABCDEFGHIJ.ttl + node: http://a.example/sABCDEFGHIJ7 + + - name: vitals-RESTRICTS-pass_lie-Observation + status: conformant + trait: [Extends] + comment: "@@vitals-RESTRICTS-36" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#Observation" + dataURL: vitals.ttl + node: "http://a.example/#lie" + + - name: vitals-RESTRICTS-pass_lie-Vital + status: conformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-37" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#Vital" + dataURL: vitals.ttl + node: "http://a.example/#lie" + + - name: vitals-RESTRICTS-pass_lie-BP + status: conformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-38" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#BP" + dataURL: vitals.ttl + node: "http://a.example/#lie" + + - name: vitals-RESTRICTS-pass_lie-PostureVital + status: conformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-39" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#PostureVital" + dataURL: vitals.ttl + node: "http://a.example/#lie" + + - name: vitals-RESTRICTS-pass_lie-ReclinedVital + status: conformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-40" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#ReclinedVital" + dataURL: vitals.ttl + node: "http://a.example/#lie" + + - name: vitals-RESTRICTS-pass_lie-PostureBP + status: conformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-41" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#PostureBP" + dataURL: vitals.ttl + node: "http://a.example/#lie" + + - name: vitals-RESTRICTS-pass_lie-ReclinedBP + status: conformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-42" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#ReclinedBP" + dataURL: vitals.ttl + node: "http://a.example/#lie" + + - name: vitals-RESTRICTS-pass_lie-Posture + status: conformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-43" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#Posture" + dataURL: vitals.ttl + node: "http://a.example/#lie" + + - name: vitals-RESTRICTS-pass_lie-Reclined + status: conformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-44" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#Reclined" + dataURL: vitals.ttl + node: "http://a.example/#lie" + + - name: vitals-RESTRICTS-pass_sit-Observation + status: conformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-45" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#Observation" + dataURL: vitals.ttl + node: "http://a.example/#sit" + + - name: vitals-RESTRICTS-pass_sit-Vital + status: conformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-46" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#Vital" + dataURL: vitals.ttl + node: "http://a.example/#sit" + + - name: vitals-RESTRICTS-pass_sit-BP + status: conformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-47" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#BP" + dataURL: vitals.ttl + node: "http://a.example/#sit" + + - name: vitals-RESTRICTS-pass_sit-PostureVital + status: conformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-48" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#PostureVital" + dataURL: vitals.ttl + node: "http://a.example/#sit" + + - name: vitals-RESTRICTS-fail_sit-ReclinedVital + status: nonconformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-49" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#ReclinedVital" + dataURL: vitals.ttl + node: "http://a.example/#sit" + + - name: vitals-RESTRICTS-pass_sit-PostureBP + status: conformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-50" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#PostureBP" + dataURL: vitals.ttl + node: "http://a.example/#sit" + + - name: vitals-RESTRICTS-fail_sit-ReclinedBP + status: nonconformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-51" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#ReclinedBP" + dataURL: vitals.ttl + node: "http://a.example/#sit" + + - name: vitals-RESTRICTS-pass_sit-Posture + status: conformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-52" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#Posture" + dataURL: vitals.ttl + node: "http://a.example/#sit" + + - name: vitals-RESTRICTS-fail_sit-Reclined + status: nonconformant + trait: [Extends, Exhaustive] + comment: "@@vitals-RESTRICTS-53" + approval: proposed + schemaURL: ../schemas/vitals-RESTRICTS.shex + shape: "http://a.example/#Reclined" + dataURL: vitals.ttl + node: "http://a.example/#sit" + + ### ExtendsDiamond + + ### ExtendsDiamond { + + # @, + # @!, + # @!, + # @!, + # @!, + # @!, + # @!, + # @! + - name: extends-closed-diamond_pass-bottom + status: conformant + trait: [Extends] + comment: "

\"G0A\", \"G0-0A\", \"G0-0-0A\", \"G0_0-0A\", \"BOTTOMA\" \\ E @ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-diamond.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-diamond.ttl + node: http://a.example/pass-bottom + + - name: extends-closed-diamond_fail-no-G0 + status: nonconformant + trait: [Extends, ExtendsDiamond] + comment: "

\"

\"G0-0A\", \"G0-1A\", \"BOTTOMA\" . \\ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-diamond.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-diamond.ttl + node: http://a.example/no-G0 + + - name: extends-closed-diamond_fail-no-G0-0 + status: nonconformant + trait: [Extends, ExtendsDiamond] + comment: "

\"

\"G0A\", \"G0-1A\", \"BOTTOMA\" . \\ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-diamond.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-diamond.ttl + node: http://a.example/no-G0-0 + + - name: extends-closed-diamond_fail-no-G0-1 + status: nonconformant + trait: [Extends, ExtendsDiamond] + comment: "

\"

\"G0A\", \"G0-0A\", \"BOTTOMA\" . \\ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-diamond.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-diamond.ttl + node: http://a.example/no-G0-1 + + - name: extends-closed-diamond_fail-no_BOTTOM + status: nonconformant + trait: [Extends, ExtendsDiamond] + comment: "

\"

\"G0A\", \"G0-0A\", \"G0-1A\" . \\ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-diamond.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-diamond.ttl + node: http://a.example/no_BOTTOM + + - name: extends-closed-diamond_fail-two-G0s + status: nonconformant + trait: [Extends, ExtendsDiamond] + comment: "

\"

\"G0A\", \"G0B\", \"G0-0A\", \"G0-1A\", \"BOTTOMA\" . \\ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-diamond.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-diamond.ttl + node: http://a.example/two-G0s + + - name: extends-closed-diamond_fail-two-G0-0s + status: nonconformant + trait: [Extends, ExtendsDiamond] + comment: "

\"

\"G0A\", \"G0-0A\", \"G0-0B\", \"G0-1A\", \"BOTTOMA\" . \\ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-diamond.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-diamond.ttl + node: http://a.example/two-G0-0s + + - name: extends-closed-diamond_fail-two-BOTTOMS + status: nonconformant + trait: [Extends, ExtendsDiamond] + comment: "

\"

\"G0A\", \"G0-0A\", \"G0-1A\", \"BOTTOMA\", \"BOTTOMB\" . \\ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-diamond.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-diamond.ttl + node: http://a.example/two-BOTTOMS + + # @, + # @!, + # @!, + # @!, + # @!, + # @!, + # @!, + # @!, + # @! + - name: extends-closed-3diamond-split_pass-bottom + status: conformant + trait: [Extends] + comment: "

\"G0A\", \"G0-0A\", \"G0-0-0A\", \"G0_0-0A\", \"BOTTOMA\" \\ E @ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-3diamond-split.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-3diamond-split.ttl + node: http://a.example/pass-bottom + + - name: extends-closed-3diamond-split_fail-no-G0-0 + status: nonconformant + trait: [Extends, ExtendsDiamond] + comment: "

\"

\"G0A\", \"G0-0-0A\", \"G0_0-0A\", \"BOTTOMA\" . \\ E @ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-3diamond-split.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-3diamond-split.ttl + node: http://a.example/no-G0-0 + + - name: extends-closed-3diamond-split_fail-no-G0-0-0 + status: nonconformant + trait: [Extends, ExtendsDiamond] + comment: "

\"

\"G0A\", \"G0-0A\", \"G0_0-0A\", \"BOTTOMA\" . \\ E @ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-3diamond-split.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-3diamond-split.ttl + node: http://a.example/no-G0-0-0 + + - name: extends-closed-3diamond-split_fail-no-G0_0-0 + status: nonconformant + trait: [Extends, ExtendsDiamond] + comment: "

\"

\"G0A\", \"G0-0A\", \"G0-0-0A\", \"BOTTOMA\" . \\ E @ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-3diamond-split.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-3diamond-split.ttl + node: http://a.example/no-G0_0-0 + + - name: extends-closed-3diamond-split_fail-no_BOTTOM + status: nonconformant + trait: [Extends, ExtendsDiamond] + comment: "

\"

\"G0A\", \"G0-0A\", \"G0-0-0A\", \"G0_0-0A\" . \\ E @ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-3diamond-split.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-3diamond-split.ttl + node: http://a.example/no_BOTTOM + + - name: extends-closed-3diamond-split_fail-two-G0s + status: nonconformant + trait: [Extends, ExtendsDiamond] + comment: "

\"

\"G0A\", \"G0B\", \"G0-0A\", \"G0-0-0A\", \"G0_0-0A\", \"BOTTOMA\" . \\ E @ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-3diamond-split.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-3diamond-split.ttl + node: http://a.example/two-G0s + + - name: extends-closed-3diamond-split_fail-two-G0-0s + status: nonconformant + trait: [Extends, ExtendsDiamond] + comment: "

\"

\"G0A\", \"G0-0A\", \"G0-0B\", \"G0-0-0A\", \"G0_0-0A\", \"BOTTOMA\" . \\ E @ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-3diamond-split.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-3diamond-split.ttl + node: http://a.example/two-G0-0s + + - name: extends-closed-3diamond-split_fail-two-BOTTOMS + status: nonconformant + trait: [Extends, ExtendsDiamond] + comment: "

\"

\"G0A\", \"G0-0A\", \"G0-0-0A\", \"G0_0-0A\", \"BOTTOMA\", \"BOTTOMB\" . \\ E @ E @ E @ E @" + approval: proposed + schemaURL: ../schemas/extends-closed-3diamond-split.shex + shape: http://a.example/BOTTOM + dataURL: extends-closed-3diamond-split.ttl + node: http://a.example/two-BOTTOMS + + ### } ExtendsDiamond + + ### ExtendsClosed + ### ExtendsClosed { + - name: extends-closed-or-each-each_pass-each-1 + status: conformant + trait: [Extends] + comment: "

0 ; 1 . \\ {

. ; . } OR {

. ; . } E C @ { }" + approval: proposed + schemaURL: ../schemas/extends-closed-or-each-each.shex + shape: "http://a.example/sh#Child" + dataURL: or-each-each_instance.ttl + node: "http://a.example/inst#each-1" + + - name: extends-closed-or-each-each_pass-each-2 + status: conformant + trait: [Extends] + comment: "

0 ; 2 . \\ {

. ; . } OR {

. ; . } E C @ { }" + approval: proposed + schemaURL: ../schemas/extends-closed-or-each-each.shex + shape: "http://a.example/sh#Child" + dataURL: or-each-each_instance.ttl + node: "http://a.example/inst#each-2" + + - name: extends-closed-or-each-each_fail-cross-each + status: nonconformant + trait: [Extends] + comment: "

0 ; 1 ; 2 . \\ {

. ; . } OR {

. ; . } E C @ { }" + approval: proposed + schemaURL: ../schemas/extends-closed-or-each-each.shex + shape: "http://a.example/sh#Child" + dataURL: or-each-each_instance.ttl + node: "http://a.example/inst#each-1-2" + + # The Turtle identified this test as <#extends-open-or-each-each_pass-cross-each> and named it "extends-open-or-each-each_fail-cross-each". + - "@id": "#extends-open-or-each-each_pass-cross-each" + name: extends-open-or-each-each_fail-cross-each + status: conformant + trait: [Extends] + comment: "

0 ; 1 ; 2 . \\ {

. ; . } OR {

. ; . } E @ { }" + approval: proposed + schemaURL: ../schemas/extends-open-or-each-each.shex + shape: "http://a.example/sh#Child" + dataURL: or-each-each_instance.ttl + node: "http://a.example/inst#each-1-2" + + - name: "1dotExtendsBnode_pass" + status: conformant + trait: [Extends, BNodeShapeLabel] + comment: " EXTENDS @_:b { . } _:b { . } on { ; }" + approval: Approved + schemaURL: ../schemas/1dotExtendsBnode.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1;Ip2_Io2.ttl + node: http://a.example/s1 + + - name: "1dotExtendsBnode_fail-p2" + status: nonconformant + trait: [Extends, BNodeShapeLabel] + comment: " EXTENDS @_:b { . } _:b { . } on { }" + approval: Approved + schemaURL: ../schemas/1dotExtendsBnode.shex + shape: http://a.example/S1 + dataURL: Is1_Ip1_Io1.ttl + node: http://a.example/s1 + + - name: extends-abstract-closed-diamond_pass-via-G0-0 + status: conformant + trait: [Extends, Abstract, ExtendsDiamond, Closed] + comment: "ABSTRACT C {..} E @ C {..} E @ C {..} E @ E @ C {..}, validated as the abstract top on {

\"G0A\", \"G0-0A\" }" + approval: Approved + schemaURL: ../schemas/extends-abstract-closed-diamond.shex + shape: http://a.example/G0 + dataURL: extends-abstract-closed-diamond.ttl + node: http://a.example/via-G0-0 + + - name: extends-abstract-closed-diamond_pass-via-G0-1 + status: conformant + trait: [Extends, Abstract, ExtendsDiamond, Closed] + comment: "ABSTRACT C {..} E @ C {..} E @ C {..} E @ E @ C {..}, validated as the abstract top on {

\"G0A\", \"G0-1A\" }" + approval: Approved + schemaURL: ../schemas/extends-abstract-closed-diamond.shex + shape: http://a.example/G0 + dataURL: extends-abstract-closed-diamond.ttl + node: http://a.example/via-G0-1 + + - name: extends-abstract-closed-diamond_pass-via-BOTTOM + status: conformant + trait: [Extends, Abstract, ExtendsDiamond, Closed] + comment: "ABSTRACT C {..} E @ C {..} E @ C {..} E @ E @ C {..}, validated as the abstract top on {

\"G0A\", \"G0-0A\", \"G0-1A\", \"BOTTOMA\" }" + approval: Approved + schemaURL: ../schemas/extends-abstract-closed-diamond.shex + shape: http://a.example/G0 + dataURL: extends-abstract-closed-diamond.ttl + node: http://a.example/via-BOTTOM + + - name: extends-abstract-closed-diamond_fail-only-G0 + status: nonconformant + trait: [Extends, Abstract, ExtendsDiamond, Closed] + comment: "ABSTRACT C {..} E @ C {..} E @ C {..} E @ E @ C {..}, validated as the abstract top on {

\"G0A\" }" + approval: Approved + schemaURL: ../schemas/extends-abstract-closed-diamond.shex + shape: http://a.example/G0 + dataURL: extends-abstract-closed-diamond.ttl + node: http://a.example/only-G0 + + - name: extends-abstract-closed-diamond_fail-no-G0 + status: nonconformant + trait: [Extends, Abstract, ExtendsDiamond, Closed] + comment: "ABSTRACT C {..} E @ C {..} E @ C {..} E @ E @ C {..}, validated as the abstract top on {

\"G0-0A\", \"G0-1A\", \"BOTTOMA\" }" + approval: Approved + schemaURL: ../schemas/extends-abstract-closed-diamond.shex + shape: http://a.example/G0 + dataURL: extends-abstract-closed-diamond.ttl + node: http://a.example/no-G0 + + - name: extends-abstract-closed-diamond_fail-no-BOTTOM + status: nonconformant + trait: [Extends, Abstract, ExtendsDiamond, Closed] + comment: "ABSTRACT C {..} E @ C {..} E @ C {..} E @ E @ C {..}, validated as the abstract top on {

\"G0A\", \"G0-0A\", \"G0-1A\" }" + approval: Approved + schemaURL: ../schemas/extends-abstract-closed-diamond.shex + shape: http://a.example/G0 + dataURL: extends-abstract-closed-diamond.ttl + node: http://a.example/no-BOTTOM + + - name: extends-abstract-or_fail-via-X + status: nonconformant + trait: [Extends, Abstract, OrValueExpression] + comment: "ABSTRACT { . } { . } @ OR EXTENDS @ { . } on { } as -- is satisfied only through @, which does not extend , so the node is no " + approval: Approved + schemaURL: ../schemas/extends-abstract-or.shex + shape: http://a.example/A + dataURL: extends-abstract-or.ttl + node: http://a.example/via-X + + - name: extends-abstract-or_fail-X-and-A + status: nonconformant + trait: [Extends, Abstract, OrValueExpression] + comment: "ABSTRACT { . } { . } @ OR EXTENDS @ { . } on { ; } as " + approval: Approved + schemaURL: ../schemas/extends-abstract-or.shex + shape: http://a.example/A + dataURL: extends-abstract-or.ttl + node: http://a.example/X-and-A + + - name: extends-abstract-or_pass-via-A + status: conformant + trait: [Extends, Abstract, OrValueExpression] + comment: "ABSTRACT { . } { . } @ OR EXTENDS @ { . } on { ; } as " + approval: Approved + schemaURL: ../schemas/extends-abstract-or.shex + shape: http://a.example/A + dataURL: extends-abstract-or.ttl + node: http://a.example/via-A + + - name: extends-abstract-or_pass-all + status: conformant + trait: [Extends, Abstract, OrValueExpression] + comment: "ABSTRACT { . } { . } @ OR EXTENDS @ { . } on { ; ; } as " + approval: Approved + schemaURL: ../schemas/extends-abstract-or.shex + shape: http://a.example/A + dataURL: extends-abstract-or.ttl + node: http://a.example/all + + - name: extends-abstract-or_pass-D-via-X + status: conformant + trait: [Extends, Abstract, OrValueExpression] + comment: "ABSTRACT { . } { . } @ OR EXTENDS @ { . } on { } as " + approval: Approved + schemaURL: ../schemas/extends-abstract-or.shex + shape: http://a.example/D + dataURL: extends-abstract-or.ttl + node: http://a.example/via-X + + ### } ExtendsClosed + ## } Extends +# futureWork { +## inherit { + +# !../schemas/0Inherit1.shex +# !../schemas/1dotInherit1.shex +# !../schemas/1dotInherit3.shex +# !../schemas/1dot3Inherit.shex [1dotInherit3.shex] +# !../schemas/1dot3InheritLN.shex + +### virtual { +# !../schemas/1dotVirtualShapeCode1.shex +# !../schemas/1dotVirtual.shex +### } virtual +## } inherit +## unlabeled semantic actions { +# !../schemas/1dotUnlabeledCode1.shex +## } unlabeled semantic actions +## everything { +# !../schemas/_all.shex +# !../schemas/kitchenSink.shex +## } everything +# } futureWork diff --git a/vocab/README.md b/vocab/README.md index cbe796a3..099ebabe 100644 --- a/vocab/README.md +++ b/vocab/README.md @@ -8,6 +8,23 @@ This lives here because shexTest already carried two hand-maintained copies of this vocabulary — `../doc/ShExJ-context.jsonld` and `../doc/ShExR.shex` — and both had drifted from what is published at www.w3.org/ns/shex. +## Two vocabularies + +`mk_vocab.js` maintains a second vocabulary the same way: the **ShEx +manifest vocabulary**, `http://www.w3.org/ns/shex-manifest#`, from +`manifest-vocab.csv` (`--vocab shex-manifest`, or `npm run vocab-manifest -- +--nsdir path/to/w3c/ns`, which writes `shex-manifest.ttl`, `.jsonld` and +`.html` there). It holds what a manifest of ShEx validations is written in +-- `entries`, an entry's `schema`, `data` and `queryMap` with their `...URL` +and `...Label` spellings, `name`, `comment` -- and its context aliases +`node`, `shape` and `status` to the ShEx vocabulary's own. This suite's +`*/manifest.yaml` and the example manifests of implementations (shex.js's +`doc/manifest-context.jsonld` adds its own terms) share it. Everything +below applies to both CSVs, except the drift check against ShExR, which is +about the ShEx vocabulary; `--check --nsdir path/to/w3c/ns` says, for either +vocabulary and without writing anything, whether the files there are what +its CSV generates. + ## History Gregg Kellogg (RIP) wrote the original `mk_vocab.rb` plus an erubis diff --git a/vocab/manifest-vocab.csv b/vocab/manifest-vocab.csv new file mode 100644 index 00000000..0e91fd80 --- /dev/null +++ b/vocab/manifest-vocab.csv @@ -0,0 +1,25 @@ +id,type,label,subClassOf,domain,range,@type,@container,ForwardMultiplicity,ReverseMultiplicity,term,comment +,rdfs:seeAlso,,http://shex.io/shex-semantics,,,,,,,, +,rdfs:seeAlso,,https://shexspec.github.io/shape-map/,,,,,,,, +rdf,prefix,,http://www.w3.org/1999/02/22-rdf-syntax-ns#,,,,,,,, +rdfs,prefix,,http://www.w3.org/2000/01/rdf-schema#,,,,,,,, +shex,prefix,,http://www.w3.org/ns/shex#,,,,,,,, +shexMan,prefix,,http://www.w3.org/ns/shex-manifest#,,,,,,,, +xsd,prefix,,http://www.w3.org/2001/XMLSchema#,,,,,,,, +Manifest,rdfs:Class,Manifest,,,,,,,,,"An ordered collection of entries: the examples a ShEx implementation offers, or the tests of a test suite." +Entry,rdfs:Class,Entry,,,,,,,,,"One validation and the outcome expected of it: a schema, the data to validate, and a query map (or one node and one shape) saying which nodes are validated against which shapes." +entries,rdf:Property,entries,,Manifest,Entry,,@list,1:1,0:1,,"The entries of a manifest, in order." +name,rdf:Property,name,,Entry,xsd:string,,,0:1,,,"A name for the entry, unique within its manifest." +schema,rdf:Property,schema,,Entry,,,,0:1,,,"The entry's schema. A literal is the schema's text; an IRI (written with the term schemaURL) is the document that holds it." +schemaLabel,rdf:Property,schema label,,Entry,xsd:string,,,0:1,,,"What to call the entry's schema when presenting it to a person. Entries with one schema usually share its label." +data,rdf:Property,data,,Entry,,,,0:N,,,"The data the entry validates. A literal is the data's text; an IRI (written with the term dataURL) is the document that holds it. Several values are the documents of one graph." +dataLabel,rdf:Property,data label,,Entry,xsd:string,,,0:1,,,"What to call the entry's data when presenting it to a person." +queryMap,rdf:Property,query map,,Entry,,,,0:1,,,"The entry's query map, pairing node selectors with shapes. A literal is the map in ShapeMap syntax; an IRI (written with the term queryMapURL) is the document that holds it. An entry with one node and one shape may write them as shex:node and shex:shape instead." +queryMapLabel,rdf:Property,query map label,,Entry,xsd:string,,,0:1,,,"What to call the entry's query map when presenting it to a person." +schemaURL,term,,shexMan:schema,,,@id,,,,,The schema by reference. +dataURL,term,,shexMan:data,,,@id,@set,,,,The data by reference. +queryMapURL,term,,shexMan:queryMap,,,@id,,,,,The query map by reference. +comment,term,,rdfs:comment,,,,,,,,What the entry shows or tests. +node,term,,shex:node,,,@id,,,,,The node an entry validates. +shape,term,,shex:shape,,,@id,,,,,The shape an entry validates its node against; absent for the schema's start shape. +status,term,,shex:status,,,,,,,,"The outcome expected: ""conformant"" or ""nonconformant""." diff --git a/vocab/mk_vocab.js b/vocab/mk_vocab.js index 6b19f2a8..c295a77f 100644 --- a/vocab/mk_vocab.js +++ b/vocab/mk_vocab.js @@ -21,10 +21,56 @@ const fs = require('fs'); const path = require('path'); const { execSync } = require('child_process'); -const TITLE = 'Shape Expression Vocabulary'; -const DESCRIPTION = 'This document describes the RDFS vocabulary description used in the Shape Expression Language (ShEx) [[shex-semantics]] along with the default JSON-LD Context and shape expression to validate RDF versions of shapes.'; const COMMIT_BASE = 'https://github.com/shexSpec/shexTest/commit/'; +// The vocabularies this script maintains, by the name --vocab selects. Each +// is one CSV here and three files in a w3c/ns checkout (.ttl, +// .jsonld, .html, published at https://www.w3.org/ns/). `prefix` +// is the vocabulary's own prefix: a CSV id with no colon is in its namespace. +const VOCABULARIES = { + 'shex': { + prefix: 'shex', + csv: 'vocab.csv', + basename: 'shex', + title: 'Shape Expression Vocabulary', + description: 'This document describes the RDFS vocabulary description used in the Shape Expression Language (ShEx) [[shex-semantics]] along with the default JSON-LD Context and shape expression to validate RDF versions of shapes.', + shortName: 'shexns', + abstract: `and Term definitions used + for describing Shape Expressions [[shex-semantics]]. This document provides the RDFS [[RDF-SCHEMA]] vocabulary definition and a description of the JSON-LD context definition for use with + defining shape expressions.`, + alternateNote: 'which also includes the @context required for metadata descriptions.', + otherPrefixes: [], + }, + // What a ShEx manifest -- a list of schema/data/query-map combinations, + // each with the outcome expected of validating it -- is written in: the + // terms the test suite's manifests and the implementations' example + // manifests have in common. + 'shex-manifest': { + prefix: 'shexMan', + csv: 'manifest-vocab.csv', + basename: 'shex-manifest', + title: 'ShEx Manifest Vocabulary', + description: 'This document describes the RDFS vocabulary used to write ShEx manifests -- ordered lists of entries, each a schema, some data and a query map, with the outcome expected of validating them [[shex-semantics]] [[shape-map]] -- along with the JSON-LD Context that makes a JSON or YAML manifest an RDF graph. Test suites and the example collections of ShEx implementations write their manifests with it.', + shortName: 'shexmanifestns', + abstract: `and Term definitions used + for writing manifests of Shape Expressions [[shex-semantics]] examples and tests. This document provides the RDFS [[RDF-SCHEMA]] vocabulary definition and a description of the JSON-LD context definition for use with + writing manifests in JSON-LD or YAML-LD.`, + alternateNote: 'which also includes the @context a JSON-LD or YAML-LD manifest references.', + otherPrefixes: ['shex'], + extraBiblio: `, + "shape-map": { + "authors": [ + "Eric Prud'hommeaux", + "Thomas Baker" + ], + "title": "ShapeMap Structure and Language", + "href" : "https://shexspec.github.io/shape-map/", + "status" : "CG-DRAFT", + "publisher": "W3C" + }`, + }, +}; + // ---------------------------------------------------------------- CSV input function parseCSV(text) { @@ -64,6 +110,7 @@ function rubyInspect(row) { class Vocab { constructor(csvPath, opts = {}) { + this.config = opts.config || VOCABULARIES.shex; const raw = parseCSV(fs.readFileSync(csvPath, 'utf8')); const columns = raw.shift().map(c => c); this.prefixes = {}; this.terms = {}; this.properties = {}; @@ -101,7 +148,7 @@ class Vocab { } namespaced(term) { - return term.includes(':') ? term : `shex:${term}`; + return term.includes(':') ? term : `${this.config.prefix}:${term}`; } // ------------------------------------------------------------- JSON-LD @@ -221,14 +268,14 @@ class Vocab { // Use separate rdfs context so as not to polute the ShEx context. const ontology = { '@context': rdfsContext, - '@id': this.prefixes['shex'].subClassOf, + '@id': this.prefixes[this.config.prefix].subClassOf, '@type': 'owl:Ontology', 'dc': 'http://purl.org/dc/terms/', 'owl': 'http://www.w3.org/2002/07/owl#', 'rdf': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'rdfs': 'http://www.w3.org/2000/01/rdf-schema#', - 'dc:title': {en: TITLE}, - 'dc:description': {en: DESCRIPTION}, + 'dc:title': {en: this.config.title}, + 'dc:description': {en: this.config.description}, 'dc:date': this.date, 'owl:imports': this.imports, 'owl:versionInfo': this.commit, @@ -258,6 +305,7 @@ class Vocab { toTtl() { const output = []; + const p = this.config.prefix; const prefixes = Object.assign({ dc: {subClassOf: 'http://purl.org/dc/terms/'}, @@ -269,9 +317,9 @@ class Vocab { output.push(`@prefix ${id}: <${entry.subClassOf}> .`); output.push('\n# CSVM Ontology definition'); - output.push('shex: a owl:Ontology;'); - output.push(` dc:title "${TITLE}"@en;`); - output.push(` dc:description """${DESCRIPTION}"""@en;`); + output.push(`${p}: a owl:Ontology;`); + output.push(` dc:title "${this.config.title}"@en;`); + output.push(` dc:description """${this.config.description}"""@en;`); output.push(` dc:date "${this.date}"^^xsd:date;`); if (this.imports.length) output.push(` owl:imports ${this.imports.map(i => '<' + i + '>').join(', ')};`); @@ -281,16 +329,16 @@ class Vocab { output.push('\n# Class definitions'); for (const [id, entry] of Object.entries(this.classes)) { - output.push(`shex:${id} a rdfs:Class;`); + output.push(`${p}:${id} a rdfs:Class;`); output.push(` rdfs:label "${entry.label || ''}"@en;`); output.push(` rdfs:comment """${entry.comment || ''}"""@en;`); if (entry.subClassOf) output.push(` rdfs:subClassOf ${this.namespaced(entry.subClassOf)};`); - output.push(' rdfs:isDefinedBy shex: .'); + output.push(` rdfs:isDefinedBy ${p}: .`); } output.push('\n# Property definitions'); for (const [id, entry] of Object.entries(this.properties)) { - output.push(`shex:${id} a rdf:Property;`); + output.push(`${p}:${id} a rdf:Property;`); output.push(` rdfs:label "${entry.label || ''}"@en;`); output.push(` rdfs:comment """${entry.comment || ''}"""@en;`); if (entry.subClassOf) output.push(` rdfs:subPropertyOf ${this.namespaced(entry.subClassOf)};`); @@ -305,24 +353,24 @@ class Vocab { else if (ranges.length > 1) output.push(` rdfs:range [ owl:unionOf (${ranges.map(r => this.namespaced(r)).join(' ')})];`); - output.push(' rdfs:isDefinedBy shex: .'); + output.push(` rdfs:isDefinedBy ${p}: .`); } output.push('\n# Datatype definitions'); for (const [id, entry] of Object.entries(this.datatypes)) { - output.push(`shex:${id} a rdfs:Datatype;`); + output.push(`${p}:${id} a rdfs:Datatype;`); output.push(` rdfs:label "${entry.label || ''}"@en;`); output.push(` rdfs:comment """${entry.comment || ''}"""@en;`); if (entry.subClassOf) output.push(` rdfs:subClassOf ${this.namespaced(entry.subClassOf)};`); - output.push(' rdfs:isDefinedBy shex: .'); + output.push(` rdfs:isDefinedBy ${p}: .`); } output.push('\n# Instance definitions'); for (const [id, entry] of Object.entries(this.instances)) { - output.push(`shex:${id} a ${this.namespaced(entry.type)};`); + output.push(`${p}:${id} a ${this.namespaced(entry.type)};`); output.push(` rdfs:label "${entry.label || ''}"@en;`); output.push(` rdfs:comment """${entry.comment || ''}"""@en;`); - output.push(' rdfs:isDefinedBy shex: .'); + output.push(` rdfs:isDefinedBy ${p}: .`); } return output.join('\n'); @@ -349,8 +397,8 @@ class Vocab { output.push(`PREFIX ${id}: <${entry.subClassOf}>`); output.push('#ShExc definition of ShExJ'); - output.push(`#${TITLE}`); - output.push(`#${DESCRIPTION}`); + output.push(`#${this.config.title}`); + output.push(`#${this.config.description}`); output.push(`#Date: ${this.date}`); if (this.imports.length) output.push(`#Imports ${this.imports.map(i => '<' + i + '>').join(', ')}`); @@ -397,13 +445,14 @@ class Vocab { toHtml() { const json = this.buildJsonld(); - return renderHtml(json['@graph'], json['@context']); + return renderHtml(json['@graph'], json['@context'], this.config); } } -function renderHtml(ont, context) { +function renderHtml(ont, context, config) { const out = []; const w = line => out.push(line); + const p = config.prefix; w(` @@ -425,12 +474,12 @@ var respecConfig = { "rawDate": "2016-12-22", "status" : "CG-NOTE", "publisher": "W3C" - } + }${config.extraBiblio || ''} }, specStatus: "base", - shortName: "shexns", + shortName: "${config.shortName}", publishDate: "${ont['dc:date']}", - thisVersion: "https://www.w3.org/ns/shex", + thisVersion: "https://www.w3.org/ns/${config.basename}", edDraftURI: "https://github.com/shexSpec/shexTest/tree/main/vocab", // lcEnd: "3000-01-01", // crEnd: "3000-01-01", @@ -450,8 +499,8 @@ var respecConfig = { wgPublicList: "public-csv-wg", wgPatentURI: "https://www.w3.org/2004/01/pp-impl/68238/status", alternateFormats: [ - {uri: "shex.ttl", label: "Turtle"}, - {uri: "shex.jsonld", label: "JSON-LD"} + {uri: "${config.basename}.ttl", label: "Turtle"}, + {uri: "${config.basename}.jsonld", label: "JSON-LD"} ], inlineCSS: true, doRDFa: false, @@ -476,17 +525,15 @@ var respecConfig = { .bold {font-weight: bold;} - +

This document describes the ${ont['dc:title']['en']} - and Term definitions used - for describing Shape Expressions [[shex-semantics]]. This document provides the RDFS [[RDF-SCHEMA]] vocabulary definition and a description of the JSON-LD context definition for use with - defining shape expressions.

+ ${config.abstract}

Alternate versions of the vocabulary definition exist in - Turtle and - JSON-LD, - which also includes the @context required for metadata descriptions. + Turtle and + JSON-LD, + ${config.alternateNote}

@@ -513,16 +560,12 @@ var respecConfig = {

Introduction

${ont['dc:description']['en']}

This specification makes use of the following namespaces:

-
-
shex:
-
http://www.w3.org/ns/shex#
-
rdf:
-
http://www.w3.org/1999/02/22-rdf-syntax-ns#
-
rdfs:
-
http://www.w3.org/2000/01/rdf-schema#
-
xsd:
-
http://www.w3.org/2001/XMLSchema#
-
+
`); + for (const prefix of [p].concat(config.otherPrefixes, ['rdf', 'rdfs', 'xsd'])) { + w(`
${prefix}:
`); + w(`
${context[prefix]}
`); + } + w(`
`); for (const sect of [ @@ -533,10 +576,10 @@ var respecConfig = { ]) { w('
'); w(`

${sect.heading}

`); - w(`

The following are ${sect.heading.toLowerCase()} in the shex namespace:

`); + w(`

The following are ${sect.heading.toLowerCase()} in the ${p} namespace:

`); w(' '); for (const defn of ont[sect.key] || []) { - const frag = defn['@id'].slice(5); + const frag = defn['@id'].slice(p.length + 1); const label = defn['rdfs:label']['en']; w(` `); w(` `); @@ -544,7 +587,7 @@ var respecConfig = { w(` ${label}`); w(` §`); w(`

${defn['rdfs:comment']['en']}

`); - w(' '); + w(` `); const props = ['rdfs:subClassOf', 'rdfs:subPropertyOf', 'rdfs:range', 'rdfs:domain']; if (props.some(p => p in defn)) { w('
'); @@ -648,15 +691,20 @@ function check(vocab) { const USAGE = `Usage: mk_vocab.js [options] -f, --format FMT emit one format to stdout: jsonld|ttl|html|context|shexc -o, --output FILE write --format output to FILE instead of stdout - --nsdir DIR also regenerate shex.{ttl,jsonld,html} in DIR + --vocab NAME which vocabulary: shex (default) or shex-manifest + --nsdir DIR also regenerate .{ttl,jsonld,html} in DIR (a w3c/ns checkout; they are published at www.w3.org/ns/) - --check report terms used by ../doc/ShExR.shex but not defined here - --csv FILE vocabulary source (default: ./vocab.csv) + --check write nothing; report terms used by ../doc/ShExR.shex but + not defined here (shex only) and, given --nsdir, whether + DIR's .{ttl,jsonld,html} are what would be written + --csv FILE vocabulary source (default: ./vocab.csv for shex, + ./manifest-vocab.csv for shex-manifest) --date DATE override the dc:date otherwise taken from git log --commit URL override the owl:versionInfo otherwise taken from git log With no options, regenerates the derived files inside this repo -(../doc/ShExJ-context.jsonld).`; +(../doc/ShExJ-context.jsonld; --vocab shex-manifest has none, so it wants +--nsdir or --format).`; function main() { const args = process.argv.slice(2); @@ -669,6 +717,7 @@ function main() { case '--date': opts.date = args[++i]; break; case '--commit': opts.commit = args[++i]; break; case '--nsdir': opts.nsdir = args[++i]; break; + case '--vocab': opts.vocab = args[++i]; break; case '--check': opts.check = true; break; case '--help': case '-?': console.error(USAGE); process.exit(1); default: @@ -677,7 +726,13 @@ function main() { } } - const vocab = new Vocab(opts.csv || path.join(__dirname, 'vocab.csv'), opts); + const config = VOCABULARIES[opts.vocab || 'shex']; + if (!config) { + console.error(`Unknown vocabulary: ${opts.vocab} (one of ${Object.keys(VOCABULARIES).join(', ')})\n\n${USAGE}`); + process.exit(1); + } + opts.config = config; + const vocab = new Vocab(opts.csv || path.join(__dirname, config.csv), opts); const gen = { jsonld: () => vocab.toJsonld(), ttl: () => vocab.toTtl(), @@ -686,7 +741,29 @@ function main() { shexc: () => vocab.toShexc(), }; - if (opts.check) process.exit(check(vocab)); + if (opts.check) { + // the ShExR drift check is about the ShEx vocabulary; what any + // vocabulary can be checked against is the files generated from it + let status = 0; + if (config.basename === 'shex') + status = check(vocab); + else if (!opts.nsdir) { + console.error(`--check --vocab ${opts.vocab} needs --nsdir: this repo has no file derived from ${config.csv} to compare`); + process.exit(1); + } + if (opts.nsdir) + for (const format of ['jsonld', 'ttl', 'html']) { + const target = path.join(opts.nsdir, `${config.basename}.${format}`); + const current = fs.existsSync(target) ? fs.readFileSync(target, 'utf8') : null; + if (current === gen[format]() + '\n') + console.error(`${target} is up to date`); + else { + console.error(`${target} ${current === null ? 'is missing' : `is not what ${config.csv} generates`}`); + status = 1; + } + } + process.exit(status); + } if (opts.format) { if (!gen[opts.format]) { @@ -704,11 +781,16 @@ function main() { console.error(`wrote ${target}`); }; - write(path.join(__dirname, '..', 'doc', 'ShExJ-context.jsonld'), gen.context()); + if (config.basename === 'shex') + write(path.join(__dirname, '..', 'doc', 'ShExJ-context.jsonld'), gen.context()); + else if (!opts.nsdir) { + console.error(`--vocab ${opts.vocab} has no derived files in this repo; give --nsdir or --format\n\n${USAGE}`); + process.exit(1); + } if (opts.nsdir) { - for (const [format, fn] of Object.entries({jsonld: 'shex.jsonld', ttl: 'shex.ttl', html: 'shex.html'})) - write(path.join(opts.nsdir, fn), gen[format]()); + for (const format of ['jsonld', 'ttl', 'html']) + write(path.join(opts.nsdir, `${config.basename}.${format}`), gen[format]()); } }
${frag}