Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
04f9d02
Version to 2.6-SNAPSHOT
twagoo Apr 3, 2025
8149d7f
dependencies bumped
twagoo Nov 27, 2025
6191a2c
Maven build/test workflow based on existing Travis one (no deploy)
twagoo Nov 28, 2025
a937343
Travis file renamed
twagoo Nov 28, 2025
4da5a6d
Github actions: deploy workflow
twagoo Nov 28, 2025
bf6bffa
Github actions: maven cache
twagoo Nov 29, 2025
e0918bc
Service and rest resource for concept search. Refs #82
twagoo Nov 28, 2025
4144353
test fix
twagoo Nov 28, 2025
1b57fa2
include description in Wikidata concept object
twagoo Nov 28, 2025
f06997f
retrieve both items and properties
twagoo Nov 28, 2025
37f2b8a
concepts query service: reflect order of requested types in results
twagoo Dec 12, 2025
25a8a7b
Serve concept URI 'rules'
twagoo Dec 14, 2025
8c5962f
read concept URI rules from file
twagoo Dec 14, 2025
77d7c4b
config: removed ccr URL property
twagoo Dec 16, 2025
7b66f72
configuration of concept URI rule sources
twagoo Dec 16, 2025
6ffbb96
caching of concept URI rules JSON
twagoo Dec 16, 2025
f35add1
fixed double escaping in concept URI rules JSON
twagoo Dec 16, 2025
af935f8
refactored concepts rest service: caching in separate, more generic c…
twagoo Dec 16, 2025
e7ade8d
More stable location of concept URI rules in default config
twagoo Dec 16, 2025
11f6259
Remote resource cache tweaks
twagoo Dec 16, 2025
833f5c6
mvnw
twagoo Dec 16, 2025
ae8d7fd
remove ccr URL from properties
twagoo Dec 17, 2025
a100de4
Jackson downgraded < 2.18 because #83
twagoo Dec 17, 2025
3b9b1dd
WAR plugin updated
twagoo Dec 17, 2025
db4eacc
Fixed serialisation of concept search response
twagoo Dec 17, 2025
3a73dcb
Javadoc
twagoo Jan 6, 2026
00f295a
Removed CCR servlet + related configuration properties
twagoo Jan 6, 2026
2f13d92
adapted spring configuration to removed properties
twagoo Jan 6, 2026
587fc91
adapted reason texts in concept uri rules
twagoo Jan 7, 2026
449f380
Add validation rules for Wikidata entity URIs
twagoo Jan 15, 2026
cb32c01
Merge pull request #84 from clarin-eric/wikidata-validation-rules
twagoo Jan 15, 2026
9ef4e64
Version to 2.6.0-SNAPSHOT
twagoo Jan 19, 2026
a5e73d5
Documentation updates for 2.6.0
twagoo Jan 19, 2026
a63c793
Version to 2.6.0
twagoo Jan 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Deploy release artifact

on:
release:
types: [published]

jobs:
docker-build-and-deploy:
runs-on: ubuntu-latest
# SETUP
steps:
- name: Check out the repository to the runner
uses: actions/checkout@v5
- name: Set up JDK 21 for x64
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'adopt'
architecture: x64
- name: Cache local Maven repository
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
# VERSION NUMBER
- name: Set tag name in env
run: echo "GITHUB_TAG=$(echo "${GITHUB_REF##*/}")" >> $GITHUB_ENV
- name: Set version number
run: mvn --batch-mode versions:set -DnewVersion=${GITHUB_TAG} versions:commit
# TESTS
- name: Run tests
run: mvn install test --batch-mode --no-transfer-progress
# BUILD
- name: Build for docker
run: mvn clean install -DskipTests=true -Pdocker --batch-mode
# DEPLOY ARTIFACT
# TODO: deploy to release, not just as an action artifact
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Docker ready deployment package
path: ComponentRegistry/target/component-registry-rest-*-docker.tar.gz
compression-level: 1
if-no-files-found: error
36 changes: 36 additions & 0 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Build and test

on:
push:

jobs:
maven-build-test:
runs-on: ubuntu-latest
# SETUP
steps:
- name: Check out the repository to the runner
uses: actions/checkout@v5
- name: Set up JDK 21 for x64
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'adopt'
architecture: x64
- name: Cache local Maven repository
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
# BUILD
- name: Download dependencies
run: mvn dependency:go-offline --show-version --batch-mode --no-transfer-progress
- name: Build
run: mvn install -DskipTests=true -Dmaven.javadoc.skip=true --batch-mode
# TEST
- name: Run tests
run: mvn test --batch-mode
# DOCKER BUILD
- name: Build for docker
run: mvn clean install -DskipTests=true -Pdocker --batch-mode
3 changes: 3 additions & 0 deletions .mvn/wrapper/maven-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
wrapperVersion=3.3.4
distributionType=only-script
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip
File renamed without changes.
7 changes: 7 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@

For upgrade instructions, see [UPGRADE.md](UPGRADE.md)

## Release Component Registry 2.6.0 (January 2026)
- Dependency updates
- Feature: replaced CCR search with Wikidata search
<https://github.com/clarin-eric/component-registry-rest/issues/82>
- Added (cached) serving concept link validation rules
- Added GitHub workflows for CI

## Release Component Registry 2.5.3 (April 2025)
- Dependency updates

Expand Down
65 changes: 46 additions & 19 deletions ComponentRegistry/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
<parent>
<groupId>eu.clarin.cmdi</groupId>
<artifactId>componentRegistry.parent</artifactId>
<version>2.5.3</version>
<version>2.6.0</version>
</parent>
<groupId>eu.clarin.cmdi</groupId>
<artifactId>component-registry-rest</artifactId>
<packaging>${packaging}</packaging>
<version>2.5.3</version>
<version>2.6.0</version>
<name>ComponentRegistry</name>
<description>
ComponentRegistry is part of the clarin metadata infrastructure (cmdi).
Expand All @@ -33,7 +33,6 @@
<generalComponentSchemaUrl>https://infra.clarin.eu/CMDI/1.x/xsd/cmd-component.xsd</generalComponentSchemaUrl>
<component2SchemaXslUrl>https://infra.clarin.eu/CMDI/1.x/xslt/comp2schema.xsl</component2SchemaXslUrl>
<component2SchemaXslUrlCmdi11>https://infra.clarin.eu/CMDI/1.1/xslt/comp2schema-v2/comp2schema.xsl</component2SchemaXslUrlCmdi11>
<ccrRestUrl>https://openskos.meertens.knaw.nl/ccr/api/</ccrRestUrl>
<clavasRestUrl>https://vocabularies.clarin.eu/clavas/public/api/</clavasRestUrl>

<skosmosCacheRefreshRate>3600</skosmosCacheRefreshRate> <!-- Skosmos cache refresh interval in seconds -->
Expand All @@ -44,15 +43,28 @@
<skosmosVocabsIncludedVocabularies></skosmosVocabsIncludedVocabularies>
<skosmosVocabsExcludedVocabularies>ccr</skosmosVocabsExcludedVocabularies>

<conceptUriRulesUrl>https://raw.githubusercontent.com/clarin-eric/component-registry-rest/refs/heads/master/ComponentRegistry/src/main/resources/conceptUriRules.json</conceptUriRulesUrl>
<conceptUriFallbackResource>/conceptUriRules.json</conceptUriFallbackResource>

<cmd-toolkit.version>1.2.5</cmd-toolkit.version>
<spring.version>5.3.39</spring.version>
<wicket.version>8.14.0</wicket.version>
<jackson.version>2.17.0</jackson.version>
<jackson-databind.version>${jackson.version}</jackson-databind.version>

<jersey.version>1.19.4</jersey.version>
<slf4j.version>2.0.17</slf4j.version>
<log4j.version>2.24.3</log4j.version>
<log4j.version>2.25.2</log4j.version>
<jaxb-runtime.version>2.4.0-b180830.0438</jaxb-runtime.version>
<wikidataToolkitVersion>0.17.0</wikidataToolkitVersion>

<!--
WARNING! Upgrading Jackson to 2.18 or later BREAKS the XML
serialisations of the REST responses.

See <https://github.com/clarin-eric/component-registry-rest/issues/83>.
-->
<jackson.version>2.17.3</jackson.version>
<jackson-databind.version>${jackson.version}</jackson-databind.version>
<jackson-annotations.version>${jackson.version}</jackson-annotations.version>

<logging.appender>FILE</logging.appender>
<logging.level>warn</logging.level>
Expand Down Expand Up @@ -132,17 +144,17 @@
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.15.1</version>
<version>2.20.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.14.0</version>
<version>3.19.0</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.5</version>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
Expand Down Expand Up @@ -197,7 +209,7 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
<version>${jackson-annotations.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
Expand All @@ -208,7 +220,7 @@
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-jersey-jaxrs</artifactId>
<version>1.6.14</version>
<version>1.6.16</version>
<exclusions>
<exclusion>
<groupId>org.javassist</groupId>
Expand Down Expand Up @@ -243,7 +255,7 @@
<!-- replace excluded guava provided via swagger -->
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>33.4.5-jre</version>
<version>33.5.0-jre</version>
</dependency>
<dependency>
<groupId>com.sun.grizzly</groupId>
Expand Down Expand Up @@ -419,7 +431,7 @@
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.5</version>
<version>42.7.8</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand All @@ -436,7 +448,7 @@
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20250107</version>
<version>20250517</version>
</dependency>
<dependency>
<groupId>eu.clarin.cmdi</groupId>
Expand All @@ -458,13 +470,24 @@
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>3.2.0</version>
<version>3.2.3</version>
</dependency>
<dependency>
<groupId>com.github.jsonld-java</groupId>
<artifactId>jsonld-java</artifactId>
<version>0.13.6</version>
</dependency>

<dependency>
<groupId>org.wikidata.wdtk</groupId>
<artifactId>wdtk-datamodel</artifactId>
<version>${wikidataToolkitVersion}</version>
</dependency>
<dependency>
<groupId>org.wikidata.wdtk</groupId>
<artifactId>wdtk-wikibaseapi</artifactId>
<version>${wikidataToolkitVersion}</version>
</dependency>
</dependencies>


Expand Down Expand Up @@ -533,16 +556,17 @@
<generalComponentSchemaUrl>{{DOCKER_COMPREG_GENERAL_COMPONENT_SCHEMA}}</generalComponentSchemaUrl>
<component2SchemaXslUrl>{{DOCKER_COMPREG_COMPONENT_TO_SCHEMA_XSL}}</component2SchemaXslUrl>
<component2SchemaXslUrlCmdi11>{{DOCKER_COMPREG_COMPONENT_TO_SCHEMA_XSL_CMDI11}}</component2SchemaXslUrlCmdi11>
<ccrRestUrl>{{DOCKER_COMPREG_CCR_REST_SERVICE}}</ccrRestUrl>
<clavasRestUrl>{{DOCKER_COMPREG_CLAVAS_REST_SERVICE}}</clavasRestUrl>

<skosmosCacheRefreshRate>{{DOCKER_COMPREG_SKOSMOS_CACHE_REFRESH_RATE}}</skosmosCacheRefreshRate> <!-- Skosmos cache refresh interval in seconds -->
<skosmosCcrIncludedVocabs>{{DOCKER_COMPREG_SKOSMOS_CCR_INCLUDED_VOCABS}}</skosmosCcrIncludedVocabs>
<skosmosCcrIncludedSchemes>{{DOCKER_COMPREG_SKOSMOS_CCR_INCLUDED_SCHEMES}}</skosmosCcrIncludedSchemes>
<skosmosVocabsIncludedSchemes>{{DOCKER_COMPREG_SKOSMOS_VOCABS_INCLUDED_SCHEMES}}</skosmosVocabsIncludedSchemes>
<skosmosVocabsExcludedSchemes>{{DOCKER_COMPREG_SKOSMOS_VOCABS_EXCLUDED_SCHEMES}}</skosmosVocabsExcludedSchemes>
<skosmosVocabsIncludedVocabularies>{{DOCKER_COMPREG_SKOSMOS_VOCABS_INCLUDED_VOCABS}}</skosmosVocabsIncludedVocabularies>
<skosmosVocabsExcludedVocabularies>{{DOCKER_COMPREG_SKOSMOS_VOCABS_EXCLUDED_VOCABS}}</skosmosVocabsExcludedVocabularies>


<conceptUriRulesUrl>{{DOCKER_COMPREG_CONCEPT_URI_RULES_URL}}</conceptUriRulesUrl>
<!--<conceptUriFallbackResource>/conceptUriRules.json</conceptUriFallbackResource>-->

<!-- Shibboleth login URI for SHHAA -->
<shibLI>{{DOCKER_COMPREG_SHIB_LI}}</shibLI>
Expand Down Expand Up @@ -615,14 +639,17 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
<version>3.5.0</version>
<configuration>
<warName>${project.artifactId}</warName>
<webXml>${webXmlPath}</webXml>
<webResources>
<resource>
<directory>src/main/webapp</directory>
<filtering>true</filtering>
<excludes>
<exclude>api-docs/**</exclude>
</excludes>
</resource>
</webResources>
<archive>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,13 @@ public class Configuration {
//NOTE: Default values, can be overwritten in applicationContext.xml
private String toolkitLocation = "https://infra.clarin.eu/CMDI/1.x";
private String generalComponentSchema = "https://infra.clarin.eu/CMDI/1.x/xsd/cmd-component.xsd";
private String ccrRestUrl = "https://openskos.meertens.knaw.nl/ccr/api/";
private String clavasRestUrl = "https://openskos.meertens.knaw.nl/clavas/api/";
private String conceptUriRulesUrl = "";
private String conceptUriFallbackResource = "/conceptUriRules.json";

private Collection<String> adminUsers = new HashSet<>();
private List<String> displayNameShibbolethKeys = new ArrayList<>();

private Set<String> includedSchemesForConcepts = Collections.emptySet();
private Set<String> includedVocabsForConcepts = Collections.emptySet();

private Set<String> includedSchemesForVocabularies = Collections.emptySet();
private Set<String> excludedSchemesForVocabularies = Collections.emptySet();
private Set<String> includedVocabsForVocabularies = Collections.emptySet();
Expand Down Expand Up @@ -60,10 +59,6 @@ public String getGeneralComponentSchema() {
return generalComponentSchema;
}

public String getCcrRestUrl() {
return ccrRestUrl;
}

public String getClavasRestUrl() {
return clavasRestUrl;
}
Expand Down Expand Up @@ -123,11 +118,6 @@ public void setGeneralComponentSchema(String generalComponentSchema) {
this.generalComponentSchema = generalComponentSchema;
}

public void setCcrRestUrl(String ccrRestUrl) {
LOG.info("Setting ccrRestUrl to {}", ccrRestUrl);
this.ccrRestUrl = ccrRestUrl;
}

public void setClavasRestUrl(String clavasRestUrl) {
LOG.info("Setting clavasRestUrl to {}", clavasRestUrl);
this.clavasRestUrl = clavasRestUrl;
Expand All @@ -143,14 +133,6 @@ public void setSkosmosCacheRefreshRateSeconds(long skosmosCacheRefreshRateSecond
this.skosmosCacheRefreshRateSeconds = skosmosCacheRefreshRateSeconds;
}

public Set<String> getIncludedSchemesForConcepts() {
return includedSchemesForConcepts;
}

public Set<String> getIncludedVocabsForConcepts() {
return includedVocabsForConcepts;
}

public Set<String> getIncludedSchemesForVocabularies() {
return includedSchemesForVocabularies;
}
Expand All @@ -167,14 +149,6 @@ public Set<String> getExcludedVocabsForVocabularies() {
return excludedVocabsForVocabularies;
}

public void setIncludedVocabsForConcepts(String includedVocabs) {
includedVocabsForConcepts = stringPropertyToSet(includedVocabs);
}

public void setIncludedSchemesForConcepts(String includedSchemes) {
includedSchemesForConcepts = stringPropertyToSet(includedSchemes);
}

public void setExcludedSchemesForVocabularies(String excludedSchemes) {
excludedSchemesForVocabularies = stringPropertyToSet(excludedSchemes);
}
Expand All @@ -191,6 +165,22 @@ public void setExcludedVocabsForVocabularies(String excludedVocabs) {
excludedVocabsForVocabularies = stringPropertyToSet(excludedVocabs);
}

public String getConceptUriRulesUrl() {
return conceptUriRulesUrl;
}

public void setConceptUriRulesUrl(String conceptUriRulesUrl) {
this.conceptUriRulesUrl = conceptUriRulesUrl;
}

public String getConceptUriFallbackResource() {
return conceptUriFallbackResource;
}

public void setConceptUriFallbackResource(String conceptUriFallbackResource) {
this.conceptUriFallbackResource = conceptUriFallbackResource;
}

private Set<String> stringPropertyToSet(String value) {
//split on whitespace
final Splitter stringToSet = Splitter.on(CharMatcher.breakingWhitespace())
Expand Down
Loading