Skip to content

Updated deps and a fresh coat of paint!#1

Open
trevenrawr wants to merge 6 commits intordf-elixir:masterfrom
trevenrawr:fresh-coat-of-paint
Open

Updated deps and a fresh coat of paint!#1
trevenrawr wants to merge 6 commits intordf-elixir:masterfrom
trevenrawr:fresh-coat-of-paint

Conversation

@trevenrawr
Copy link

I was getting set up to start playing with ShEx today (to try applying my ShEx-ported LinkML models) when I was hit with an incompatibility in my project with the latest :rdf version. So I figured I'd take a stab at freshening ShEx up a bit... and it wasn't too bad!

I tried to keep the changes minimal, focused on compiler errors, compiler warnings, and changes to formatting (with help from mix format --migrate), but I'm happy to fix anything that looks off to you.

I'm also not sure what to do with the version, but given the major bump in :rdf as a dep, a "major-most" bump here to 0.2.0 seemed reasonable (despite no new functionality).

Thanks for putting all this together; I'm excited to play with it!

@marcelotto
Copy link
Member

marcelotto commented Feb 7, 2026

Hi @trevenrawr, thanks for the PR and for looking into this!

To give you some context: I am currently focusing on other OSS projects, and since the community demand for ShEx has been quite low compared to SHACL, I haven't actively maintained this library recently.

That being said, I am open to releasing an update if there is a genuine need, but I cannot invest time in debugging or implementation work myself.

Here is my proposal: The current changes likely only address warnings related to the Elixir version bump, but a full upgrade to RDF.ex 2.0 likely requires logic adjustments due to breaking changes in the underlying library. Also, the CI is currently broken (likely due to outdated runner versions).

If you are willing to do the heavy lifting:

  1. Fix the CI (e.g., migrate to a current GitHub Actions workflow).
    Tip: You can use the CI setup from my active projects (like rdf-ex) as a reference, as I recently updated them to support the latest Elixir versions.
  2. Ensure the test suite passes with RDF.ex v2 and handle any logical incompatibilities.

If you get this PR to a "green" and working state, I am happy to do a code review and publish a new release for you.

@trevenrawr
Copy link
Author

Thanks for the context, @marcelotto ! I'm really just getting started on my journey with RDF and Elixir, so I'm kind of like a kid pulling all the toys off the shelf to check them out before settling down to play. I can see what you mean about SHACL vs. ShEx now that I'm digging a bit deeper. (Perhaps SHACL is what I want after all; instead of using ShEx to check shapes before committing data to a graph, I can use SHACL to help perform audits and surface missing/invalid data after insertion... 🤔)

Rhetorical asides aside, I'm still interested in contributing! It'll be on my back-burner, but I think I'd still like to work through both points of your proposal as a learning activity. And maybe once I have better wrapped my head around a few different patterns I can employ, I'll try to write is up in some docs for rdf-elixir.dev (which is wonderful, btw)!

Thanks again, and more soon!

@marcelotto
Copy link
Member

That sounds like a plan! Tackling this PR as a learning exercise is a perfect way to get deeper into the RDF internals. Take your time, there is no rush.

Regarding your thoughts on validation: Depending on what you're doing, Grax might actually suffice for your needs. If you mainly want to map RDF to Elixir structs and ensure correct types or simple graph structures within your application logic, Grax is usually the easiest way.

However, if you have more complex constraints (like conditional rules) or want your constraints to be portable, language-independent or standardized, then SHACL is definitely the way to go.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants