The following closely related tools are in a tool suite together with GaLAHaD:
You can cite this software using the following citation generated from its metadata:
Please consult the CLARIAH Software Metadata Requirements at https://github.com/CLARIAH/clariah-plus/blob/main/requirements/software-metadata-requirements.md for an in-depth explanation of any found problems Validation of GaLAHaD 1.2.8 was successful (score=4/5), but there are some remarks which you may or may not want to address: 1. Info: Reference publications *SHOULD* be expressed, if any (This is missing in the metadata)
(log file starts at Mon May 11 03:27:06 UTC 2026)
[harvester info] --> Processing galahad (https://github.com/instituutnederlandsetaal/galahad) [Mon May 11 03:27:06 UTC 2026]
[harvester info] Git updating cached clone of https://github.com/instituutnederlandsetaal/galahad...
[harvester info] Found release 1.2.8
[harvester info] Using '1.2.8'
[harvester info] Git reference: 1.2.8
[harvester info] Scanning directory /tmp/codemeta-harvester.cache/galahad for harvestable resources...
[harvester info] found codemeta-harvest.json for galahad (md5sum 6a1e01599a462c3e65c902c213911ef8); values in here take precendence over (override) those in later detection stages
[harvester info] Looking for license....
[harvester info] Found license Apache-2.0
[harvester info] Getting contributors from git...
[harvester info] Getting top contributor from git...
[harvester info] Git top contributor Vincent Prins <vincent.prins@ivdnt.org> will be assigned as author (and maintainer) if none are found in the metadata
[harvester info] Extracting last and first commit date from git log....
[harvester info] Date created: 2024-05-31T16:59:02Z+0200, date modified: 2025-04-09T11:37:17Z+0200
[harvester info] Querying Github/GitLab API (https://github.com/instituutnederlandsetaal/galahad)
[harvester info] Adding URL for found README: readme.md
[harvester info] Found releaseNotes
[harvester info] Querying Zenodo API for DOI (access token provided)...
[harvester info] Looking for TRL information in readme.md...
[harvester info] Looking for repostatus information in readme.md...
[harvester info] Looking for continuous integration information in readme.md...
[harvester info] Found CI https://github.com/INL/Galahad/actions/
[harvester info] Looking for documentation links in readme.md...
[harvester info] Falling back to git tag (1.2.8) if no version number is specified...
[harvester info] Inferring repostatus information from git activity (used only as a fallback if not explicitly provided)...
[harvester info] Inferred repostatus https://www.repostatus.org/#inactive
[harvester info] Looking for repostatus information in readme.md in master branch...
[harvester info] Setting group GaLAHaD
[harvester info] Reconciliating: codemetapy --baseuri https://tools.clariah.nl --baseuri https://tools.clariah.nl --includecontext --addcontext https://w3id.org/nwo-research-fields --addcontext https://w3id.org/research-technology-readiness-levels --addcontextgraph https://vocabs.dariah.eu/rest/v1/tadirah/data?format=text/turtle --trl --identifier "galahad" --codeRepository "https://github.com/instituutnederlandsetaal/galahad" --validate /etc/software.ttl --released --enrich --textv "Please consult the CLARIAH Software Metadata Requirements at https://github.com/CLARIAH/clariah-plus/blob/main/requirements/software-metadata-requirements.md for an in-depth explanation of any found problems" -O /tmp/out/galahad.codemeta.json /tmp/codemeta-harvester.cache//tmp/99-version.galahad.codemeta.json /tmp/codemeta-harvester.cache//tmp/99-repostatus.galahad.codemeta.json /tmp/codemeta-harvester.cache//tmp/90-authors.galahad.codemeta.json /tmp/codemeta-harvester.cache//tmp/43-releasenotes.galahad.codemeta.json /tmp/codemeta-harvester.cache//tmp/41-readme.galahad.codemeta.json /tmp/codemeta-harvester.cache//tmp/40-gitapi.galahad.codemeta.json /tmp/codemeta-harvester.cache//tmp/39-gitdate.galahad.codemeta.json /tmp/codemeta-harvester.cache//tmp/32-contributors.galahad.codemeta.json /tmp/codemeta-harvester.cache//tmp/29-license.galahad.codemeta.json /tmp/codemeta-harvester.cache//tmp/12-ci.galahad.codemeta.json /tmp/codemeta-harvester.cache//tmp/10-harvest.galahad.codemeta.json /tmp/codemeta-harvester.cache//tmp/04-applicationSuite.galahad.codemeta.json
-- begin log --
Passed 12 files/sources but specified 0 input types! Automatically guessing types...
Detected input types: [('/tmp/codemeta-harvester.cache//tmp/99-version.galahad.codemeta.json', 'json'), ('/tmp/codemeta-harvester.cache//tmp/99-repostatus.galahad.codemeta.json', 'json'), ('/tmp/codemeta-harvester.cache//tmp/90-authors.galahad.codemeta.json', 'json'), ('/tmp/codemeta-harvester.cache//tmp/43-releasenotes.galahad.codemeta.json', 'json'), ('/tmp/codemeta-harvester.cache//tmp/41-readme.galahad.codemeta.json', 'json'), ('/tmp/codemeta-harvester.cache//tmp/40-gitapi.galahad.codemeta.json', 'json'), ('/tmp/codemeta-harvester.cache//tmp/39-gitdate.galahad.codemeta.json', 'json'), ('/tmp/codemeta-harvester.cache//tmp/32-contributors.galahad.codemeta.json', 'json'), ('/tmp/codemeta-harvester.cache//tmp/29-license.galahad.codemeta.json', 'json'), ('/tmp/codemeta-harvester.cache//tmp/12-ci.galahad.codemeta.json', 'json'), ('/tmp/codemeta-harvester.cache//tmp/10-harvest.galahad.codemeta.json', 'json'), ('/tmp/codemeta-harvester.cache//tmp/04-applicationSuite.galahad.codemeta.json', 'json')]
Adding to contextgraph: /tmp/turtle
Initial URI automatically generated, may be overriden later: https://tools.clariah.nl/galahad
Processing source #1 of 12
Parsing json-ld file from /tmp/codemeta-harvester.cache//tmp/99-version.galahad.codemeta.json
NOTE: Not a valid JSON-LD document, @context missing! Attempting to inject automatically...
Injected (possibly temporary) URI https://tools.clariah.nl/galahad
[CODEMETA COMPOSITION (https://tools.clariah.nl/galahad)] processed 1 new triples, total is now 2
Processing source #2 of 12
Parsing json-ld file from /tmp/codemeta-harvester.cache//tmp/99-repostatus.galahad.codemeta.json
NOTE: Not a valid JSON-LD document, @context missing! Attempting to inject automatically...
Injected (possibly temporary) URI https://tools.clariah.nl/galahad
[CODEMETA COMPOSITION (https://tools.clariah.nl/galahad)] processed 1 new triples, total is now 3
Processing source #3 of 12
Parsing json-ld file from /tmp/codemeta-harvester.cache//tmp/90-authors.galahad.codemeta.json
Found main resource with URI https://tools.clariah.nl/galahad.topcontributor/snapshot
Injected (possibly temporary) URI https://tools.clariah.nl/galahad
[CODEMETA COMPOSITION (https://tools.clariah.nl/galahad)] processed 8 new triples, total is now 10
Processing source #4 of 12
Parsing json-ld file from /tmp/codemeta-harvester.cache//tmp/43-releasenotes.galahad.codemeta.json
NOTE: Not a valid JSON-LD document, @context missing! Attempting to inject automatically...
Injected (possibly temporary) URI https://tools.clariah.nl/galahad
[CODEMETA COMPOSITION (https://tools.clariah.nl/galahad)] processed 2 new triples, total is now 12
Processing source #5 of 12
Parsing json-ld file from /tmp/codemeta-harvester.cache//tmp/41-readme.galahad.codemeta.json
NOTE: Not a valid JSON-LD document, @context missing! Attempting to inject automatically...
Injected (possibly temporary) URI https://tools.clariah.nl/galahad
[CODEMETA COMPOSITION (https://tools.clariah.nl/galahad)] processed 1 new triples, total is now 13
Processing source #6 of 12
Parsing json-ld file from /tmp/codemeta-harvester.cache//tmp/40-gitapi.galahad.codemeta.json
Found main resource with URI https://tools.clariah.nl/galahad/snapshot
Injected (possibly temporary) URI https://tools.clariah.nl/galahad
[CODEMETA COMPOSITION (https://tools.clariah.nl/galahad)] processed 27 new triples, total is now 39
Processing source #7 of 12
Parsing json-ld file from /tmp/codemeta-harvester.cache//tmp/39-gitdate.galahad.codemeta.json
NOTE: Not a valid JSON-LD document, @context missing! Attempting to inject automatically...
Injected (possibly temporary) URI https://tools.clariah.nl/galahad
[CODEMETA COMPOSITION (https://tools.clariah.nl/galahad)] overriding old http://schema.org/dateCreated (2024-05-31T14:57:58Z -> 2024-05-31T16:59:02Z+0200)
[CODEMETA COMPOSITION (https://tools.clariah.nl/galahad)] overriding old http://schema.org/dateModified (2026-05-08T06:08:13Z -> 2025-04-09T11:37:17Z+0200)
[CODEMETA COMPOSITION (https://tools.clariah.nl/galahad)] processed 2 new triples, total is now 39
Processing source #8 of 12
Parsing json-ld file from /tmp/codemeta-harvester.cache//tmp/32-contributors.galahad.codemeta.json
Found main resource with URI https://tools.clariah.nl/galahad.contributors/snapshot
Injected (possibly temporary) URI https://tools.clariah.nl/galahad
[CODEMETA COMPOSITION (https://tools.clariah.nl/galahad)] processed 8 new triples, total is now 40
Processing source #9 of 12
Parsing json-ld file from /tmp/codemeta-harvester.cache//tmp/29-license.galahad.codemeta.json
NOTE: Not a valid JSON-LD document, @context missing! Attempting to inject automatically...
Injected (possibly temporary) URI https://tools.clariah.nl/galahad
[CODEMETA COMPOSITION (https://tools.clariah.nl/galahad)] overriding old http://schema.org/license (http://spdx.org/licenses/Apache-2.0 -> Apache-2.0)
[CODEMETA CORRECTION (https://tools.clariah.nl/galahad)] automatically converting license to spdx URI
[CODEMETA COMPOSITION (https://tools.clariah.nl/galahad)] processed 1 new triples, total is now 40
Processing source #10 of 12
Parsing json-ld file from /tmp/codemeta-harvester.cache//tmp/12-ci.galahad.codemeta.json
NOTE: Not a valid JSON-LD document, @context missing! Attempting to inject automatically...
Injected (possibly temporary) URI https://tools.clariah.nl/galahad
[CODEMETA COMPOSITION (https://tools.clariah.nl/galahad)] processed 1 new triples, total is now 41
Processing source #11 of 12
Parsing json-ld file from /tmp/codemeta-harvester.cache//tmp/10-harvest.galahad.codemeta.json
Injected (possibly temporary) URI https://tools.clariah.nl/galahad
[CODEMETA 2 TO 3] Updating targetProduct -> isSourceCodeOf
[CODEMETA 2 TO 3] Updating targetProduct -> isSourceCodeOf
[CODEMETA 2 TO 3] Updating targetProduct -> isSourceCodeOf
[CODEMETA 2 TO 3] Updating targetProduct -> isSourceCodeOf
[CODEMETA 2 TO 3] Updating targetProduct -> isSourceCodeOf
[CODEMETA 2 TO 3] Updating targetProduct -> isSourceCodeOf
[CODEMETA COMPOSITION (galahad)] overriding old http://schema.org/dateCreated (2024-05-31T16:59:02Z+0200 -> 2024-05-31)
[CODEMETA COMPOSITION (galahad)] overriding old http://schema.org/author (https://tools.clariah.nl/stub/H-41d01b542546ad4f -> https://tools.clariah.nl/stub/H3f1c31d490ad0dad)
[CODEMETA COMPOSITION (galahad)] overriding old http://schema.org/contributor (https://tools.clariah.nl/stub/H-41d01b542546ad4f -> https://tools.clariah.nl/stub/H6bd7bb9d935600eb)
[CODEMETA COMPOSITION (galahad)] overriding old http://schema.org/codeRepository (https://github.com/instituutnederlandsetaal/galahad -> git+https://github.com/INL/galahad.git)
[CODEMETA COMPOSITION (galahad)] overriding old http://schema.org/description ("Galahad". Goal: enable linguists to experiment with different taggers and use the result in other INT products -> GaLAHaD (Generating Linguistic Annotations for Historical Dutch) allows linguists to compare taggers, tag their own corpora, evaluate the results and export their tagged documents.)
[CODEMETA COMPOSITION (galahad)] overriding old http://schema.org/downloadUrl (https://github.com/instituutnederlandsetaal/galahad/archive/refs/tags/1.2.8.zip -> https://github.com/INL/galahad)
[CODEMETA COMPOSITION (galahad)] overriding old http://schema.org/name (galahad -> GaLAHaD)
[CODEMETA COMPOSITION (galahad)] overriding old https://codemeta.github.io/terms/continuousIntegration (https://github.com/INL/Galahad/actions/ -> https://github.com/INL/galahad/actions)
[CODEMETA COMPOSITION (galahad)] overriding old https://codemeta.github.io/terms/developmentStatus (https://www.repostatus.org/#inactive -> https://www.repostatus.org/#active)
[CODEMETA COMPOSITION (galahad)] overriding old http://schema.org/producer (https://tools.clariah.nl/org/dutch-language-institute -> https://www.ivdnt.org)
[CODEMETA COMPOSITION (galahad)] overriding old https://codemeta.github.io/terms/issueTracker (https://github.com/instituutnederlandsetaal/galahad/issues -> https://github.com/INL/galahad/issues)
[CODEMETA COMPOSITION (galahad)] overriding old https://codemeta.github.io/terms/readme (https://github.com/instituutnederlandsetaal/galahad/blob/1.2.8//readme.md -> https://github.com/INL/Galahad/blob/release/readme.md)
[CODEMETA COMPOSITION (galahad)] overriding old http://schema.org/releaseNotes (https://github.com/instituutnederlandsetaal/galahad/releases/tag/1.2.8 -> https://github.com/INL/Galahad/releases)
[CODEMETA COMPOSITION (galahad)] processed 301 new triples, total is now 327
Processing source #12 of 12
Parsing json-ld file from /tmp/codemeta-harvester.cache//tmp/04-applicationSuite.galahad.codemeta.json
NOTE: Not a valid JSON-LD document, @context missing! Attempting to inject automatically...
Injected (possibly temporary) URI https://tools.clariah.nl/galahad
[CODEMETA COMPOSITION (galahad)] processed 1 new triples, total is now 328
Remapping URI to (possibly) new identifier and version component: https://tools.clariah.nl/galahad -> https://tools.clariah.nl/galahad/1.2.8
[CODEMETA VALIDATION (galahad)] done
VALIDATION https://tools.clariah.nl/galahad/1.2.8 #1: Info: Reference publications *SHOULD* be expressed, if any (This is missing in the metadata)
-- end log --
[harvester info] Output written to /tmp/out/galahad.codemeta.json
[harvester info] Harvesting remote service URL https://portal.clarin.ivdnt.org/galahad for galahad: codemetapy --baseuri https://tools.clariah.nl --baseuri https://tools.clariah.nl --includecontext --addcontext https://w3id.org/nwo-research-fields --addcontext https://w3id.org/research-technology-readiness-levels --addcontextgraph https://vocabs.dariah.eu/rest/v1/tadirah/data?format=text/turtle --trl -O "/tmp/codemeta-harvester.cache//tmp/galahad.codemeta.json" "/tmp/out/galahad.codemeta.json" "https://portal.clarin.ivdnt.org/galahad"
-- begin log --
Passed 2 files/sources but specified 0 input types! Automatically guessing types...
Traceback (most recent call last):
File "/usr/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "/usr/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "/usr/lib/python3.12/site-packages/urllib3/connection.py", line 796, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/urllib3/connection.py", line 975, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/urllib3/util/ssl_.py", line 483, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/urllib3/util/ssl_.py", line 527, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/ssl.py", line 455, in wrap_socket
return self.sslsocket_class._create(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/ssl.py", line 1041, in _create
self.do_handshake()
File "/usr/lib/python3.12/ssl.py", line 1319, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] ssl/tls alert handshake failure (_ssl.c:1010)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request
raise new_e
urllib3.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] ssl/tls alert handshake failure (_ssl.c:1010)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/lib/python3.12/site-packages/requests/adapters.py", line 644, in send
resp = conn.urlopen(
^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen
retries = retries.increment(
^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment
raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='portal.clarin.ivdnt.org', port=443): Max retries exceeded with url: /-/manifest.json (Caused by SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] ssl/tls alert handshake failure (_ssl.c:1010)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/bin/codemetapy", line 8, in <module>
sys.exit(main())
^^^^^^
File "/usr/lib/python3.12/site-packages/codemeta/codemeta.py", line 339, in main
g, res, args, contextgraph = build(**args.__dict__)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/codemeta/codemeta.py", line 562, in build
repo_kind = codemeta.parsers.gitapi.get_repo_kind(inputsource)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/codemeta/parsers/gitapi.py", line 56, in get_repo_kind
response = requests.get(test_url)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/requests/api.py", line 73, in get
return request("get", url, params=params, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/requests/adapters.py", line 675, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='portal.clarin.ivdnt.org', port=443): Max retries exceeded with url: /-/manifest.json (Caused by SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] ssl/tls alert handshake failure (_ssl.c:1010)')))
-- end log --
[harvester error] Failed to obtain or process metadata from remote service URL https://portal.clarin.ivdnt.org/galahad for galahad
[harvester info] <-- Finished processing galahad (https://github.com/instituutnederlandsetaal/galahad) [Mon May 11 03:27:17 UTC 2026]