Comments (8)
@sroertgen By "constraints", do you specifically mean the integrity conditions defined in the spec, or do you want to check SKOS graphs for conformance with other quality criteria, as per Skosify or qSKOS?
from skohub-shapes.
Hello @tombaker ,
Yes, I thought about checking the integrity conditions in the shape and throwing an error if the data does not conform to the shape.
Quality checks are also interesting.
Is there a published list of quality criteria we can reuse?
I could also think about translating them into a shape. But these would only throw "warning" or "info" messages.
from skohub-shapes.
In any case the documentation should make clear which explicit integrity conditions and which other rules are enforced. A query for regex S[0-9]+
in sh:description
sh:message
might help to automatically create a list.
I found the rules are only mentioned via some sh:description
but they should better be in sh:message
of each shape, so the query would be like
prefix sh: <http://www.w3.org/ns/shacl#>
SELECT ?shape ?msg {
?shape sh:message ?msg
filter(regex(?msg,"S[0-9]+"))
}
P.S: I've created a pull request to implement this (without filter by now)
from skohub-shapes.
Integrity constrains from https://www.w3.org/TR/skos-reference/
- S9 | skos:ConceptScheme is disjoint with skos:Concept.
- S13 | skos:prefLabel, skos:altLabel and skos:hiddenLabel are pairwise disjoint properties.
- S14 | A resource has no more than one value of skos:prefLabel per language tag.
- S27 | skos:related is disjoint with the property skos:broaderTransitive (by my reading of this constraint differs from the implementation in Shacl!).
- S37 | skos:Collection is disjoint with each of skos:Concept and skos:ConceptScheme.
- S46 | skos:exactMatch is disjoint with each of the properties skos:broadMatch and skos:relatedMatch.
from skohub-shapes.
Hey @nichtich,
thank you for providing feedback!
So for better documenting constraints inside the shape I began working on adding property groups, e.g.
https://github.com/skohub-io/shapes/blob/3e93b208993a8c86c94499aab59a17c0023d8d46/skos.shacl.ttl#L27-L50
These groups can then be assigned to sh:property
, e.g.
What do you think of this approach?
But +1 for extracting this info later with a query.
from skohub-shapes.
In any case the documentation should make clear which explicit integrity conditions and which other rules are enforced. A query for regex
S[0-9]+
insh:description
sh:message
might help to automatically create a list.I found the rules are only mentioned via some
sh:description
but they should better be insh:message
of each shape, so the query would be likeprefix sh: <http://www.w3.org/ns/shacl#> SELECT ?shape ?msg { ?shape sh:message ?msg filter(regex(?msg,"S[0-9]+")) }
P.S: I've created a pull request to implement this (without filter by now)
And I fully agree on using sh:message
from skohub-shapes.
I'm not sure about your approach with PropertyGroup. Seems to make sense for other use cases. In particular the group is lost in validation reports (except if sh:sourceShape
links to a shape that links to a group but this looks a bit complex).
from skohub-shapes.
Done with 89a1e97
from skohub-shapes.
Related Issues (15)
- NoLinkToConceptScheme is to restrictive HOT 2
- Split skos.shacl.ttl HOT 5
- Add examples from SKOS Reference as test cases HOT 2
- SKOS best practice rules HOT 3
- SkoHub Shape HOT 1
- Write blog post about SKOS shape
- Check validity of file before sending to SHACL validation
- Allow `dc:title` and `dc:description` HOT 2
- Document on how to add a vocabulary check in a repo
- Better handling of warnings in GitHub Action HOT 1
- Add GitLab Action for automatic vocab validation
- Add rule for obligatory inScheme/topConceptOf
- Template repo link is broken
- Missing short instructions for validation with jena apache in the README
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from skohub-shapes.