From a0d27ce6a0370e1675acee97cd0e1db53cac189d Mon Sep 17 00:00:00 2001 From: Adrian Date: Tue, 9 Apr 2024 10:45:31 +0200 Subject: [PATCH] Add validation action ...as documented in https://github.com/skohub-io/shapes#add-validation-in-a-vocabulary-repository --- .github/workflows/main.yaml | 48 +++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/workflows/main.yaml diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 0000000..25a17c8 --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,48 @@ +name: Validate TTL Files + +on: [push] + +jobs: + check-for-warnings: + name: Check for Warnings + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Check for Warnings + run: | + curl -s https://raw.githubusercontent.com/skohub-io/shapes/main/scripts/checkForWarning.rq >> checkForWarning.rq + find . -type f -name '*.ttl' | while read file; do + # Adjust the file path to remove the './' part + adjusted_file_path=$(echo "$file" | sed 's|^./||') + echo "Processing $adjusted_file_path with Docker..." + docker run --rm -v "$(pwd)/$adjusted_file_path:/rdf/test.ttl" skohub/jena:4.6.1 shacl validate --shapes https://raw.githubusercontent.com/skohub-io/shapes/main/skohub.shacl.ttl --data /rdf/test.ttl >> result.ttl + validation_result="$(docker run --rm --mount type=bind,source=./checkForWarning.rq,target=/rdf/checkForViolation.rq --mount type=bind,source=./result.ttl,target=/rdf/result.ttl skohub/jena:4.6.1 arq --data /rdf/result.ttl --query /rdf/checkForViolation.rq)" + echo $validation_result + lines=$(echo "$validation_result" | wc -l ) + # Correct validation has 4 lines of output + [[ ${lines} -eq 4 ]] || exit 1 + done + + check-for-errors: + name: Check for Errors + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Check for Errors + run: | + curl -s https://raw.githubusercontent.com/skohub-io/shapes/main/scripts/checkForViolation.rq >> checkForViolation.rq + find . -type f -name '*.ttl' | while read file; do + # Adjust the file path to remove the './' part + adjusted_file_path=$(echo "$file" | sed 's|^./||') + echo "Processing $adjusted_file_path with Docker..." + docker run --rm -v "$(pwd)/$adjusted_file_path:/rdf/test.ttl" skohub/jena:4.6.1 shacl validate --shapes https://raw.githubusercontent.com/skohub-io/shapes/main/skohub.shacl.ttl --data /rdf/test.ttl >> result.ttl + validation_result="$(docker run --rm --mount type=bind,source=./checkForViolation.rq,target=/rdf/checkForViolation.rq --mount type=bind,source=./result.ttl,target=/rdf/result.ttl skohub/jena:4.6.1 arq --data /rdf/result.ttl --query /rdf/checkForViolation.rq)" + echo $validation_result + lines=$(echo "$validation_result" | wc -l ) + # Correct validation has 4 lines of output + [[ ${lines} -eq 4 ]] || exit 1 + done \ No newline at end of file