Skip to content

SHACL validation Roadmap #94

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
Tracked by #1
angelip2303 opened this issue Aug 5, 2024 · 5 comments · Fixed by #126
Open
Tracked by #1

SHACL validation Roadmap #94

angelip2303 opened this issue Aug 5, 2024 · 5 comments · Fixed by #126
Assignees
Labels
rust Related to the Rust implementation shacl validation Related to the SHACL validation algorithm

Comments

@angelip2303
Copy link
Collaborator

angelip2303 commented Aug 5, 2024

SHACL features based on the SHACL recommendation.

Target selection

Feature Rust SPARQL Comments
Target Node sh:targetNode ✔️
Class-based targets sh:targetClass ✔️
Implicit class targets ✔️
Subjects of targets sh:targetSubjectsOf ✔️
Objects of targets sh:targetObjectsOf ✔️

Shapes

Feature Supported Comments
sh:name
sh:description
sh:group
sh:order
owl:imports
sh:entailment
sh:shapesGraph The sh:shapesGraph declaration is part of the data graph passed as a parameter

Validation report

We generate a SHACL validation report.

Feature Supported
sh:deactivated ✔️
sh:message ✔️
sh:severity ✔️

Constraints

Feature Supported
Node Shapes ✔️
Property Shapes ✔️

Paths

Feature Supported
Predicate paths ✔️
Sequence paths
Alternative paths
Inverse paths
Zero-or-more paths
One-or-more paths
Zero-or-one paths

Constraint components

Feature Generic Comments
sh:datatype ✔️ We cannot check ill-typed literals
sh:minCount ✔️
sh:maxCount ✔️
sh:languageIn ✔️
sh:uniqueLang
sh:equals
sh:not ✔️
sh:and ✔️
sh:or ✔️
sh:xone ✔️
sh:node ✔️
sh:qualifiedValueshape
sh:closed
sh:ignoredProperties
sh:hasValue ✔️
sh:in ✔️
Feature Rust SPARQL Comments
sh:class ✔️
sh:nodeKind ✔️
sh:minInclusive
sh:maxInclusive
sh:minExclusive
sh:maxExclusive
sh:minLength ✔️
sh:maxLength ✔️
sh:pattern
sh:disjoint
sh:lessThan
sh:lessThanOrEquals
@angelip2303 angelip2303 added help wanted Extra attention is needed rust Related to the Rust implementation shacl validation Related to the SHACL validation algorithm labels Aug 5, 2024
@angelip2303 angelip2303 self-assigned this Aug 5, 2024
@angelip2303 angelip2303 pinned this issue Aug 5, 2024
@angelip2303 angelip2303 reopened this Aug 31, 2024
@angelip2303 angelip2303 mentioned this issue Oct 18, 2024
40 tasks
@ensaremirerol
Copy link

If no one is working on this, I would like to help with it.

@angelip2303
Copy link
Collaborator Author

If no one is working on this, I would like to help with it.

Hi! We are currently working on the new architecture of the tool, as we are moving from SRDF to RDF.rs. Hence, the implementation of the SHACL validation is currently stalled for a bit. However, we are planning to continue with the development of this soon!

@ensaremirerol
Copy link

Oh, I see! Looking forward to it.

Just a quick question—what’s the reason behind the move to rdf.rs? On their repo, it mentions that it’s heavily under construction.

Additionally, I’d like to understand its function. From what I can tell by quickly looking at their code, it seems more like an interface to oxrdf and sophia than a standalone package. Please correct me if I’m wrong—this is just my initial impression.

@angelip2303
Copy link
Collaborator Author

angelip2303 commented Jan 23, 2025

The thing its that our core, SRDF, introduces a bit of technical debt, as it was implemented by demand: when a feature was required we implemented it, without a proper design of the whole library. Thus, when we wanted to implement the subsetting capabilities, or some of the SPARQL-related functionalities, we found that the design wasn't maintainable, and we started with the refactoring of the tool, which led to a dead end, as we had to rewrite more than what we could manage.

However, the idea behind the core of the tool (SRDF) is to define a set of traits and to implement rudof's functionalities on top of that, e.g. SHACL validation or RDF parsing, and this is exactly what RDF.rs tries to pursue, but with a better design at its core.

As a whole, we can understand rudof as an implementation agnostic framework for working with RDF, as long as a implementors provide the required functionalities (SRDF). Thus, if you implement the SRDF traits for Oxigraph, then you have all the functionality that is bundled in rudof.

@ensaremirerol
Copy link

Thanks for the explanation. Good luck!

(Also, I’ll be keeping an eye out for any issues I can help with. I was really impressed with the speed when I tried it, and I’d love to see this project become stable and fully conformant with the specs!)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rust Related to the Rust implementation shacl validation Related to the SHACL validation algorithm
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants