From 5990827a8eb3019670d324ddff6f3b6260ef3a39 Mon Sep 17 00:00:00 2001 From: Charles Tapley Hoyt Date: Sun, 28 Sep 2025 10:50:16 +0200 Subject: [PATCH 1/3] Enable tests --- .github/workflows/test.yml | 6 ++-- dataload/rdf2json/dependency-reduced-pom.xml | 20 +++++++++++ dataload/rdf2json/pom.xml | 7 ++++ .../annotators/ShortFormAnnotator.java | 21 ++++++++--- .../src/test/java/TestShortFormAnnotator.java | 35 +++++++++++++++++++ 5 files changed, 82 insertions(+), 7 deletions(-) create mode 100644 dataload/rdf2json/src/test/java/TestShortFormAnnotator.java diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 32bca44fe..bea186619 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,6 +3,10 @@ on: push: branches: - dev + pull_request: + branches: + - dev + jobs: testDataload: runs-on: ubuntu-latest @@ -23,5 +27,3 @@ jobs: - uses: actions/checkout@v3 - name: Run API tests run: ./test_api.sh - - diff --git a/dataload/rdf2json/dependency-reduced-pom.xml b/dataload/rdf2json/dependency-reduced-pom.xml index 848ef35fc..577ca8460 100644 --- a/dataload/rdf2json/dependency-reduced-pom.xml +++ b/dataload/rdf2json/dependency-reduced-pom.xml @@ -53,6 +53,26 @@ pom compile + + org.junit.jupiter + junit-jupiter + 5.10.2 + test + + + junit-jupiter-api + org.junit.jupiter + + + junit-jupiter-params + org.junit.jupiter + + + junit-jupiter-engine + org.junit.jupiter + + + 11 diff --git a/dataload/rdf2json/pom.xml b/dataload/rdf2json/pom.xml index f26c84522..63fd1ed07 100644 --- a/dataload/rdf2json/pom.xml +++ b/dataload/rdf2json/pom.xml @@ -44,6 +44,13 @@ logback-classic 1.4.11 + + + org.junit.jupiter + junit-jupiter + 5.10.2 + test + diff --git a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/ShortFormAnnotator.java b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/ShortFormAnnotator.java index fa4f2002f..bb7a9cc56 100644 --- a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/ShortFormAnnotator.java +++ b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/ShortFormAnnotator.java @@ -12,6 +12,7 @@ public class ShortFormAnnotator { private static final Logger logger = LoggerFactory.getLogger(ShortFormAnnotator.class); + private static final String oboPurlPrefix = "http://purl.obolibrary.org/obo/"; public static void annotateShortForms(OntologyGraph graph) { @@ -36,7 +37,7 @@ public static void annotateShortForms(OntologyGraph graph) { preferredPrefix = graph.config.get("id").toString().toUpperCase(); } - String shortForm = extractShortForm(graph, ontologyBaseUris, preferredPrefix, c.uri); + String shortForm = extractShortForm(ontologyBaseUris, preferredPrefix, c.uri); /* CURIEs are formed by following rules: @@ -75,16 +76,26 @@ public static void annotateShortForms(OntologyGraph graph) { } - private static String extractShortForm(OntologyGraph graph, Set ontologyBaseUris, String preferredPrefix, + public static String extractShortForm(Set ontologyBaseUris, String preferredPrefix, String uri) { if (uri.startsWith("urn:")) { return uri.substring(4); } - // if(uri.startsWith("http://purl.obolibrary.org/obo/")) { - // return uri.substring("http://purl.obolibrary.org/obo/".length()); - // } + // Check if it's an ad-hoc member of an OBO space, for example, how + // http://obolibrary.org/obo/mesh#C is an ad-hoc member of the OBO + // mesh space or http://purl.obolibrary.org/obo/chebi#mass as an ad-hoc + // member of the OBO chebi space (not the same as the CHEBI space). + // + // For example, http://purl.obolibrary.org/obo/chebi#mass becomes + // obo:chebi#mass + // + // See further discussion at https://github.com/EBISPOT/ols4/issues/935. + String oboAdHocURIPrefix = oboPurlPrefix + preferredPrefix.toLowerCase() + "#"; + if (uri.startsWith(oboAdHocURIPrefix)) { + return "obo:" + uri.substring(oboPurlPrefix.length()); + } for (String baseUri : ontologyBaseUris) { if (uri.startsWith(baseUri) && preferredPrefix != null) { diff --git a/dataload/rdf2json/src/test/java/TestShortFormAnnotator.java b/dataload/rdf2json/src/test/java/TestShortFormAnnotator.java new file mode 100644 index 000000000..2e5000fec --- /dev/null +++ b/dataload/rdf2json/src/test/java/TestShortFormAnnotator.java @@ -0,0 +1,35 @@ +import org.junit.jupiter.api.Test; +import static uk.ac.ebi.rdf2json.annotators.ShortFormAnnotator.extractShortForm; +import java.util.*; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class TestShortFormAnnotator { + static Set uriPrefixes = new HashSet<>() {{ + add("http://purl.obolibrary.org/obo/TEST_"); + }}; + + @Test + public void testURN() { + // Test slicing off front of URN + assertEquals("garbage", extractShortForm(uriPrefixes, "TEST", "urn:garbage")); + } + + @Test + public void testOBODefaultNamespace() { + // Test OBO default namespaces (added in https://github.com/EBISPOT/ols4/pull/937) + assertEquals("obo:test#abc", extractShortForm(uriPrefixes, "TEST", "http://purl.obolibrary.org/obo/test#abc")); + } + + @Test + public void testRegular() { + // Test regular parsing based, note that it uses PP instead of TEST + assertEquals("PP_1234567", extractShortForm(uriPrefixes, "PP", "http://purl.obolibrary.org/obo/TEST_1234567")); + } + + @Test + public void testGuesses() { + // Guesses + assertEquals("1234567", extractShortForm(uriPrefixes, "PP", "http://example.org/1234567")); + assertEquals("1234567", extractShortForm(uriPrefixes, "PP", "http://example.org/any.html#1234567")); + } +} From e798ad622bdf9bb6f3def08965eee80e59f2ca75 Mon Sep 17 00:00:00 2001 From: Charles Tapley Hoyt Date: Sun, 28 Sep 2025 10:58:05 +0200 Subject: [PATCH 2/3] Add additional tests --- .../src/test/java/TestShortFormAnnotator.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/dataload/rdf2json/src/test/java/TestShortFormAnnotator.java b/dataload/rdf2json/src/test/java/TestShortFormAnnotator.java index 2e5000fec..95b553761 100644 --- a/dataload/rdf2json/src/test/java/TestShortFormAnnotator.java +++ b/dataload/rdf2json/src/test/java/TestShortFormAnnotator.java @@ -18,18 +18,24 @@ public void testURN() { public void testOBODefaultNamespace() { // Test OBO default namespaces (added in https://github.com/EBISPOT/ols4/pull/937) assertEquals("obo:test#abc", extractShortForm(uriPrefixes, "TEST", "http://purl.obolibrary.org/obo/test#abc")); + + // Reverts to the guess workflow + assertEquals("abc", extractShortForm(uriPrefixes, "XXX", "http://purl.obolibrary.org/obo/test#abc")); } @Test public void testRegular() { - // Test regular parsing based, note that it uses PP instead of TEST - assertEquals("PP_1234567", extractShortForm(uriPrefixes, "PP", "http://purl.obolibrary.org/obo/TEST_1234567")); + // Test regular parsing based, note that it takes the prefix given + assertEquals("XXX_1234567", extractShortForm(uriPrefixes, "XXX", "http://purl.obolibrary.org/obo/TEST_1234567")); + assertEquals("TEST_1234567", extractShortForm(uriPrefixes, "TEST", "http://purl.obolibrary.org/obo/TEST_1234567")); } @Test public void testGuesses() { // Guesses - assertEquals("1234567", extractShortForm(uriPrefixes, "PP", "http://example.org/1234567")); - assertEquals("1234567", extractShortForm(uriPrefixes, "PP", "http://example.org/any.html#1234567")); + assertEquals("1234567", extractShortForm(uriPrefixes, "XXX", "http://example.org/1234567")); + assertEquals("1234567", extractShortForm(uriPrefixes, "TEST", "http://example.org/1234567")); + assertEquals("1234567", extractShortForm(uriPrefixes, "XXX", "http://example.org/any.html#1234567")); + assertEquals("1234567", extractShortForm(uriPrefixes, "TEST", "http://example.org/any.html#1234567")); } } From fec968bb429a29e2a50389363ee4cc0d28d6beb2 Mon Sep 17 00:00:00 2001 From: Charles Tapley Hoyt Date: Mon, 29 Sep 2025 14:11:55 +0200 Subject: [PATCH 3/3] Update test.yml --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bea186619..839f7d729 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,10 +12,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Set up JDK 11 + - name: Set up Java uses: actions/setup-java@v3 with: - java-version: '14' + java-version: '25' distribution: 'adopt' - name: Build with Maven run: mvn clean package