From fe8307d14ebb0e7e2a6c8b59b318d4715738e4fb Mon Sep 17 00:00:00 2001 From: David Linke Date: Tue, 11 Jul 2023 10:11:17 +0200 Subject: [PATCH 1/4] Fix general link to xlsx file --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 66b3763..d6c48ca 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Here are the steps, for submitting updates in Excel including the git commands. - Get the Excel-vocabulary file - For an existing vocabulary, the latest version of the vocabulary is always available via github-pages. - - The general url is `https://{gh-org-name}.github.io/{repository-name}/{vocabulary-name}/{vocabulary-name}.xlsx` + - The general url is `https://{gh-org-name}.github.io/{repository-name}/{vocabulary-name}.xlsx` - For example in nfdi4cat/voc4cat-template the vocabulary `vocab_example` can be downloaded from [https://nfdi4cat.github.io/voc4cat-template/vocab_example.xlsx](https://nfdi4cat.github.io/voc4cat-template/vocab_example.xlsx) - For setting up a new vocabulary, use the xlsx-file from the templates-folder. - Make changes to the Excel file From f3a8b9d3a627cb3575479c1f436bf10ff5fb3ae5 Mon Sep 17 00:00:00 2001 From: David Linke Date: Tue, 11 Jul 2023 10:20:24 +0200 Subject: [PATCH 2/4] Fix case (spelling) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d6c48ca..27bae21 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ All vocabularies based on this template have the same standard contribution proc and finally land in the folder `vocabularies` as SKOS-vocabulary files in turtle-format. -In addition, html-documentation is created automatically and published on github-pages. +In addition, HTML-documentation is created automatically and published on github-pages. - The general url is `https://{gh-org-name}.github.io/{repository-name}/{vocabulary-name}/` - In repository `nfdi4cat/voc4cat-template` the vocabulary `vocab_example` is documented at [https://nfdi4cat.github.io/voc4cat-template/vocab_example/](https://nfdi4cat.github.io/voc4cat-template/vocab_example/) From 856795fe98e1ae14f524104ec1f2f68933e2ce92 Mon Sep 17 00:00:00 2001 From: David Linke Date: Wed, 19 Jul 2023 14:00:16 +0200 Subject: [PATCH 3/4] Update idranges.toml to newest format --- idranges.toml | 47 +++++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/idranges.toml b/idranges.toml index f0342a5..7a2d8b5 100644 --- a/idranges.toml +++ b/idranges.toml @@ -1,46 +1,53 @@ -# Documentation of the TOML format: https://toml.io/en/latest - # ==== General Configuration ==== +# Documentation of the TOML format: https://toml.io/en/latest # Allow only a single vocabulary (default) or multiple vocabularies in the repository. single_vocab = true -# ==== Configuration for vocabulary "voc4cat" ==== +# ==== Configuration for vocabulary "myvocab" ==== -[[myvocab]] +# The name of the vocabulary is used as section name. +# It should match the filename-stem of the vocabulary files. +[vocabs.myvocab] # Length of integer IDs in vocabulary. IDs will be left-padded with zeros to specified length. id_length = 7 +# permanent part of IRIs defined in the vocabulary +permanent_iri_part = "https://example.org/" # Section to configure checks (useful in CI pipeline) -[[myvocab.checks]] -no_delete = true +[vocabs.myvocab.checks] +# Deleting allowed (relevant in CI-pipeline) +allow_delete = false +[vocabs.myvocab.prefix_map] +ex = "https://example.org/" # Section of IDranges for coordinating the allocation of numeric ID ranges to # contributors for each vocabulary. Each idrange contains the same keys: # -# first_id = - first reserved integer ID in idrange -# last_id = - last reserved integer ID in idrange -# gh_username = "" - username on github -# orcid = "" - contributor's ORCID, e.g. "0000-0001-2345-6789" -# organisation_ror_id = "" - ROR of home organisation, e.g. "https://ror.org/04fa4r544" +# first_id = - first reserved integer ID in idrange +# last_id = - last reserved integer ID in idrange +# gh_name = "" - user or organisation name on github +# orcid = " or " - contributor's ORCID, e.g. "0000-0002-1825-0097" or "https://orcid.org/0000-0002-1825-0097" +# ror_id = "" - ROR identifier of home organisation, e.g. "https://ror.org/04fa4r544" -[[myvocab.idrange]] +[[vocabs.myvocab.id_range]] first_id = 1 last_id = 10 -gh_username = "sofia-garcia" +gh_name = "sofia-garcia" orcid = "0000-0001-2345-6789" -organisation_ror_id = "https://ror.org/04fa4r544" +ror_id = "https://ror.org/04fa4r544" -[[myvocab.idrange]] +[[vocabs.myvocab.id_range]] first_id = 11 last_id = 20 -gh_username = "n.n." +gh_name = "unknown" orcid = "" -organisation_ror_id = "" +ror_id = "" # Continue with as many [[myvocab.idrange]] sections as needed. # More vocabularies can be configured by adding sections with appropriate name. -# [[othervocab]] -# [[othervocab.checks]] -# [[othervocab.idrange]] +# [vocabs.othervocab] +# [vocabs.othervocab.checks] +# [vocabs.othervocab.prefix_map] +# [[vocabs.othervocab.idrange]] From 57d46d3da464f747095c20233b78c6da97134f23 Mon Sep 17 00:00:00 2001 From: David Linke Date: Tue, 25 Jul 2023 19:45:05 +0200 Subject: [PATCH 4/4] Add checking based on config to gh-action (#25) * Add checking based on config to gh-action - artifact now have the date as part of their name (and run id) - example vocabulary updated to match idranges.toml * Update documentation in READMEs --- .github/workflows/ci-pr.yml | 54 +++++++++++----------- .github/workflows/merge.yml.off | 19 -------- .gitignore | 3 ++ README.md | 40 ++++++++++------ idranges.toml | 16 +++---- inbox-excel-vocabs/README.md | 9 ++-- templates/voc4cat_template_043.xlsx | Bin 95930 -> 95904 bytes vocabularies/vocab_example.ttl | 68 +++++++++++++++------------- 8 files changed, 105 insertions(+), 104 deletions(-) delete mode 100644 .github/workflows/merge.yml.off diff --git a/.github/workflows/ci-pr.yml b/.github/workflows/ci-pr.yml index 7f1ef99..dbb6ba0 100644 --- a/.github/workflows/ci-pr.yml +++ b/.github/workflows/ci-pr.yml @@ -1,11 +1,5 @@ # This action runs when a pull request to main is created or updated -# (but not when it is merged). -# -# Workflow steps: -# - run voc4cat to update xlsx file and create turtle file -# - store artifacts (even on failure) -# - remove xlsx-vocab file from PR -# - commit on behalf of the PR-author using "voc4cat-CI-bot" as committer +# (but not when it is merged into main). name: CI on pull request create or update on: @@ -34,7 +28,8 @@ jobs: contents: write steps: - - uses: actions/checkout@v3 + - name: Checkout PR branch into cwd + uses: actions/checkout@v3 with: # Checkout the fork/head-repository to push changes to the fork. # Without this the base repository will be checked out and committed to. @@ -43,6 +38,16 @@ jobs: # Checkout the branch made in the fork. ref: ${{ github.head_ref }} + - name: Checkout main branch into directory _main_branch/ + uses: actions/checkout@v3 + with: + ref: main + path: _main_branch + # This sparse-checkout includes all toplevel files and everything below vocabularies/ + sparse-checkout: | + vocabularies/ + fetch-depth: 1 + - uses: actions/setup-python@v4 with: python-version: '3.11' @@ -51,33 +56,31 @@ jobs: run: | python -VV python -m pip install --upgrade pip setuptools wheel + python -m pip install git+https://github.com/nfdi4cat/voc4cat-tool.git@main - # from private repo: python -m pip install git+https://anon:${{ SECRETS.READ_PAT_VOC4CAT }}@github.com/dalito/voc4cat-tool.git@main + # from private repo: python -m pip install git+https://anon:${{ SECRETS.READ_PAT_VOC4CAT }}@github.com/dalito/voc4cat-tool.git@main + + - name: Dynamically set RUN_DATE environment variable + run: echo "RUN_DATE=$(date +'%Y-%m-%dT%H%M')" >> $GITHUB_ENV - name: Run voc4cat run: | voc4cat --version - ls -l outbox/ || echo "outbox directory does not exist." - voc4cat --check --forward --docs pylode --output-directory outbox inbox-excel-vocabs/ |& tee voc4cat.log - VOC4CAT_EXIT_CODE=${PIPESTATUS[0]} - mv voc4cat.log outbox - ls -l outbox/ || echo "outbox directory does not exist." - echo voc4cat exit code: ${VOC4CAT_EXIT_CODE} - exit ${VOC4CAT_EXIT_CODE} + voc4cat -v --ci-check --config _main_branch/idranges.toml --check --forward --logfile voc4cat.log --docs pylode --output-directory outbox inbox-excel-vocabs/ + + - name: Merge changes into vocabulary (in PR branch) + run: | + merge_vocab --logfile voc4cat.log outbox/ vocabularies/ + git status - name: Store artifacts if: ${{ always() }} uses: actions/upload-artifact@v3 with: - name: voc4cat-outbox-run${{ GITHUB.RUN_ID }} + name: voc4cat-outbox_${{ env.RUN_DATE }}_run${{ GITHUB.RUN_ID }} path: outbox/ - - name: Merge changes into vocabulary - run: | - merge_vocab outbox/ vocabularies/ - git status - - - name: Add vocabulary changes + - name: Add/stage vocabulary changes # Pin third party action (v4.16.0) uses: stefanzweifel/git-auto-commit-action@3ea6ae190baf489ba007f7c92608f33ce20ef04a with: @@ -89,12 +92,9 @@ jobs: git rm inbox-excel-vocabs/\*.xlsx || echo "No xlsx files to remove." git status - - name: Commit vocabulary changes & xlsx removal + - name: Commit vocabulary changes & xlsx cleanup on behalf of PR-author # Pin third party action (v4.16.0) uses: stefanzweifel/git-auto-commit-action@3ea6ae190baf489ba007f7c92608f33ce20ef04a with: commit_user_name: voc4cat-CI-bot commit_message: 'CI: vocabulary update in ${{ GITHUB.SERVER_URL }}/${{ GITHUB.REPOSITORY }}/actions/runs/${{ GITHUB.RUN_ID }}' - -# Lit: -# https://github.com/stefanzweifel/git-auto-commit-action diff --git a/.github/workflows/merge.yml.off b/.github/workflows/merge.yml.off deleted file mode 100644 index 15506c3..0000000 --- a/.github/workflows/merge.yml.off +++ /dev/null @@ -1,19 +0,0 @@ -# Is this action required? - -# This action runs when an approved pull request is merged. - -# name: CI/CD on merge of pull request -# on: -# pull_request: -# branches: -# - main -# types: [closed] -# workflow_dispatch: - -# jobs: -# my-action: -# if: ${{ github.event.pull_request.merged }} -# runs-on: ... - -# Lit -# https://stackoverflow.com/a/67833464 \ No newline at end of file diff --git a/.gitignore b/.gitignore index 6ade61e..0a122d7 100644 --- a/.gitignore +++ b/.gitignore @@ -104,3 +104,6 @@ _version.py # output dir outbox/ publish/ + +# Special dir for a clone of main branch in gh-actions +_main_branch diff --git a/README.md b/README.md index 27bae21..7b886b6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# A template to maintain vocabularies on GitHub with the voc4cat-tool +# A template to maintain vocabularies on GitHub -This repository may be used to create and maintain your own SKOS-vocabularies on Github. +This repository may be used to create and maintain your own SKOS-vocabularies on GitHub. It uses the [voc4cat-tool](https://github.com/nfdi4cat/voc4cat-tool) and GitHub features like gh-actions, pull requests etc. to reduce the maintenance workload for contributors and editors. The template is maintained as part of the [NFDI4Cat](http://www.nfdi4cat.org) initiative. @@ -8,7 +8,7 @@ The template is maintained as part of the [NFDI4Cat](http://www.nfdi4cat.org) in ### Trying out the workflow -To just try out the workflow just go to [voc4cat-playground](https://github.com/nfdi4cat/voc4cat-playground) which is a "deployment" of this repository. +To try out the workflow you can use [voc4cat-playground](https://github.com/nfdi4cat/voc4cat-playground) which is a "deployment" of this repository. All vocabularies based on this template have the same standard contribution process of @@ -19,7 +19,14 @@ All vocabularies based on this template have the same standard contribution proc and finally land in the folder `vocabularies` as SKOS-vocabulary files in turtle-format. -In addition, HTML-documentation is created automatically and published on github-pages. +The Excel/xlsx files submitted as pull request are automatically checked and (if all is good) converted to turtle. +By using a vocabulary-specific configuration more thorough validation can be activated, +e.g. if terms get removed in a PR or if correct IRIs are used. +To validate IRIs the configuration supports ID-ranges (similar to [OBO idrange](https://oboacademy.github.io/obook/howto/idrange/) but we use toml-format). +The idea is that every author gets their own range of IDs to consume. +This allows independent work and avoids using the same ID repeatedly. + +In addition, HTML-documentation is created automatically and published on GitHub-pages. - The general url is `https://{gh-org-name}.github.io/{repository-name}/{vocabulary-name}/` - In repository `nfdi4cat/voc4cat-template` the vocabulary `vocab_example` is documented at [https://nfdi4cat.github.io/voc4cat-template/vocab_example/](https://nfdi4cat.github.io/voc4cat-template/vocab_example/) @@ -32,28 +39,29 @@ Please strongly consider contributing to [voc4cat](https://github.com/nfdi4cat/v To discuss about the SKOS vocabularies maintained with this template, create an issue in the vocabulary repository itself (but not in this template-repository). -To contribute new concepts or collections or change existing ones, you may either submit your contributions as Excel-file or (as an expert) as new/changed turtle file. +To contribute new concepts or collections or change existing ones, you may either submit your contributions as Excel/xlsx-file or (as an expert) as new/changed turtle file. Here are the steps, for submitting updates in Excel including the git commands. -- Get the Excel-vocabulary file +- Get the Excel/xlsx-vocabulary file - For an existing vocabulary, the latest version of the vocabulary is always available via github-pages. - The general url is `https://{gh-org-name}.github.io/{repository-name}/{vocabulary-name}.xlsx` - For example in nfdi4cat/voc4cat-template the vocabulary `vocab_example` can be downloaded from [https://nfdi4cat.github.io/voc4cat-template/vocab_example.xlsx](https://nfdi4cat.github.io/voc4cat-template/vocab_example.xlsx) - For setting up a new vocabulary, use the xlsx-file from the templates-folder. - Make changes to the Excel file -- Add the Excel file to your clone of the repository into the folder `inbox-excel-vocabs` - - The name of the Excel-file must match the vocabulary that you want to update (e.g. myvoc.xlsx to update a vocabulary named "myvoc"). - - New vocabularies will be named like the Excel-file (minus the .xlsx-extension). -- Create a pull request with the updated Excel-file on github. +- Add the xlsx file to your clone of the repository into the folder `inbox-excel-vocabs` + - The name of the file must match the vocabulary that you want to update (e.g. myvoc.xlsx to update a vocabulary named "myvoc"). + - New vocabularies will be named like the xlsx-file (minus the `.xlsx`-extension). +- Create a pull request with the updated Excel-file on GitHub. - Please describe your changes and the motivation for the changes in the pull request note or link to an issue with this information. This will help reviewers to understand the proposed change and decide about it. - Your pull request will be processed automatically by a CI/CD pipeline that typically runs less than a minute. - Review the artifacts/logs generated by the CI pipeline. + - The [workflow artifact](https://docs.github.com/en/actions/managing-workflow-runs/downloading-workflow-artifacts) will contain an updated xlsx file that is recreated from the updated turtle-file. - If all is good your contribution will be either - directly merged by the maintainers - or a discussion will be started about what else is needed - or why the proposed change may not fit. -- If you need to fix something just update the pull request branch. This will trigger the pipeline to run again. +- If you need to fix something update the pull request branch. This will trigger the pipeline to run again. Finally, when the proposed merge request is accepted, your changes will be integrated in the vocabularies in the folder `vocabularies`. @@ -84,9 +92,11 @@ git push -u origin main This adds all commits made in the templateĀ“s main branch to your new repository. In addition to this basic setup you may want to - Adjust the README.md file for your vocabulary. -- TODO complete list of required changes - - adjust settings of your new GitHub repository. - - adjust idranges.json +- Adjust the configuration of your vocabularies in `idranges.toml` +- Adjust settings of your new GitHub repository. Typically you will want to + - Forbid pushing to main via [branch protection rules](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/managing-a-branch-protection-rule) (Settings > Branches, edit rules for "main") + - Set up rules for required approvals (Settings > Branches, edit rules for "main") + - Configure GitHub pages to use as source "deploy from a branch" and select the branch `gh-pages` (Settings > Pages > Build and deployment) - Optionally - Add a different license for your vocabulary. - Adjust the styling of the Excel template for your vocabulary. @@ -114,7 +124,7 @@ and push the change to the remote repository. git push ``` -It is suggested merge the changes from the template repository before every new release of your vocabulary. This ensures that the centrally maintained features and best practices trickle into your project. +It is suggested to merge the changes from the template repository before every new release of your vocabulary. This ensures that the centrally maintained features and best practices trickle into your project. ## Authors and acknowledgment diff --git a/idranges.toml b/idranges.toml index 7a2d8b5..7edbe59 100644 --- a/idranges.toml +++ b/idranges.toml @@ -4,22 +4,22 @@ # Allow only a single vocabulary (default) or multiple vocabularies in the repository. single_vocab = true -# ==== Configuration for vocabulary "myvocab" ==== +# ==== Configuration for vocabulary "vocab_example" ==== # The name of the vocabulary is used as section name. # It should match the filename-stem of the vocabulary files. -[vocabs.myvocab] +[vocabs.vocab_example] # Length of integer IDs in vocabulary. IDs will be left-padded with zeros to specified length. id_length = 7 # permanent part of IRIs defined in the vocabulary -permanent_iri_part = "https://example.org/" +permanent_iri_part = "https://example.org/vocex" # Section to configure checks (useful in CI pipeline) -[vocabs.myvocab.checks] +[vocabs.vocab_example.checks] # Deleting allowed (relevant in CI-pipeline) allow_delete = false -[vocabs.myvocab.prefix_map] +[vocabs.vocab_example.prefix_map] ex = "https://example.org/" # Section of IDranges for coordinating the allocation of numeric ID ranges to # contributors for each vocabulary. Each idrange contains the same keys: @@ -30,21 +30,21 @@ ex = "https://example.org/" # orcid = " or " - contributor's ORCID, e.g. "0000-0002-1825-0097" or "https://orcid.org/0000-0002-1825-0097" # ror_id = "" - ROR identifier of home organisation, e.g. "https://ror.org/04fa4r544" -[[vocabs.myvocab.id_range]] +[[vocabs.vocab_example.id_range]] first_id = 1 last_id = 10 gh_name = "sofia-garcia" orcid = "0000-0001-2345-6789" ror_id = "https://ror.org/04fa4r544" -[[vocabs.myvocab.id_range]] +[[vocabs.vocab_example.id_range]] first_id = 11 last_id = 20 gh_name = "unknown" orcid = "" ror_id = "" -# Continue with as many [[myvocab.idrange]] sections as needed. +# Continue with as many [[vocab_example.idrange]] sections as needed. # More vocabularies can be configured by adding sections with appropriate name. # [vocabs.othervocab] diff --git a/inbox-excel-vocabs/README.md b/inbox-excel-vocabs/README.md index 39c7dc5..a229140 100644 --- a/inbox-excel-vocabs/README.md +++ b/inbox-excel-vocabs/README.md @@ -2,7 +2,10 @@ To test the pipeline you may use the template `templates/voc4cat_template_043.xlsx` file. -- Copy the file to this folder +- Copy the file to this folder. - Rename it to `vocab_example.xlsx`. -- Add the file to git and submit a pull request -- The vocabulary `vocabularies/vocab_example.ttl` is generated (or updated) via gh-action and committed to your pull request. The Excel file is removed from the pull request. However, the Excel file along with a log-file and the generated documentation can be [downloaded as workflow artifact](https://docs.github.com/en/actions/managing-workflow-runs/downloading-workflow-artifacts). +- Add the file to git and submit a pull request. +- If there is no validation error the vocabulary `vocabularies/vocab_example.ttl` is generated (or updated) via gh-actions and committed to your pull request. The Excel file is removed from the pull request. +- If there are errors, you can examine them in the run log. +- In any case (error or not) you can download, the xlsx file along with a log-file and the generated documentation as [workflow artifact](https://docs.github.com/en/actions/managing-workflow-runs/downloading-workflow-artifacts). +The xlsx-file in the artifact will be the updated one that is recreated from the updated turtle-file. diff --git a/templates/voc4cat_template_043.xlsx b/templates/voc4cat_template_043.xlsx index 29aeb75416b0ad8ff3c9e2a0b8083ed72be884f2..0641bae522c87bd2307afc3ceeba58cac9d8cab2 100644 GIT binary patch delta 23086 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 vW&VUk;RAR40Rgt}8(4>MzPS)VAcU{=v . @prefix dcat: . @prefix dcterms: . +@prefix exvoc: . @prefix owl: . +@prefix rdfs: . @prefix skos: . @prefix xsd: . - a skos:Collection ; - dcterms:identifier "col1"^^xsd:token ; - dcterms:isPartOf cs: ; - dcterms:provenance "voc4cat-template"@en ; +exvoc:0000010 a skos:Collection ; + dcterms:identifier "exvoc0000010"^^xsd:token ; + dcterms:isPartOf exvoc: ; + dcterms:provenance "https://orcid.org/0000-0001-2345-6789 Sofia Garcia"@en ; skos:definition "Collection of term related to linked data."@en ; - skos:member , - , - ; + skos:member exvoc:0000001, + exvoc:0000002, + exvoc:0000003 ; skos:prefLabel "Linked data term"@en . - a skos:Concept ; - dcterms:identifier "c02"^^xsd:token ; - dcterms:provenance "https://www.w3.org/TR/2010/NOTE-curie-20101216/"@en ; +exvoc:0000002 a skos:Concept ; + dcterms:identifier "exvoc0000002"^^xsd:token ; + dcterms:provenance "https://orcid.org/0000-0001-2345-6789 Sofia Garcia"@en ; + rdfs:isDefinedBy ; skos:altLabel "CURIE"@en, "CompactURI"@en ; - skos:broader ; + skos:broader exvoc:0000001 ; skos:definition "A CURIE (or Compact URI) defines a generic, abbreviated syntax for expressing Uniform Resource Identifiers (URIs). "@en ; - skos:inScheme cs: ; + skos:inScheme exvoc: ; skos:prefLabel "Compact Universal Resource Locator"@en . - a skos:Concept ; - dcterms:identifier "c01"^^xsd:token ; - dcterms:provenance "https://datatracker.ietf.org/doc/html/rfc2396"@en ; +exvoc:0000001 a skos:Concept ; + dcterms:identifier "exvoc0000001"^^xsd:token ; + dcterms:provenance "https://orcid.org/0000-0001-2345-6789 Sofia Garcia"@en ; + rdfs:isDefinedBy ; skos:altLabel "URI"@en ; skos:definition "Uniform Resource Identifier is a compact string of characters for identifying an abstract or physical resource."@en ; - skos:inScheme cs: ; - skos:narrower ; + skos:inScheme exvoc: ; + skos:narrower exvoc:0000002 ; skos:prefLabel "Uniform Resource Identifier"@en ; - skos:relatedMatch ; - skos:topConceptOf cs: . + skos:relatedMatch exvoc:0000003 ; + skos:topConceptOf exvoc: . - a skos:Concept ; - dcterms:identifier "c03"^^xsd:token ; - dcterms:provenance "https://datatracker.ietf.org/doc/html/rfc3987"@en ; +exvoc:0000003 a skos:Concept ; + dcterms:identifier "exvoc0000003"^^xsd:token ; + dcterms:provenance "https://orcid.org/0000-0001-2345-6789 Sofia Garcia"@en ; + rdfs:isDefinedBy ; skos:altLabel "IRI"@en ; skos:definition "Internationalized Resource Identifier (IRI) is an internet protocol standard which builds on the Uniform Resource Identifier (URI) protocol by greatly expanding the set of permitted characters."@en ; - skos:inScheme cs: ; + skos:inScheme exvoc: ; skos:prefLabel "Internationalized Resource Identifier"@en ; - skos:topConceptOf cs: . + skos:topConceptOf exvoc: . -cs: a skos:ConceptScheme ; +exvoc: a skos:ConceptScheme ; dcterms:created "2023-03-10"^^xsd:date ; dcterms:creator ; - dcterms:hasPart ; - dcterms:identifier "test_"^^xsd:token ; + dcterms:hasPart exvoc:0000010 ; + dcterms:identifier "exvoc"^^xsd:token ; dcterms:modified "2023-03-10"^^xsd:date ; - dcterms:provenance "Sofia Garcia (orcid:0000-0001-2345-6789)"@en ; + dcterms:provenance "https://orcid.org/0000-0001-2345-6789 Sofia Garcia"@en ; dcterms:publisher ; - owl:versionInfo "v2023-03-10" ; + owl:versionInfo "v2023-07-25" ; skos:definition "A test vocabulary for the voc4cat template"@en ; - skos:hasTopConcept , - ; + skos:hasTopConcept exvoc:0000001, + exvoc:0000003 ; skos:prefLabel "Test-of-Voc4Cat"@en ; dcat:contactPoint "Sofia Garcia (orcid:0000-0001-2345-6789)" .