shacl 0.1.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 ;
|