Compare two versions of a SKOS vocabulary by meaning, not by text. The order of the statements, the prefixes and the file format do not count, and neither does the side a relation is written from. You get what was added, removed and changed, and whether the new version breaks more integrity rules than the old one. To look at a single vocabulary, use the SKOS Explorer; to check it against rules of your own, the SHACL Validator.
skos:narrower is compared as the skos:broader it implies, skos:hasTopConcept as skos:topConceptOf, skos:narrowMatch as skos:broadMatch, and skos:related, skos:exactMatch, skos:closeMatch and skos:relatedMatch count in both directions. A changed link therefore shows on both concepts it joins.No key is needed. The full description is in the OpenAPI document.
curl -s -X POST https://devops.majbase.com/skos-explorer/diff/api \
-F "old_file=@vocabulary-main.ttl" -F "new_file=@vocabulary.ttl"
git show origin/main:vocabulary.ttl > /tmp/old.ttl
verdict=$(curl -s -X POST https://devops.majbase.com/skos-explorer/diff/api \
-F "old_file=@/tmp/old.ttl" -F "new_file=@vocabulary.ttl" | jq -r .verdict)
echo "SKOS diff: $verdict"
[ "$verdict" != "regression" ] && [ "$verdict" != "null" ]
verdict: identical, changed or regression.summary: added, removed, changed, unchanged (resources), statements_added, statements_removed, new_violations, fixed_violations.added, removed, changed: one entry per resource with uri, label, kind and its added and removed statements (property, value, lang, label). At most 500 per list; truncated says when a list was cut.checks: the checks whose count differs, with before and after. old and new: format, size and verdict of each version.{"error": "…"} with status 400 (unreadable or too large; the message names the version) or 429 (rate limit).