├── .github
├── pull_request_template.md
└── workflows
│ ├── auto-publish-shacl12-core.yml
│ └── auto-publish-shacl12-sparql.yml
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── admin
├── agenda-2025-01-20
├── agenda-2025-02-03
└── agenda-2025-02-10.md
├── data-shapes-test-suite
├── .gitignore
├── .project
├── README.md
├── index.html
├── javascripts
│ ├── codemirror-compressed.js
│ └── scale.fix.js
├── makefile
├── reports
│ ├── SHACLEX_EarlReport_SHACL.ttl
│ ├── alltests.ttl
│ ├── corese-shacl-earl.ttl
│ ├── dotnetrdf-shacl-earl.ttl
│ ├── earl.ttl
│ ├── earlreport.ui.ttlx
│ ├── netage-shacl-earl.ttl
│ ├── pyshacl-earl.ttl
│ ├── rdfunit-shacl-earl.ttl
│ ├── shawell_report.ttl
│ └── topbraid-shacl-earl.ttl
├── stylesheets
│ ├── codemirror.css
│ ├── pygment_trac.css
│ └── styles.css
└── tests
│ ├── core
│ ├── complex
│ │ ├── manifest.ttl
│ │ ├── personexample.ttl
│ │ ├── shacl-shacl-data-shapes.ttl
│ │ └── shacl-shacl.ttl
│ ├── manifest.ttl
│ ├── misc
│ │ ├── deactivated-001.ttl
│ │ ├── deactivated-002.ttl
│ │ ├── manifest.ttl
│ │ ├── message-001.ttl
│ │ ├── severity-001.ttl
│ │ └── severity-002.ttl
│ ├── node
│ │ ├── and-001.ttl
│ │ ├── and-002.ttl
│ │ ├── class-001.ttl
│ │ ├── class-002.ttl
│ │ ├── class-003.ttl
│ │ ├── closed-001.ttl
│ │ ├── closed-002.ttl
│ │ ├── datatype-001.ttl
│ │ ├── datatype-002.ttl
│ │ ├── disjoint-001.ttl
│ │ ├── equals-001.ttl
│ │ ├── hasValue-001.ttl
│ │ ├── in-001.ttl
│ │ ├── languageIn-001.ttl
│ │ ├── manifest.ttl
│ │ ├── maxExclusive-001.ttl
│ │ ├── maxInclusive-001.ttl
│ │ ├── maxLength-001.ttl
│ │ ├── minExclusive-001.ttl
│ │ ├── minInclusive-001.ttl
│ │ ├── minInclusive-002.ttl
│ │ ├── minInclusive-003.ttl
│ │ ├── minLength-001.ttl
│ │ ├── node-001.ttl
│ │ ├── nodeKind-001.ttl
│ │ ├── not-001.ttl
│ │ ├── not-002.ttl
│ │ ├── or-001.ttl
│ │ ├── pattern-001.ttl
│ │ ├── pattern-002.ttl
│ │ ├── qualified-001-data.ttl
│ │ ├── qualified-001-shapes.ttl
│ │ ├── qualified-001.ttl
│ │ ├── xone-001.ttl
│ │ ├── xone-duplicate-data.ttl
│ │ ├── xone-duplicate-shapes.ttl
│ │ └── xone-duplicate.ttl
│ ├── path
│ │ ├── manifest.ttl
│ │ ├── path-alternative-001.ttl
│ │ ├── path-complex-001.ttl
│ │ ├── path-complex-002-data.ttl
│ │ ├── path-complex-002-shapes.ttl
│ │ ├── path-complex-002.ttl
│ │ ├── path-inverse-001.ttl
│ │ ├── path-oneOrMore-001.ttl
│ │ ├── path-sequence-001.ttl
│ │ ├── path-sequence-002.ttl
│ │ ├── path-sequence-duplicate-001.ttl
│ │ ├── path-strange-001.ttl
│ │ ├── path-strange-002.ttl
│ │ ├── path-unused-001-data.ttl
│ │ ├── path-unused-001-shapes.ttl
│ │ ├── path-unused-001.ttl
│ │ ├── path-zeroOrMore-001.ttl
│ │ └── path-zeroOrOne-001.ttl
│ ├── property
│ │ ├── and-001.ttl
│ │ ├── class-001.ttl
│ │ ├── datatype-001.ttl
│ │ ├── datatype-002.ttl
│ │ ├── datatype-003.ttl
│ │ ├── datatype-ill-formed-data.ttl
│ │ ├── datatype-ill-formed-shapes.ttl
│ │ ├── datatype-ill-formed.ttl
│ │ ├── disjoint-001.ttl
│ │ ├── equals-001.ttl
│ │ ├── hasValue-001.ttl
│ │ ├── in-001.ttl
│ │ ├── languageIn-001.ttl
│ │ ├── lessThan-001.ttl
│ │ ├── lessThan-002.ttl
│ │ ├── lessThanOrEquals-001.ttl
│ │ ├── manifest.ttl
│ │ ├── maxCount-001.ttl
│ │ ├── maxCount-002.ttl
│ │ ├── maxExclusive-001.ttl
│ │ ├── maxInclusive-001.ttl
│ │ ├── maxLength-001.ttl
│ │ ├── minCount-001.ttl
│ │ ├── minCount-002.ttl
│ │ ├── minExclusive-001.ttl
│ │ ├── minExclusive-002.ttl
│ │ ├── minLength-001.ttl
│ │ ├── node-001.ttl
│ │ ├── node-002.ttl
│ │ ├── nodeKind-001.ttl
│ │ ├── not-001.ttl
│ │ ├── or-001.ttl
│ │ ├── or-datatypes-001.ttl
│ │ ├── pattern-001.ttl
│ │ ├── pattern-002.ttl
│ │ ├── property-001.ttl
│ │ ├── qualifiedMinCountDisjoint-001.ttl
│ │ ├── qualifiedValueShape-001.ttl
│ │ ├── qualifiedValueShapesDisjoint-001.ttl
│ │ ├── uniqueLang-001.ttl
│ │ ├── uniqueLang-002-data.ttl
│ │ ├── uniqueLang-002-shapes.ttl
│ │ └── uniqueLang-002.ttl
│ ├── targets
│ │ ├── manifest.ttl
│ │ ├── multipleTargets-001.ttl
│ │ ├── targetClass-001.ttl
│ │ ├── targetClassImplicit-001.ttl
│ │ ├── targetNode-001.ttl
│ │ ├── targetObjectsOf-001.ttl
│ │ ├── targetSubjectsOf-001.ttl
│ │ └── targetSubjectsOf-002.ttl
│ └── validation-reports
│ │ ├── manifest.ttl
│ │ ├── shared-data.ttl
│ │ ├── shared-shapes.ttl
│ │ └── shared.ttl
│ ├── manifest.ttl
│ └── sparql
│ ├── component
│ ├── manifest.ttl
│ ├── nodeValidator-001.ttl
│ ├── optional-001.ttl
│ ├── propertyValidator-select-001.ttl
│ └── validator-001.ttl
│ ├── manifest.ttl
│ ├── node
│ ├── manifest.ttl
│ ├── prefixes-001.ttl
│ ├── sparql-001.ttl
│ ├── sparql-002.ttl
│ └── sparql-003.ttl
│ ├── pre-binding
│ ├── manifest.ttl
│ ├── pre-binding-001.ttl
│ ├── pre-binding-002.ttl
│ ├── pre-binding-003.ttl
│ ├── pre-binding-004.ttl
│ ├── pre-binding-005.ttl
│ ├── pre-binding-006.ttl
│ ├── pre-binding-007.ttl
│ ├── shapesGraph-001.ttl
│ ├── unsupported-sparql-001.ttl
│ ├── unsupported-sparql-002.ttl
│ ├── unsupported-sparql-003.ttl
│ ├── unsupported-sparql-004.ttl
│ ├── unsupported-sparql-005.ttl
│ └── unsupported-sparql-006.ttl
│ └── property
│ ├── manifest.ttl
│ └── sparql-001.ttl
├── data-shapes-ucr
├── ECHIDNA
├── index.html
├── js
│ └── organictabs.jquery.js
└── under construction
│ ├── Overview.html
│ ├── Overview_new.html
│ ├── codestyle.txt
│ ├── http _www.w3.org_TR_2013_NOTE-prov-sem-20130430_-Dateien
│ └── viewsource.css
│ ├── http _www.w3.org_TR_2013_NOTE-prov-sem-20130430_.htm
│ ├── index.html
│ ├── index21-4.html
│ ├── indexReorg.html
│ ├── index_215.html
│ ├── index_dump24_9.html
│ ├── index_dump29_6.html
│ ├── index_dump4_6.html
│ ├── indextabs.html
│ ├── storiesUCs.html
│ ├── tabtest.html
│ └── ucusr.html
├── shacl-abstract-syntax
└── index.html
├── shacl-af
└── index.html
├── shacl-compact-syntax
├── SHACLC.g4
├── index.html
└── tests
│ └── valid
│ ├── array-in.shaclc
│ ├── array-in.ttl
│ ├── basic-shape-iri.shaclc
│ ├── basic-shape-iri.ttl
│ ├── basic-shape-with-target.shaclc
│ ├── basic-shape-with-target.ttl
│ ├── basic-shape-with-targets.shaclc
│ ├── basic-shape-with-targets.ttl
│ ├── basic-shape.shaclc
│ ├── basic-shape.ttl
│ ├── class.shaclc
│ ├── class.ttl
│ ├── comment.shaclc
│ ├── comment.ttl
│ ├── complex1.shaclc
│ ├── complex1.ttl
│ ├── complex2.shaclc
│ ├── complex2.ttl
│ ├── count-0-1.shaclc
│ ├── count-0-1.ttl
│ ├── count-0-unlimited.shaclc
│ ├── count-0-unlimited.ttl
│ ├── count-1-2.shaclc
│ ├── count-1-2.ttl
│ ├── count-1-unlimited.shaclc
│ ├── count-1-unlimited.ttl
│ ├── datatype.shaclc
│ ├── datatype.ttl
│ ├── directives.shaclc
│ ├── directives.ttl
│ ├── empty.shaclc
│ ├── empty.ttl
│ ├── nestedShape.shaclc
│ ├── nestedShape.ttl
│ ├── node-or-2.shaclc
│ ├── node-or-2.ttl
│ ├── node-or-3-not.shaclc
│ ├── node-or-3-not.ttl
│ ├── nodeKind.shaclc
│ ├── nodeKind.ttl
│ ├── path-alternative.shaclc
│ ├── path-alternative.ttl
│ ├── path-complex.shaclc
│ ├── path-complex.ttl
│ ├── path-inverse.shaclc
│ ├── path-inverse.ttl
│ ├── path-oneOrMore.shaclc
│ ├── path-oneOrMore.ttl
│ ├── path-sequence.shaclc
│ ├── path-sequence.ttl
│ ├── path-zeroOrMore.shaclc
│ ├── path-zeroOrMore.ttl
│ ├── path-zeroOrOne.shaclc
│ ├── path-zeroOrOne.ttl
│ ├── property-empty.shaclc
│ ├── property-empty.ttl
│ ├── property-not.shaclc
│ ├── property-not.ttl
│ ├── property-or-2.shaclc
│ ├── property-or-2.ttl
│ ├── property-or-3.shaclc
│ ├── property-or-3.ttl
│ ├── shapeRef.shaclc
│ └── shapeRef.ttl
├── shacl-js
└── index.html
├── shacl-jsonld-context
├── discussion.md
├── examples
│ ├── jsonld-examples.ld.json
│ └── jsonld-examples.ttl
└── shacl.context.ld.json
├── shacl
├── ECHIDNA
├── images
│ ├── Class-Diagram-Arrows.png
│ ├── SHACL-Validation-Process.png
│ └── shacl-class-metamodel.png
├── index.html
├── lib
│ └── swdoc
│ │ └── css
│ │ └── swdoc.css
├── shacl-shacl.ttl
└── shacl.ttl
├── shacl12-core
├── images
│ ├── Class-Diagram-Arrows.png
│ └── SHACL-Validation-Process.png
└── index.html
├── shacl12-inf-rules
├── .prettierrc
└── index.html
├── shacl12-node-expr
├── .prettierrc
└── index.html
├── shacl12-shacl-shacl
└── index.html
├── shacl12-sparql
└── index.html
├── shacl12-test-suite
├── README.md
└── tests
│ ├── core
│ ├── complex
│ │ ├── manifest.ttl
│ │ ├── personexample.ttl
│ │ ├── shacl-shacl-data-shapes.ttl
│ │ └── shacl-shacl.ttl
│ ├── manifest.ttl
│ ├── misc
│ │ ├── deactivated-001.ttl
│ │ ├── deactivated-002.ttl
│ │ ├── manifest.ttl
│ │ ├── message-001.ttl
│ │ ├── severity-001.ttl
│ │ └── severity-002.ttl
│ ├── node
│ │ ├── and-001.ttl
│ │ ├── and-002.ttl
│ │ ├── class-001.ttl
│ │ ├── class-002.ttl
│ │ ├── class-003.ttl
│ │ ├── closed-001.ttl
│ │ ├── closed-002.ttl
│ │ ├── datatype-001.ttl
│ │ ├── datatype-002.ttl
│ │ ├── disjoint-001.ttl
│ │ ├── equals-001.ttl
│ │ ├── expression-001.ttl
│ │ ├── hasValue-001.ttl
│ │ ├── in-001.ttl
│ │ ├── languageIn-001.ttl
│ │ ├── manifest.ttl
│ │ ├── maxExclusive-001.ttl
│ │ ├── maxInclusive-001.ttl
│ │ ├── maxLength-001.ttl
│ │ ├── minExclusive-001.ttl
│ │ ├── minInclusive-001.ttl
│ │ ├── minInclusive-002.ttl
│ │ ├── minInclusive-003.ttl
│ │ ├── minLength-001.ttl
│ │ ├── node-001.ttl
│ │ ├── nodeKind-001.ttl
│ │ ├── not-001.ttl
│ │ ├── not-002.ttl
│ │ ├── or-001.ttl
│ │ ├── pattern-001.ttl
│ │ ├── pattern-002.ttl
│ │ ├── qualified-001-data.ttl
│ │ ├── qualified-001-shapes.ttl
│ │ ├── qualified-001.ttl
│ │ ├── xone-001.ttl
│ │ ├── xone-duplicate-data.ttl
│ │ ├── xone-duplicate-shapes.ttl
│ │ └── xone-duplicate.ttl
│ ├── path
│ │ ├── manifest.ttl
│ │ ├── path-alternative-001.ttl
│ │ ├── path-complex-001.ttl
│ │ ├── path-complex-002-data.ttl
│ │ ├── path-complex-002-shapes.ttl
│ │ ├── path-complex-002.ttl
│ │ ├── path-inverse-001.ttl
│ │ ├── path-oneOrMore-001.ttl
│ │ ├── path-sequence-001.ttl
│ │ ├── path-sequence-002.ttl
│ │ ├── path-sequence-duplicate-001.ttl
│ │ ├── path-strange-001.ttl
│ │ ├── path-strange-002.ttl
│ │ ├── path-unused-001-data.ttl
│ │ ├── path-unused-001-shapes.ttl
│ │ ├── path-unused-001.ttl
│ │ ├── path-zeroOrMore-001.ttl
│ │ └── path-zeroOrOne-001.ttl
│ ├── property
│ │ ├── and-001.ttl
│ │ ├── class-001.ttl
│ │ ├── datatype-001.ttl
│ │ ├── datatype-002.ttl
│ │ ├── datatype-003.ttl
│ │ ├── datatype-ill-formed-data.ttl
│ │ ├── datatype-ill-formed-shapes.ttl
│ │ ├── datatype-ill-formed.ttl
│ │ ├── disjoint-001.ttl
│ │ ├── equals-001.ttl
│ │ ├── hasValue-001.ttl
│ │ ├── in-001.ttl
│ │ ├── languageIn-001.ttl
│ │ ├── lessThan-001.ttl
│ │ ├── lessThan-002.ttl
│ │ ├── lessThanOrEquals-001.ttl
│ │ ├── manifest.ttl
│ │ ├── maxCount-001.ttl
│ │ ├── maxCount-002.ttl
│ │ ├── maxExclusive-001.ttl
│ │ ├── maxInclusive-001.ttl
│ │ ├── maxLength-001.ttl
│ │ ├── minCount-001.ttl
│ │ ├── minCount-002.ttl
│ │ ├── minExclusive-001.ttl
│ │ ├── minExclusive-002.ttl
│ │ ├── minLength-001.ttl
│ │ ├── node-001.ttl
│ │ ├── node-002.ttl
│ │ ├── nodeKind-001.ttl
│ │ ├── not-001.ttl
│ │ ├── or-001.ttl
│ │ ├── or-datatypes-001.ttl
│ │ ├── pattern-001.ttl
│ │ ├── pattern-002.ttl
│ │ ├── property-001.ttl
│ │ ├── qualifiedMinCountDisjoint-001.ttl
│ │ ├── qualifiedValueShape-001.ttl
│ │ ├── qualifiedValueShapesDisjoint-001.ttl
│ │ ├── singleLine-001.ttl
│ │ ├── uniqueLang-001.ttl
│ │ ├── uniqueLang-002-data.ttl
│ │ ├── uniqueLang-002-shapes.ttl
│ │ └── uniqueLang-002.ttl
│ ├── targets
│ │ ├── manifest.ttl
│ │ ├── multipleTargets-001.ttl
│ │ ├── targetClass-001.ttl
│ │ ├── targetClassImplicit-001.ttl
│ │ ├── targetClassImplicit-002.ttl
│ │ ├── targetNode-001.ttl
│ │ ├── targetObjectsOf-001.ttl
│ │ ├── targetSubjectsOf-001.ttl
│ │ └── targetSubjectsOf-002.ttl
│ └── validation-reports
│ │ ├── manifest.ttl
│ │ ├── shared-data.ttl
│ │ ├── shared-shapes.ttl
│ │ └── shared.ttl
│ ├── manifest.ttl
│ └── sparql
│ ├── component
│ ├── manifest.ttl
│ ├── nodeValidator-001.ttl
│ ├── optional-001.ttl
│ ├── propertyValidator-select-001.ttl
│ └── validator-001.ttl
│ ├── manifest.ttl
│ ├── node
│ ├── manifest.ttl
│ ├── prefixes-001.ttl
│ ├── sparql-001.ttl
│ ├── sparql-002.ttl
│ └── sparql-003.ttl
│ ├── pre-binding
│ ├── manifest.ttl
│ ├── pre-binding-001.ttl
│ ├── pre-binding-002.ttl
│ ├── pre-binding-003.ttl
│ ├── pre-binding-004.ttl
│ ├── pre-binding-005.ttl
│ ├── pre-binding-006.ttl
│ ├── pre-binding-007.ttl
│ ├── shapesGraph-001.ttl
│ ├── unsupported-sparql-001.ttl
│ ├── unsupported-sparql-002.ttl
│ ├── unsupported-sparql-003.ttl
│ ├── unsupported-sparql-004.ttl
│ ├── unsupported-sparql-005.ttl
│ └── unsupported-sparql-006.ttl
│ ├── property
│ ├── manifest.ttl
│ ├── property-select-001.ttl
│ ├── property-sparqlExpr-001.ttl
│ └── sparql-001.ttl
│ └── targets
│ ├── manifest.ttl
│ └── targetNode-select-001.ttl
├── shacl12-vocabularies
├── shacl-shacl.ttl
└── shacl.ttl
├── unmaintained
├── data-shapes-primer
│ ├── images
│ │ ├── computeArea-function.png
│ │ ├── primer-images.pptx
│ │ └── square-class-diagram.png
│ ├── index.html
│ ├── issue.ttl
│ ├── ldom-primer.html
│ ├── ldomsquare.ldom.ttl
│ ├── primer.md
│ ├── shacl.shex
│ ├── shacl.ttl
│ └── templates.html
├── data-shapes-shexc
│ ├── index.html
│ └── local.css
├── semantics
│ ├── .project
│ ├── Axiomatic.html
│ ├── SPARQL.html
│ ├── html-handmade-images
│ │ ├── inference-inverse-rule.png
│ │ ├── inference-oneof-rule.png
│ │ ├── inference-rules.png
│ │ ├── inference-simple-schema.png
│ │ ├── rule-choice.png
│ │ ├── rule-disj.png
│ │ ├── rule-empty.png
│ │ ├── rule-group.png
│ │ └── rule-triple-constraint.png
│ ├── img1.png
│ ├── img3.png
│ ├── img4.png
│ ├── img5.png
│ ├── img6.png
│ ├── img7.png
│ ├── img8.png
│ ├── img9.png
│ ├── index.html
│ ├── local.css
│ └── parse.rq
└── shacl-abstract-syntax
│ ├── index.html
│ ├── local.css
│ └── shex-to-shacl.html
├── w3c-no-bars.svg
└── w3c.json
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
1 |
10 |
11 | Closes #{ISSUE_NUMBER}
12 |
13 | * [See this document rendered online here](https://raw.githack.com/w3c/data-shapes/{BRANCH_NAME}/{FOLDER}/index.html)
14 |
--------------------------------------------------------------------------------
/.github/workflows/auto-publish-shacl12-core.yml:
--------------------------------------------------------------------------------
1 | # Autopublish configuration for shacl12-core
2 | name: CI (shacl12-core)
3 | on:
4 | push:
5 | branches: [gh-pages]
6 | paths: ["shacl12-core/**"]
7 |
8 | jobs:
9 | main:
10 | name: Build, Validate and Deploy
11 | runs-on: ubuntu-latest
12 | permissions:
13 | contents: write
14 | steps:
15 | - uses: actions/checkout@v4
16 | - uses: w3c/spec-prod@v2
17 | with:
18 | TOOLCHAIN: respec
19 | SOURCE: shacl12-core/index.html
20 | W3C_ECHIDNA_TOKEN: ${{ secrets.ECHIDNA_TOKEN }}
21 | W3C_WG_DECISION_URL: "https://lists.w3.org/Archives/Public/public-shacl/2025May/0026.html"
22 | W3C_BUILD_OVERRIDE: |
23 | specStatus: WD
24 | shortName: shacl12-core
25 |
--------------------------------------------------------------------------------
/.github/workflows/auto-publish-shacl12-sparql.yml:
--------------------------------------------------------------------------------
1 | # Autopublish configuration for shacl12-sparql
2 | name: CI (shacl12-sparql)
3 | on:
4 | push:
5 | branches: [gh-pages]
6 | paths: ["shacl12-sparql/**"]
7 |
8 | jobs:
9 | main:
10 | name: Build, Validate and Deploy
11 | runs-on: ubuntu-latest
12 | permissions:
13 | contents: write
14 | steps:
15 | - uses: actions/checkout@v4
16 | - uses: w3c/spec-prod@v2
17 | with:
18 | TOOLCHAIN: respec
19 | SOURCE: shacl12-sparql/index.html
20 | W3C_ECHIDNA_TOKEN: ${{ secrets.ECHIDNA_TOKEN }}
21 | W3C_WG_DECISION_URL: "https://lists.w3.org/Archives/Public/public-shacl/2025May/0026.html"
22 | W3C_BUILD_OVERRIDE: |
23 | specStatus: WD
24 | shortName: shacl12-sparql
25 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ### JetBrains template
2 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio
3 |
4 | *.iml
5 |
6 | ## Directory-based project format:
7 | .idea/
8 | # if you remove the above rule, at least ignore the following:
9 |
10 | # User-specific stuff:
11 | # .idea/workspace.xml
12 | # .idea/tasks.xml
13 | # .idea/dictionaries
14 |
15 | # Sensitive or high-churn files:
16 | # .idea/dataSources.ids
17 | # .idea/dataSources.xml
18 | # .idea/sqlDataSources.xml
19 | # .idea/dynamic.xml
20 | # .idea/uiDesigner.xml
21 |
22 | # Gradle:
23 | # .idea/gradle.xml
24 | # .idea/libraries
25 |
26 | # Mongo Explorer plugin:
27 | # .idea/mongoSettings.xml
28 |
29 | ## File-based project format:
30 | *.ipr
31 | *.iws
32 |
33 | ## Plugin-specific files:
34 |
35 | # IntelliJ
36 | /out/
37 |
38 | # mpeltonen/sbt-idea plugin
39 | .idea_modules/
40 |
41 | # JIRA plugin
42 | atlassian-ide-plugin.xml
43 |
44 | # Crashlytics plugin (for Android Studio and IntelliJ)
45 | com_crashlytics_export_strings.xml
46 | crashlytics.properties
47 | crashlytics-build.properties
48 |
49 | # Created by .ignore support plugin (hsz.mobi)
50 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Code of Conduct
2 |
3 | All documentation, code and communication under this repository are covered by the [W3C Code of Ethics and Professional Conduct](https://www.w3.org/Consortium/cepc/).
4 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Data Shapes Working Group
2 |
3 | Contributions to this repository are intended to become part of Recommendation-track documents governed by the
4 | [W3C Patent Policy](https://www.w3.org/Consortium/Patent-Policy/) and
5 | [Software and Document License](https://www.w3.org/copyright/software-license/). To make substantive contributions to specifications, you must either participate
6 | in the relevant W3C Working Group or make a non-member patent licensing commitment.
7 |
8 | If you are not the sole contributor to a contribution (pull request), please identify all
9 | contributors in the pull request comment.
10 |
11 | To add a contributor (other than yourself, that's automatic), mark them one per line as follows:
12 |
13 | ```
14 | +@github_username
15 | ```
16 |
17 | If you added a contributor by mistake, you can remove them in a comment with:
18 |
19 | ```
20 | -@github_username
21 | ```
22 |
23 | If you are making a pull request on behalf of someone else but you had no part in designing the
24 | feature, you can remove yourself with the above syntax.
25 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | All documents in this Repository are licensed by contributors
2 | under the
3 | [W3C Software and Document License](http://www.w3.org/Consortium/Legal/copyright-software).
4 |
--------------------------------------------------------------------------------
/admin/agenda-2025-01-20:
--------------------------------------------------------------------------------
1 | Agenda for 20 January, 2025 Telecon
2 |
3 | - Round of member presentations
4 | - Tools (Github, IRC...)
5 | - Charters
6 | - Editors
7 | - Getting issues from the SHACL repository
8 | - Q&A
9 |
--------------------------------------------------------------------------------
/admin/agenda-2025-02-03:
--------------------------------------------------------------------------------
1 | Agenda for 3 February, 2025 Telecon
2 |
3 | - Drafts and publications
4 | - Editor nominations (issue #217)
5 | - Q&A
6 |
--------------------------------------------------------------------------------
/admin/agenda-2025-02-10.md:
--------------------------------------------------------------------------------
1 | Agenda for 10 February, 2025 Telecon
2 |
3 |
4 | - Spec version / URIs (#224)
5 | - Way of working (see also discussion under #230)
6 |
7 | Proposed items:
8 | - Proposed Resolution: Adopt the working drafts https://github.com/w3c/data-shapes/pull/167
9 | Commit [6450347](https://github.com/w3c/data-shapes/commit/6450347139cadca258d8d4474ff063f62d37c292)
10 | - Processes
11 | - How does the WG make formal resolutions with alternating meeting times?
12 | - What is the necessary review for PR's to get merged? Over what timeframe?
13 | - Scribe rotation (one rotation for each meeting?)
14 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/.gitignore:
--------------------------------------------------------------------------------
1 | *.class
2 | *.log
3 |
4 | # sbt specific
5 | .cache/
6 | .history/
7 | .lib/
8 | dist/*
9 | lib_managed/
10 | src_managed/
11 | project/boot/
12 | project/plugins/project/
13 |
14 | # Scala-IDE specific
15 | .scala_dependencies
16 | .worksheet
17 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | data-shapes-test-suite
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.xtext.ui.shared.xtextBuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.xtext.ui.shared.xtextNature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/README.md:
--------------------------------------------------------------------------------
1 | # SHACL test-suite
2 |
3 | This repository contains the SHACL test-suite.
4 |
5 | The test-suite follows the W3c convention used for Turtle tests.
6 | It consists of a manifest file manifest.ttl which enumerates all the tests.
7 |
8 | The folder "contrib" contains some tests that have been contributed but haven't been edited yet.
9 |
10 | More information: http://w3c.github.io/data-shapes/data-shapes-test-suite/
11 |
12 |
13 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/javascripts/scale.fix.js:
--------------------------------------------------------------------------------
1 | var metas = document.getElementsByTagName('meta');
2 | var i;
3 | if (navigator.userAgent.match(/iPhone/i)) {
4 | for (i=0; i .
2 | @prefix rdfs: .
3 | @prefix sht: .
4 |
5 | <>
6 | a mf:Manifest ;
7 | rdfs:label "Tests converted from http://datashapes.org/sh/tests/tests/core/complex" ;
8 | mf:include ;
9 | mf:include ;
10 | .
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/complex/shacl-shacl.ttl:
--------------------------------------------------------------------------------
1 | @prefix mf: .
2 | @prefix rdfs: .
3 | @prefix xsd: .
4 | @prefix sh: .
5 | @prefix sht: .
6 |
7 | <> a mf:Manifest ;
8 | mf:entries (
9 |
10 | ) .
11 |
12 | a sht:Validate ;
13 | rdfs:label "frozen eat your own ( eat your own frozen dogfood )" ;
14 | mf:action [
15 | sht:dataGraph ;
16 | sht:shapesGraph ] ;
17 | mf:result [a sh:ValidationReport ;
18 | sh:conforms "true"^^xsd:boolean ] ;
19 | mf:status sht:approved .
20 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/manifest.ttl:
--------------------------------------------------------------------------------
1 | @prefix mf: .
2 | @prefix rdfs: .
3 | @prefix sht: .
4 |
5 | <>
6 | a mf:Manifest ;
7 | mf:include ;
8 | mf:include ;
9 | mf:include ;
10 | mf:include ;
11 | mf:include ;
12 | mf:include ;
13 | mf:include ;
14 | .
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/misc/deactivated-001.ttl:
--------------------------------------------------------------------------------
1 | @prefix dash: .
2 | @prefix ex: .
3 | @prefix mf: .
4 | @prefix owl: .
5 | @prefix rdf: .
6 | @prefix rdfs: .
7 | @prefix sh: .
8 | @prefix sht: .
9 | @prefix xsd: .
10 |
11 | ex:InvalidResource
12 | rdf:type rdfs:Resource ;
13 | .
14 | ex:TestShape
15 | rdf:type sh:NodeShape ;
16 | sh:datatype xsd:boolean ;
17 | sh:deactivated "true"^^xsd:boolean ;
18 | sh:property ex:TestShape2 ;
19 | sh:targetNode ex:InvalidResource ;
20 | .
21 | ex:TestShape2
22 | rdf:type sh:PropertyShape ;
23 | sh:path ex:property ;
24 | sh:minCount 1 ;
25 | .
26 | <>
27 | rdf:type mf:Manifest ;
28 | mf:entries (
29 |
30 | ) ;
31 | .
32 |
33 | rdf:type sht:Validate ;
34 | rdfs:label "Test of sh:deactivated 001" ;
35 | mf:action [
36 | sht:dataGraph <> ;
37 | sht:shapesGraph <> ;
38 | ] ;
39 | mf:result [
40 | rdf:type sh:ValidationReport ;
41 | sh:conforms "true"^^xsd:boolean ;
42 | ] ;
43 | mf:status sht:approved ;
44 | .
45 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/misc/deactivated-002.ttl:
--------------------------------------------------------------------------------
1 | @prefix dash: .
2 | @prefix ex: .
3 | @prefix mf: .
4 | @prefix owl: .
5 | @prefix rdf: .
6 | @prefix rdfs: .
7 | @prefix sh: .
8 | @prefix sht: .
9 | @prefix xsd: .
10 |
11 | ex:TestShape
12 | rdf:type sh:NodeShape ;
13 | sh:datatype xsd:boolean ;
14 | sh:deactivated "false"^^xsd:boolean ;
15 | sh:targetNode 32 ;
16 | .
17 | <>
18 | rdf:type mf:Manifest ;
19 | mf:entries (
20 |
21 | ) ;
22 | .
23 |
24 | rdf:type sht:Validate ;
25 | rdfs:label "Test of sh:deactivated 002" ;
26 | mf:action [
27 | sht:dataGraph <> ;
28 | sht:shapesGraph <> ;
29 | ] ;
30 | mf:result [
31 | rdf:type sh:ValidationReport ;
32 | sh:conforms "false"^^xsd:boolean ;
33 | sh:result [
34 | rdf:type sh:ValidationResult ;
35 | sh:focusNode 32 ;
36 | sh:resultSeverity sh:Violation ;
37 | sh:sourceConstraintComponent sh:DatatypeConstraintComponent ;
38 | sh:sourceShape ex:TestShape ;
39 | sh:value 32 ;
40 | ] ;
41 | ] ;
42 | mf:status sht:approved ;
43 | .
44 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/misc/manifest.ttl:
--------------------------------------------------------------------------------
1 | @prefix mf: .
2 | @prefix rdfs: .
3 | @prefix sht: .
4 |
5 | <>
6 | a mf:Manifest ;
7 | rdfs:label "Tests converted from http://datashapes.org/sh/tests/tests/core/misc" ;
8 | mf:include ;
9 | mf:include ;
10 | mf:include ;
11 | mf:include ;
12 | mf:include ;
13 | .
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/misc/message-001.ttl:
--------------------------------------------------------------------------------
1 | @prefix dash: .
2 | @prefix ex: .
3 | @prefix mf: .
4 | @prefix owl: .
5 | @prefix rdf: .
6 | @prefix rdfs: .
7 | @prefix sh: .
8 | @prefix sht: .
9 | @prefix xsd: .
10 |
11 | ex:TestShape
12 | rdf:type sh:NodeShape ;
13 | sh:datatype xsd:integer ;
14 | sh:message "Test message"@en ;
15 | sh:targetNode ex:InvalidNode ;
16 | .
17 | <>
18 | rdf:type mf:Manifest ;
19 | mf:entries (
20 |
21 | ) ;
22 | .
23 |
24 | rdf:type sht:Validate ;
25 | rdfs:label "Test of custom sh:message 001" ;
26 | rdfs:comment """
27 | Note: This test verifies that the sh:message is copied into sh:resultMessage.
28 | To pass this test, the test harness needs to preserve all sh:resultMessage triples
29 | that are mentioned in the 'expected' results graph.""" ;
30 | mf:action [
31 | sht:dataGraph <> ;
32 | sht:shapesGraph <> ;
33 | ] ;
34 | mf:result [
35 | rdf:type sh:ValidationReport ;
36 | sh:conforms "false"^^xsd:boolean ;
37 | sh:result [
38 | rdf:type sh:ValidationResult ;
39 | sh:focusNode ex:InvalidNode ;
40 | sh:resultMessage "Test message"@en ;
41 | sh:resultSeverity sh:Violation ;
42 | sh:sourceConstraintComponent sh:DatatypeConstraintComponent ;
43 | sh:sourceShape ex:TestShape ;
44 | sh:value ex:InvalidNode ;
45 | ] ;
46 | ] ;
47 | mf:status sht:approved ;
48 | .
49 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/misc/severity-001.ttl:
--------------------------------------------------------------------------------
1 | @prefix dash: .
2 | @prefix ex: .
3 | @prefix mf: .
4 | @prefix owl: .
5 | @prefix rdf: .
6 | @prefix rdfs: .
7 | @prefix sh: .
8 | @prefix sht: .
9 | @prefix xsd: .
10 |
11 | ex:TestShape
12 | rdf:type sh:NodeShape ;
13 | sh:datatype xsd:integer ;
14 | sh:severity sh:Warning ;
15 | sh:targetNode "Hello" ;
16 | .
17 | <>
18 | rdf:type mf:Manifest ;
19 | mf:entries (
20 |
21 | ) ;
22 | .
23 |
24 | rdf:type sht:Validate ;
25 | rdfs:label "Test of sh:severity 001" ;
26 | mf:action [
27 | sht:dataGraph <> ;
28 | sht:shapesGraph <> ;
29 | ] ;
30 | mf:result [
31 | rdf:type sh:ValidationReport ;
32 | sh:conforms "false"^^xsd:boolean ;
33 | sh:result [
34 | rdf:type sh:ValidationResult ;
35 | sh:focusNode "Hello" ;
36 | sh:resultSeverity sh:Warning ;
37 | sh:sourceConstraintComponent sh:DatatypeConstraintComponent ;
38 | sh:sourceShape ex:TestShape ;
39 | sh:value "Hello" ;
40 | ] ;
41 | ] ;
42 | mf:status sht:approved ;
43 | .
44 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/closed-002.ttl:
--------------------------------------------------------------------------------
1 | @prefix dash: .
2 | @prefix ex: .
3 | @prefix mf: .
4 | @prefix owl: .
5 | @prefix rdf: .
6 | @prefix rdfs: .
7 | @prefix sh: .
8 | @prefix sht: .
9 | @prefix xsd: .
10 |
11 | ex:InvalidInstance1
12 | ex:otherProperty 4 ;
13 | ex:someProperty 3 ;
14 | .
15 | ex:MyShape
16 | rdf:type sh:NodeShape ;
17 | sh:closed "true"^^xsd:boolean ;
18 | sh:ignoredProperties (
19 | rdf:type
20 | ) ;
21 | sh:property [
22 | sh:path ex:someProperty ;
23 | ] ;
24 | sh:targetNode ex:InvalidInstance1 ;
25 | sh:targetNode ex:ValidInstance1 ;
26 | .
27 | ex:ValidInstance1
28 | rdf:type ex:SomeClass ;
29 | ex:someProperty 3 ;
30 | .
31 | <>
32 | rdf:type mf:Manifest ;
33 | mf:entries (
34 |
35 | ) ;
36 | .
37 |
38 | rdf:type sht:Validate ;
39 | rdfs:label "Test of sh:closed at node shape 002" ;
40 | mf:action [
41 | sht:dataGraph <> ;
42 | sht:shapesGraph <> ;
43 | ] ;
44 | mf:result [
45 | rdf:type sh:ValidationReport ;
46 | sh:conforms "false"^^xsd:boolean ;
47 | sh:result [
48 | rdf:type sh:ValidationResult ;
49 | sh:focusNode ex:InvalidInstance1 ;
50 | sh:resultPath ex:otherProperty ;
51 | sh:resultSeverity sh:Violation ;
52 | sh:sourceConstraintComponent sh:ClosedConstraintComponent ;
53 | sh:sourceShape ex:MyShape ;
54 | sh:value 4 ;
55 | ] ;
56 | ] ;
57 | mf:status sht:approved ;
58 | .
59 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/disjoint-001.ttl:
--------------------------------------------------------------------------------
1 | @prefix dash: .
2 | @prefix ex: .
3 | @prefix mf: .
4 | @prefix owl: .
5 | @prefix rdf: .
6 | @prefix rdfs: .
7 | @prefix sh: .
8 | @prefix sht: .
9 | @prefix xsd: .
10 |
11 | ex:InvalidResource1
12 | ex:property ex:InvalidResource1 ;
13 | ex:property ex:ValidResource1 ;
14 | .
15 | ex:TestShape
16 | rdf:type sh:NodeShape ;
17 | rdfs:label "Test shape" ;
18 | sh:disjoint ex:property ;
19 | sh:targetNode ex:InvalidResource1 ;
20 | sh:targetNode ex:ValidResource1 ;
21 | .
22 | ex:ValidResource1
23 | ex:property ex:InvalidResource1 ;
24 | .
25 | <>
26 | rdf:type mf:Manifest ;
27 | mf:entries (
28 |
29 | ) ;
30 | .
31 |
32 | rdf:type sht:Validate ;
33 | rdfs:label "Test of sh:disjoint at node shape 001" ;
34 | mf:action [
35 | sht:dataGraph <> ;
36 | sht:shapesGraph <> ;
37 | ] ;
38 | mf:result [
39 | rdf:type sh:ValidationReport ;
40 | sh:conforms "false"^^xsd:boolean ;
41 | sh:result [
42 | rdf:type sh:ValidationResult ;
43 | sh:focusNode ex:InvalidResource1 ;
44 | sh:resultSeverity sh:Violation ;
45 | sh:sourceConstraintComponent sh:DisjointConstraintComponent ;
46 | sh:sourceShape ex:TestShape ;
47 | sh:value ex:InvalidResource1 ;
48 | ] ;
49 | ] ;
50 | mf:status sht:approved ;
51 | .
52 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/hasValue-001.ttl:
--------------------------------------------------------------------------------
1 | @prefix dash: .
2 | @prefix ex: .
3 | @prefix mf: .
4 | @prefix owl: .
5 | @prefix rdf: .
6 | @prefix rdfs: .
7 | @prefix sh: .
8 | @prefix sht: .
9 | @prefix xsd: .
10 |
11 | ex:TestShape
12 | rdf:type sh:NodeShape ;
13 | rdfs:label "Test shape" ;
14 | sh:hasValue "Test" ;
15 | sh:targetNode "Invalid String" ;
16 | sh:targetNode "Test" ;
17 | .
18 | <>
19 | rdf:type mf:Manifest ;
20 | mf:entries (
21 |
22 | ) ;
23 | .
24 |
25 | rdf:type sht:Validate ;
26 | rdfs:label "Test of sh:hasValue at node shape 001" ;
27 | mf:action [
28 | sht:dataGraph <> ;
29 | sht:shapesGraph <> ;
30 | ] ;
31 | mf:result [
32 | rdf:type sh:ValidationReport ;
33 | sh:conforms "false"^^xsd:boolean ;
34 | sh:result [
35 | rdf:type sh:ValidationResult ;
36 | sh:focusNode "Invalid String" ;
37 | sh:resultSeverity sh:Violation ;
38 | sh:sourceConstraintComponent sh:HasValueConstraintComponent ;
39 | sh:sourceShape ex:TestShape ;
40 | # See See https://github.com/w3c/data-shapes/issues/111: don't create sh:value "Invalid String" ;
41 | ] ;
42 | ] ;
43 | mf:status sht:approved ;
44 | .
45 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/in-001.ttl:
--------------------------------------------------------------------------------
1 | @prefix dash: .
2 | @prefix ex: .
3 | @prefix mf: .
4 | @prefix owl: .
5 | @prefix rdf: .
6 | @prefix rdfs: .
7 | @prefix sh: .
8 | @prefix sht: .
9 | @prefix xsd: .
10 |
11 | ex:Green
12 | rdf:type ex:TestShape ;
13 | rdfs:label "Green" ;
14 | .
15 | ex:InvalidInstance
16 | rdf:type ex:TestShape ;
17 | rdfs:label "Invalid instance" ;
18 | .
19 | ex:Red
20 | rdf:type ex:TestShape ;
21 | rdfs:label "Red" ;
22 | .
23 | ex:TestShape
24 | rdf:type rdfs:Class ;
25 | rdf:type sh:NodeShape ;
26 | rdfs:label "Test shape" ;
27 | sh:in (
28 | ex:Green
29 | ex:Red
30 | ex:Yellow
31 | ) ;
32 | .
33 | ex:Yellow
34 | rdf:type ex:TestShape ;
35 | rdfs:label "Yellow" ;
36 | .
37 | <>
38 | rdf:type mf:Manifest ;
39 | mf:entries (
40 |
41 | ) ;
42 | .
43 |
44 | rdf:type sht:Validate ;
45 | rdfs:label "Test of sh:in at node shape 001" ;
46 | mf:action [
47 | sht:dataGraph <> ;
48 | sht:shapesGraph <> ;
49 | ] ;
50 | mf:result [
51 | rdf:type sh:ValidationReport ;
52 | sh:conforms "false"^^xsd:boolean ;
53 | sh:result [
54 | rdf:type sh:ValidationResult ;
55 | sh:focusNode ex:InvalidInstance ;
56 | sh:resultSeverity sh:Violation ;
57 | sh:sourceConstraintComponent sh:InConstraintComponent ;
58 | sh:sourceShape ex:TestShape ;
59 | sh:value ex:InvalidInstance ;
60 | ] ;
61 | ] ;
62 | mf:status sht:approved ;
63 | .
64 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/manifest.ttl:
--------------------------------------------------------------------------------
1 | @prefix mf: .
2 | @prefix rdfs: .
3 | @prefix sht: .
4 |
5 | <>
6 | a mf:Manifest ;
7 | rdfs:label "Tests converted from http://datashapes.org/sh/tests/tests/core/node" ;
8 | mf:include ;
9 | mf:include ;
10 | mf:include ;
11 | mf:include ;
12 | mf:include ;
13 | mf:include ;
14 | mf:include ;
15 | mf:include ;
16 | mf:include ;
17 | mf:include ;
18 | mf:include ;
19 | mf:include ;
20 | mf:include ;
21 | mf:include ;
22 | mf:include ;
23 | mf:include ;
24 | mf:include ;
25 | mf:include ;
26 | mf:include ;
27 | mf:include ;
28 | mf:include ;
29 | mf:include ;
30 | mf:include ;
31 | mf:include ;
32 | mf:include ;
33 | mf:include ;
34 | mf:include ;
35 | mf:include ;
36 | mf:include ;
37 | mf:include ;
38 | mf:include ;
39 | mf:include ;
40 | .
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/minInclusive-001.ttl:
--------------------------------------------------------------------------------
1 | @prefix dash: .
2 | @prefix ex: .
3 | @prefix mf: .
4 | @prefix owl: .
5 | @prefix rdf: .
6 | @prefix rdfs: .
7 | @prefix sh: .
8 | @prefix sht: .
9 | @prefix xsd: .
10 |
11 | ex:TestShape
12 | rdf:type sh:NodeShape ;
13 | sh:minInclusive 8 ;
14 | sh:targetNode 7 ;
15 | sh:targetNode 8 ;
16 | sh:targetNode 9 ;
17 | .
18 | <>
19 | rdf:type mf:Manifest ;
20 | mf:entries (
21 |
22 | ) ;
23 | .
24 |
25 | rdf:type sht:Validate ;
26 | rdfs:label "Test of sh:minInclusive at node shape 001" ;
27 | mf:action [
28 | sht:dataGraph <> ;
29 | sht:shapesGraph <> ;
30 | ] ;
31 | mf:result [
32 | rdf:type sh:ValidationReport ;
33 | sh:conforms "false"^^xsd:boolean ;
34 | sh:result [
35 | rdf:type sh:ValidationResult ;
36 | sh:focusNode 7 ;
37 | sh:resultSeverity sh:Violation ;
38 | sh:sourceConstraintComponent sh:MinInclusiveConstraintComponent ;
39 | sh:sourceShape ex:TestShape ;
40 | sh:value 7 ;
41 | ] ;
42 | ] ;
43 | mf:status sht:approved ;
44 | .
45 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/node-001.ttl:
--------------------------------------------------------------------------------
1 | @prefix dash: .
2 | @prefix ex: .
3 | @prefix mf: .
4 | @prefix owl: .
5 | @prefix rdf: .
6 | @prefix rdfs: .
7 | @prefix sh: .
8 | @prefix sht: .
9 | @prefix xsd: .
10 |
11 | ex:InvalidInstance
12 | rdf:type ex:TestClass ;
13 | rdfs:label "Invalid instance" ;
14 | .
15 | ex:TestClass
16 | rdf:type rdfs:Class ;
17 | rdf:type sh:NodeShape ;
18 | rdfs:label "Test class" ;
19 | rdfs:subClassOf rdfs:Resource ;
20 | sh:node [
21 | sh:class ex:OtherClass ;
22 | ] ;
23 | .
24 | ex:ValidInstance
25 | rdf:type ex:OtherClass ;
26 | rdf:type ex:TestClass ;
27 | rdfs:label "Valid instance" ;
28 | .
29 | <>
30 | rdf:type mf:Manifest ;
31 | mf:entries (
32 |
33 | ) ;
34 | .
35 |
36 | rdf:type sht:Validate ;
37 | rdfs:label "Test of sh:node at node shape 001" ;
38 | mf:action [
39 | sht:dataGraph <> ;
40 | sht:shapesGraph <> ;
41 | ] ;
42 | mf:result [
43 | rdf:type sh:ValidationReport ;
44 | sh:conforms "false"^^xsd:boolean ;
45 | sh:result [
46 | rdf:type sh:ValidationResult ;
47 | sh:focusNode ex:InvalidInstance ;
48 | sh:resultSeverity sh:Violation ;
49 | sh:sourceConstraintComponent sh:NodeConstraintComponent ;
50 | sh:sourceShape ex:TestClass ;
51 | sh:value ex:InvalidInstance ;
52 | ] ;
53 | ] ;
54 | mf:status sht:approved ;
55 | .
56 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/nodeKind-001.ttl:
--------------------------------------------------------------------------------
1 | @prefix dash: .
2 | @prefix ex: .
3 | @prefix mf: .
4 | @prefix owl: .
5 | @prefix rdf: .
6 | @prefix rdfs: .
7 | @prefix sh: .
8 | @prefix sht: .
9 | @prefix xsd: .
10 |
11 | ex:IRITestShape
12 | rdf:type sh:NodeShape ;
13 | sh:nodeKind sh:IRI ;
14 | sh:targetNode ex:John ;
15 | sh:targetNode "true"^^xsd:boolean ;
16 | .
17 | <>
18 | rdf:type mf:Manifest ;
19 | mf:entries (
20 |
21 | ) ;
22 | .
23 |
24 | rdf:type sht:Validate ;
25 | rdfs:label "Test of sh:nodeKind at node shape 001" ;
26 | mf:action [
27 | sht:dataGraph <> ;
28 | sht:shapesGraph <> ;
29 | ] ;
30 | mf:result [
31 | rdf:type sh:ValidationReport ;
32 | sh:conforms "false"^^xsd:boolean ;
33 | sh:result [
34 | rdf:type sh:ValidationResult ;
35 | sh:focusNode "true"^^xsd:boolean ;
36 | sh:resultSeverity sh:Violation ;
37 | sh:sourceConstraintComponent sh:NodeKindConstraintComponent ;
38 | sh:sourceShape ex:IRITestShape ;
39 | sh:value "true"^^xsd:boolean ;
40 | ] ;
41 | ] ;
42 | mf:status sht:approved ;
43 | .
44 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/not-002.ttl:
--------------------------------------------------------------------------------
1 | @prefix dash: .
2 | @prefix ex: .
3 | @prefix mf: .
4 | @prefix owl: .
5 | @prefix rdf: .
6 | @prefix rdfs: .
7 | @prefix sh: .
8 | @prefix sht: .
9 | @prefix xsd: .
10 |
11 | ex:InvalidInstance1
12 | ex:property "Some value" ;
13 | .
14 | ex:NotExampleShape
15 | rdf:type sh:NodeShape ;
16 | sh:not [
17 | rdf:type sh:NodeShape ;
18 | sh:property [
19 | sh:path ex:property ;
20 | sh:minCount 1 ;
21 | ] ;
22 | ] ;
23 | sh:targetNode ex:InvalidInstance1 ;
24 | sh:targetNode ex:ValidInstance1 ;
25 | .
26 | <>
27 | rdf:type mf:Manifest ;
28 | mf:entries (
29 |
30 | ) ;
31 | .
32 |
33 | rdf:type sht:Validate ;
34 | rdfs:label "Test of sh:not at node shape 002" ;
35 | mf:action [
36 | sht:dataGraph <> ;
37 | sht:shapesGraph <> ;
38 | ] ;
39 | mf:result [
40 | rdf:type sh:ValidationReport ;
41 | sh:conforms "false"^^xsd:boolean ;
42 | sh:result [
43 | rdf:type sh:ValidationResult ;
44 | sh:focusNode ex:InvalidInstance1 ;
45 | sh:resultSeverity sh:Violation ;
46 | sh:sourceConstraintComponent sh:NotConstraintComponent ;
47 | sh:sourceShape ex:NotExampleShape ;
48 | sh:value ex:InvalidInstance1 ;
49 | ] ;
50 | ] ;
51 | mf:status sht:approved ;
52 | .
53 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/pattern-002.ttl:
--------------------------------------------------------------------------------
1 | @prefix dash: .
2 | @prefix ex: .
3 | @prefix mf: .
4 | @prefix owl: .
5 | @prefix rdf: .
6 | @prefix rdfs: .
7 | @prefix sh: .
8 | @prefix sht: .
9 | @prefix xsd: .
10 |
11 | ex:TestShape
12 | rdf:type sh:NodeShape ;
13 | sh:flags "i" ;
14 | sh:pattern "Aldi" ;
15 | sh:targetNode "Aldi" ;
16 | sh:targetNode "Alti" ;
17 | sh:targetNode "aLdI" ;
18 | .
19 | <>
20 | rdf:type mf:Manifest ;
21 | mf:entries (
22 |
23 | ) ;
24 | .
25 |
26 | rdf:type sht:Validate ;
27 | rdfs:label "Test of sh:pattern at node shape 002" ;
28 | mf:action [
29 | sht:dataGraph <> ;
30 | sht:shapesGraph <> ;
31 | ] ;
32 | mf:result [
33 | rdf:type sh:ValidationReport ;
34 | sh:conforms "false"^^xsd:boolean ;
35 | sh:result [
36 | rdf:type sh:ValidationResult ;
37 | sh:focusNode "Alti" ;
38 | sh:resultSeverity sh:Violation ;
39 | sh:sourceConstraintComponent sh:PatternConstraintComponent ;
40 | sh:sourceShape ex:TestShape ;
41 | sh:value "Alti" ;
42 | ] ;
43 | ] ;
44 | mf:status sht:approved ;
45 | .
46 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/qualified-001-data.ttl:
--------------------------------------------------------------------------------
1 | @prefix ex: .
2 |
3 | ex:i a ex:C1 .
4 | ex:j a ex:C1 , ex:C2 .
5 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/qualified-001-shapes.ttl:
--------------------------------------------------------------------------------
1 | @prefix xsd: .
2 | @prefix sh: .
3 | @prefix ex: .
4 |
5 | ex:s1 a sh:NodeShape ;
6 | sh:targetClass ex:C1 ;
7 | sh:class ex:C2 ;
8 | sh:qualifiedValueShapesDisjoint "1"^^xsd:boolean ;
9 | sh:qualifiedMinCount 5 ;
10 | sh:qualifiedMaxCount 2 .
11 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/qualified-001.ttl:
--------------------------------------------------------------------------------
1 | @prefix mf: .
2 | @prefix owl: .
3 | @prefix rdf: .
4 | @prefix rdfs: .
5 | @prefix sh: .
6 | @prefix sht: .
7 | @prefix xsd: .
8 |
9 | @prefix ex: .
10 |
11 | <> a mf:Manifest ;
12 | mf:entries (
13 |
14 | ) .
15 |
16 | a sht:Validate;
17 | rdfs:label "Test of qualified parameters allowed in node shapes" ;
18 | mf:action [ sht:dataGraph ;
19 | sht:shapesGraph ] ;
20 | mf:result [ rdf:type sh:ValidationReport ;
21 | sh:conforms "false"^^xsd:boolean ;
22 | sh:result [ rdf:type sh:ValidationResult ;
23 | sh:resultSeverity sh:Violation ;
24 | sh:focusNode ex:i ;
25 | sh:value ex:i ;
26 | sh:sourceShape ex:s1 ;
27 | sh:sourceConstraintComponent sh:ClassConstraintComponent ] ] ;
28 | mf:status sht:approved .
29 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/xone-duplicate-data.ttl:
--------------------------------------------------------------------------------
1 | @prefix ex: .
2 |
3 | ex:i a ex:C1 .
4 | ex:j a ex:C1 , ex:C2 .
5 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/xone-duplicate-shapes.ttl:
--------------------------------------------------------------------------------
1 | @prefix sh: .
2 | @prefix ex: .
3 |
4 | ex:s1 a sh:NodeShape ;
5 | sh:targetClass ex:C1 ;
6 | sh:xone ( ex:s2 ex:s2 ) .
7 | ex:s2 sh:class ex:C2 .
8 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/node/xone-duplicate.ttl:
--------------------------------------------------------------------------------
1 | @prefix mf: .
2 | @prefix owl: .
3 | @prefix rdf: .
4 | @prefix rdfs: .
5 | @prefix sh: .
6 | @prefix sht: .
7 | @prefix xsd: .
8 |
9 | @prefix ex: .
10 |
11 | <> a mf:Manifest ;
12 | mf:entries (
13 |
14 | ) .
15 |
16 | a sht:Validate;
17 | rdfs:label "Test of validation report for shape xone-duplicate by property constraints" ;
18 | mf:action [ sht:dataGraph ;
19 | sht:shapesGraph ] ;
20 | mf:result [ rdf:type sh:ValidationReport ;
21 | sh:conforms "false"^^xsd:boolean ;
22 | sh:result [ rdf:type sh:ValidationResult ;
23 | sh:resultSeverity sh:Violation ;
24 | sh:focusNode ex:i ;
25 | sh:value ex:i ;
26 | sh:sourceShape ex:s1 ;
27 | sh:sourceConstraintComponent sh:XoneConstraintComponent ] ;
28 | sh:result [ rdf:type sh:ValidationResult ;
29 | sh:resultSeverity sh:Violation ;
30 | sh:focusNode ex:j ;
31 | sh:value ex:j ;
32 | sh:sourceShape ex:s1 ;
33 | sh:sourceConstraintComponent sh:XoneConstraintComponent ] ] ;
34 | mf:status sht:approved .
35 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/path/manifest.ttl:
--------------------------------------------------------------------------------
1 | @prefix mf: .
2 | @prefix rdfs: .
3 | @prefix sht: .
4 |
5 | <>
6 | a mf:Manifest ;
7 | rdfs:label "Tests converted from http://datashapes.org/sh/tests/tests/core/path" ;
8 | mf:include ;
9 | mf:include ;
10 | mf:include ;
11 | mf:include ;
12 | mf:include ;
13 | mf:include ;
14 | mf:include ;
15 | mf:include ;
16 | mf:include ;
17 | mf:include ;
18 | mf:include ;
19 | mf:include ;
20 | mf:include ;
21 | .
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/path/path-complex-002-data.ttl:
--------------------------------------------------------------------------------
1 | @prefix ex: .
2 |
3 | ex:j ex:p ex:i .
4 |
5 | ex:k ex:p ex:j .
6 |
7 | ex:l ex:p ex:j .
8 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/path/path-complex-002-shapes.ttl:
--------------------------------------------------------------------------------
1 | @prefix sh: .
2 | @prefix ex: .
3 |
4 | ex:s1 a sh:PropertyShape ;
5 | sh:targetNode ex:i ;
6 | sh:path ( _:pinv _:pinv ) ;
7 | sh:class ex:C .
8 |
9 | _:pinv sh:inversePath ex:p .
10 |
11 | ex:s2 a sh:PropertyShape ;
12 | sh:targetNode ex:i ;
13 | sh:path ( [ sh:inversePath ex:p ] [ sh:inversePath ex:p ] ) ;
14 | sh:class ex:C .
15 |
--------------------------------------------------------------------------------
/data-shapes-test-suite/tests/core/path/path-sequence-duplicate-001.ttl:
--------------------------------------------------------------------------------
1 | @prefix dash: .
2 | @prefix ex: .
3 | @prefix mf: