shacl 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +19 -14
- data/VERSION +1 -1
- data/etc/doap.ttl +1 -1
- data/lib/rdf/vocab/shacl.rb +1096 -1096
- data/lib/shacl/algebra/and.rb +3 -2
- data/lib/shacl/algebra/constraint_component.rb +9 -0
- data/lib/shacl/algebra/node_shape.rb +10 -16
- data/lib/shacl/algebra/not.rb +3 -2
- data/lib/shacl/algebra/operator.rb +276 -44
- data/lib/shacl/algebra/or.rb +3 -2
- data/lib/shacl/algebra/pattern.rb +43 -0
- data/lib/shacl/algebra/property_shape.rb +11 -16
- data/lib/shacl/algebra/{qualified_value_shape.rb → qualified_value.rb} +19 -5
- data/lib/shacl/algebra/shape.rb +12 -41
- data/lib/shacl/algebra/sparql_constraint.rb +160 -0
- data/lib/shacl/algebra/xone.rb +3 -2
- data/lib/shacl/algebra.rb +20 -12
- data/lib/shacl/context.rb +5 -0
- data/lib/shacl/shapes.rb +46 -13
- data/lib/shacl/validation_report.rb +6 -2
- data/lib/shacl/validation_result.rb +28 -21
- data/lib/shacl.rb +10 -5
- metadata +51 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c633e6028fd1289d59a32deaa5fa21392fef42e19775c5360176764573c59d55
|
4
|
+
data.tar.gz: 1b531864030beee9032a51f47c06a4151fb41b5500d6fbf639d14261bdb14377
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69660f8f352892612c02d2e487d2e01a0eec8f477024f175c58e30a07ab857aa271494f19b90955cc4b63c9889ed31ebdbcdae04ab0dd188d2949108798bf6f9
|
7
|
+
data.tar.gz: 2e9f9e64e9ba01b171b06e35b6fc47427e3b5f6ba075d5aecb14497a9c84873a6716a029aceae925d85349b68609a8ec7987aceaa5d26e0ca77866fb385d1e4d
|
data/README.md
CHANGED
@@ -10,7 +10,8 @@ This is a pure-Ruby library for working with the [Shape Constraint Language][SHA
|
|
10
10
|
## Features
|
11
11
|
|
12
12
|
* 100% pure Ruby with minimal dependencies and no bloat.
|
13
|
-
* Fully compatible with [SHACL][SHACL Spec]
|
13
|
+
* Fully compatible with SHACL Core [SHACL][SHACL Spec].
|
14
|
+
* Partially compatible with SHACL-SPARQL [SHACL][SHACL Spec].
|
14
15
|
* 100% free and unencumbered [public domain](https://unlicense.org/) software.
|
15
16
|
|
16
17
|
[Implementation Report](https://ruby-rdf.github.io/shacl/etc/earl.html)
|
@@ -48,7 +49,7 @@ The result will add the SHACL validation report to the output graph, optionally
|
|
48
49
|
|
49
50
|
## Documentation
|
50
51
|
|
51
|
-
<https://
|
52
|
+
<https://ruby-rdf.github.io/shacl>
|
52
53
|
|
53
54
|
## Implementation Notes
|
54
55
|
|
@@ -60,6 +61,8 @@ Evaluating the shapes against a graph results in a {SHACL::ValidationReport} ind
|
|
60
61
|
|
61
62
|
The resulting validation report can be compared with other validation reports, used as native Ruby objects, serialized to s-expressions, or used as an RDF::Enumerable to retrieve the RDF representation of the report, as defined in [SHACL Spec][].
|
62
63
|
|
64
|
+
SHACL-SPARQL variable bindings pass a solution to the query composed of the necessary bindings rather than rewrite the query. Supports [SHACL-based Constraints](https://www.w3.org/TR/shacl/#sparql-constraints).
|
65
|
+
|
63
66
|
### Matching Entailed Triples
|
64
67
|
Many tests check for entailed triples, such as entailed super-classes of explicit `rdf:type` values. If this is required for a given application, the [RDF::Reasoner][] gem can be used to create such entailed triples.
|
65
68
|
|
@@ -75,18 +78,20 @@ Many tests check for entailed triples, such as entailed super-classes of explici
|
|
75
78
|
### Future work
|
76
79
|
This implementation is certainly not performant. Some things that can be be considered in future versions:
|
77
80
|
|
78
|
-
* Support for SHACL-SPARQL
|
79
81
|
* Index shapes on `targetNode` and `targetClass` and other targets to allow a more efficient query to find relevant resources in the data graph and not simply iterrate through each top-level shape.
|
80
82
|
* Cache target nodes as JSON-LD to reduce the need to separately query for each constraint.
|
81
83
|
* Reasoner should support limited RDFS/OWL entailment from the data graph, not just pre-defined vocabularies.
|
84
|
+
* [SHACL-based Constraint Components](https://www.w3.org/TR/shacl/#sparql-constraint-components).
|
85
|
+
* More [SHACL Advanced Features](https://w3c.github.io/shacl/shacl-af/).
|
86
|
+
* Support the [SHACL Compact Syntax](https://w3c.github.io/shacl/shacl-compact-syntax/).
|
82
87
|
|
83
88
|
## Dependencies
|
84
89
|
|
85
|
-
* [Ruby](https://ruby-lang.org/) (>= 2.
|
86
|
-
* [RDF.rb](https://rubygems.org/gems/rdf) (~> 3.
|
87
|
-
* [SPARQL](https://rubygems.org/gems/sparql) (~> 3.
|
88
|
-
* [json-ld](https://rubygems.org/gems/
|
89
|
-
* [sxp](https://rubygems.org/gems/sxp) (~> 1.
|
90
|
+
* [Ruby](https://ruby-lang.org/) (>= 2.6)
|
91
|
+
* [RDF.rb](https://rubygems.org/gems/rdf) (~> 3.2)
|
92
|
+
* [SPARQL](https://rubygems.org/gems/sparql) (~> 3.2)
|
93
|
+
* [json-ld](https://rubygems.org/gems/json-ld) (~> 3.2)
|
94
|
+
* [sxp](https://rubygems.org/gems/sxp) (~> 1.2)
|
90
95
|
|
91
96
|
## Installation
|
92
97
|
|
@@ -108,7 +113,7 @@ follows:
|
|
108
113
|
|
109
114
|
## Resources
|
110
115
|
|
111
|
-
* <https://
|
116
|
+
* <https://ruby-rdf.github.io/shacl>
|
112
117
|
* <https://github.com/ruby-rdf/shacl>
|
113
118
|
* <https://rubygems.org/gems/shacl>
|
114
119
|
|
@@ -151,9 +156,9 @@ see <https://unlicense.org/> or the accompanying {file:LICENSE} file.
|
|
151
156
|
[YARD-GS]: https://rubydoc.info/docs/yard/file/docs/GettingStarted.md
|
152
157
|
[PDD]: https://unlicense.org/#unlicensing-contributions
|
153
158
|
[S-Expressions]: https://en.wikipedia.org/wiki/S-expression
|
154
|
-
[RDF.rb]: https://ruby-rdf.github.
|
155
|
-
[RDF::Reasoner]: https://ruby-rdf.github.
|
156
|
-
[SPARQL gem]: https://ruby-rdf.github.
|
157
|
-
[SXP gem]: https://ruby-rdf.github.
|
159
|
+
[RDF.rb]: https://ruby-rdf.github.io/rdf
|
160
|
+
[RDF::Reasoner]: https://ruby-rdf.github.io/rdf-reasoner
|
161
|
+
[SPARQL gem]: https://ruby-rdf.github.io/sparql
|
162
|
+
[SXP gem]: https://ruby-rdf.github.io/sxp
|
158
163
|
[SHACL Spec]: https://www.w3.org/TR/shacl/
|
159
|
-
[ShEx gem]: https://ruby-rdf.github.
|
164
|
+
[ShEx gem]: https://ruby-rdf.github.io/shex
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/etc/doap.ttl
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
<https://rubygems.org/gems/shacl> a doap:Project, earl:TestSubject, earl:Software ;
|
12
12
|
sh:shapesGraph <doap-shacl.ttl>;
|
13
13
|
doap:name "SHACL" ;
|
14
|
-
doap:homepage <https://ruby-rdf.github.
|
14
|
+
doap:homepage <https://ruby-rdf.github.io/shacl> ;
|
15
15
|
doap:license <https://unlicense.org/1.0/> ;
|
16
16
|
doap:shortdesc "SHACL is a Shapes Constraint engine for Ruby."@en ;
|
17
17
|
doap:description "SHACL is a Shape Constraint engine for the Ruby RDF.rb library suite."@en ;
|