From 98b4b1bfcaa12d988fc65639c42d7f2afa155572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20K=C5=99emen?= Date: Tue, 14 Mar 2023 21:00:15 +0100 Subject: [PATCH] [#5] Refactoring to extract anything from ontology header --- README.md | 6 +-- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 4 +- src/main/java/cz/sio2/obo/Extractor.java | 39 +++++++++++++++++++ ...or.java => OBOFoundryHeaderExtractor.java} | 26 ++++++------- src/main/java/cz/sio2/obo/VersionFetcher.java | 35 +++++++++-------- .../java/cz/sio2/obo/commands/Extract.java | 4 +- .../java/cz/sio2/obo/commands/Transform.java | 6 +-- ...or.java => FSOntologyHeaderExtractor.java} | 10 ++--- ...ava => RDFXMLOntologyHeaderExtractor.java} | 10 ++--- ...r.java => XMLOntologyHeaderExtractor.java} | 10 ++--- ...va => TestOWLOntologyHeaderExtractor.java} | 12 +++--- ...va => TestRDFOntologyHeaderExtractor.java} | 6 +-- ...va => TestXMLOntologyHeaderExtractor.java} | 6 +-- 14 files changed, 107 insertions(+), 69 deletions(-) create mode 100644 src/main/java/cz/sio2/obo/Extractor.java rename src/main/java/cz/sio2/obo/{OBOFoundryVersionExtractor.java => OBOFoundryHeaderExtractor.java} (77%) rename src/main/java/cz/sio2/obo/extractor/{FSExtractor.java => FSOntologyHeaderExtractor.java} (61%) rename src/main/java/cz/sio2/obo/extractor/{RDFXMLExtractor.java => RDFXMLOntologyHeaderExtractor.java} (67%) rename src/main/java/cz/sio2/obo/extractor/{XMLExtractor.java => XMLOntologyHeaderExtractor.java} (67%) rename src/test/java/cz/sio2/obo/extractor/{TestOWLExtractor.java => TestOWLOntologyHeaderExtractor.java} (68%) rename src/test/java/cz/sio2/obo/extractor/{TestRDFXMLExtractor.java => TestRDFOntologyHeaderExtractor.java} (87%) rename src/test/java/cz/sio2/obo/extractor/{TestXMLExtractor.java => TestXMLOntologyHeaderExtractor.java} (86%) diff --git a/README.md b/README.md index 1b03f23..4d587b3 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,6 @@ See the [HTML report](https://psiotwo.github.io/ontology-version-extractor/outpu Currently configured for OBO ontologies: -- `gradle run --args="extract -o output.ttl` will generate `output.ttl` - a Turtle representation of OBO ontology headers and their current versions. -- `gradle run --args="transform -i input.ttl -o output.csv` will generate `output.csv` - a CSV report with the list of OBO ontologies and their current versions. -- `gradle run --args="transform -i input.ttl -o output.html` will generate `output.html` - an HTML report with the list of OBO ontologies and their current versions. +- `gradle run --args="extract -o output.ttl"` will generate `output.ttl` - a Turtle representation of OBO ontology headers and their current versions. +- `gradle run --args="transform -i input.ttl -o output.csv"` will generate `output.csv` - a CSV report with the list of OBO ontologies and their current versions. +- `gradle run --args="transform -i input.ttl -o output.html"` will generate `output.html` - an HTML report with the list of OBO ontologies and their current versions. diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ae04661..e1bef7e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index 86eddf9..ebd6cd7 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1 @@ -rootProject.name = 'ontology-version-extractor' -enableFeaturePreview("VERSION_CATALOGS") - +rootProject.name = 'ontology-version-extractor' \ No newline at end of file diff --git a/src/main/java/cz/sio2/obo/Extractor.java b/src/main/java/cz/sio2/obo/Extractor.java new file mode 100644 index 0000000..647ab75 --- /dev/null +++ b/src/main/java/cz/sio2/obo/Extractor.java @@ -0,0 +1,39 @@ +package cz.sio2.obo; + +import cz.sio2.obo.extractor.OntologyHeaderExtractor; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static cz.sio2.obo.Constants.NS_OBO_HTTP; + +public class Extractor { + + private String get(final Pattern pattern, final String singleLine) { + Matcher m = pattern.matcher(singleLine); + if (m.matches()) { + return m.group(1); + } else { + return null; + } + } + + private String sanitize(final String input) { + if (input == null) { + return null; + } + return input.replace("&obo;", NS_OBO_HTTP); + } + + public OntologyHeader extract(final String s, final OntologyHeaderExtractor extractor) { + final OntologyHeader ontologyHeader = new OntologyHeader(); + final String singleLine = s.replace('\n', ' '); + if (!extractor.getFormatMatcher().matcher(singleLine).matches()) { + return null; + } + ontologyHeader.setOwlOntologyIri(sanitize(get(extractor.getIriMatcher(), singleLine))); + ontologyHeader.setOwlVersionIri(sanitize(get(extractor.getVersionIriMatcher(), singleLine))); + ontologyHeader.setOwlVersionInfo(get(extractor.getVersionInfoMatcher(), singleLine)); + return ontologyHeader; + } +} diff --git a/src/main/java/cz/sio2/obo/OBOFoundryVersionExtractor.java b/src/main/java/cz/sio2/obo/OBOFoundryHeaderExtractor.java similarity index 77% rename from src/main/java/cz/sio2/obo/OBOFoundryVersionExtractor.java rename to src/main/java/cz/sio2/obo/OBOFoundryHeaderExtractor.java index 55e30ad..30a78bb 100644 --- a/src/main/java/cz/sio2/obo/OBOFoundryVersionExtractor.java +++ b/src/main/java/cz/sio2/obo/OBOFoundryHeaderExtractor.java @@ -24,7 +24,7 @@ import java.util.*; @Slf4j -public class OBOFoundryVersionExtractor { +public class OBOFoundryHeaderExtractor { private static void writeRDF(final String file, final Map map) throws IOException { try (final OutputStream os = new FileOutputStream(file)) { @@ -47,7 +47,7 @@ private static void writeHTML(final String file, final Map getOntologyUrls(final String registry) { final Model model = ModelFactory.createDefaultModel(); model.read(registry, Lang.TURTLE.toString()); - final String queryString = new Scanner(Objects.requireNonNull(OBOFoundryVersionExtractor.class.getResourceAsStream("/get-ontology-purls.rq")), StandardCharsets.UTF_8).useDelimiter("\\A").next(); + final String queryString = new Scanner(Objects.requireNonNull(OBOFoundryHeaderExtractor.class.getResourceAsStream("/get-ontology-purls.rq")), StandardCharsets.UTF_8).useDelimiter("\\A").next(); final QueryExecution qe = QueryExecutionFactory .create(queryString, model); final ResultSet rs = qe.execSelect(); @@ -58,7 +58,7 @@ private static List getOntologyUrls(final String registry) { return list; } - private static Map fetchVersions(final List ontologyUrls, final int headerLength) throws MalformedURLException { + private static Map fetchHeaders(final List ontologyUrls, final int headerLength) throws MalformedURLException { final VersionFetcher f = new VersionFetcher(); final Map map = new HashMap<>(); for (final String url : ontologyUrls) { @@ -71,35 +71,35 @@ private static Map fetchVersions(final List onto public void extract(final String registryUrl, final String outputFile, final int headerLength) throws IOException { final List ontologyUrls = getOntologyUrls(registryUrl); - final Map ontologyVersions = fetchVersions(ontologyUrls, headerLength); - writeRDF(outputFile, ontologyVersions); + final Map ontologyHeaders = fetchHeaders(ontologyUrls, headerLength); + writeRDF(outputFile, ontologyHeaders); } - private Map loadVersions(final String inputFile) { + private Map loadHeaders(final String inputFile) { final Map map = new HashMap<>(); final Model model = ModelFactory.createDefaultModel(); model.read(inputFile, Lang.TURTLE.toString()); model.listSubjectsWithProperty(RDF.type, OWL.Ontology).forEach(ontology -> { - final OntologyHeader version = new OntologyHeader(); - version.setOwlOntologyIri(ontology.getURI()); + final OntologyHeader header = new OntologyHeader(); + header.setOwlOntologyIri(ontology.getURI()); final Statement versionIri = ontology.getProperty(OWL2.versionIRI); if ( versionIri != null ) { - version.setOwlVersionIri(versionIri.getObject().asResource().getURI()); + header.setOwlVersionIri(versionIri.getObject().asResource().getURI()); } final Statement versionInfo = ontology.getProperty(OWL2.versionInfo); if ( versionInfo != null ) { - version.setOwlVersionInfo(versionInfo.getString()); + header.setOwlVersionInfo(versionInfo.getString()); } - map.put(ontology.getURI(), version); + map.put(ontology.getURI(), header); }); return map; } public void transformToCsv(final String inputFile, final String outputFile) throws IOException { - writeCSV(outputFile, loadVersions(inputFile)); + writeCSV(outputFile, loadHeaders(inputFile)); } public void transformToHtml(final String inputFile, final String outputFile) throws IOException { - writeHTML(outputFile, loadVersions(inputFile)); + writeHTML(outputFile, loadHeaders(inputFile)); } } diff --git a/src/main/java/cz/sio2/obo/VersionFetcher.java b/src/main/java/cz/sio2/obo/VersionFetcher.java index aae5897..ed57d8a 100644 --- a/src/main/java/cz/sio2/obo/VersionFetcher.java +++ b/src/main/java/cz/sio2/obo/VersionFetcher.java @@ -1,9 +1,9 @@ package cz.sio2.obo; -import cz.sio2.obo.extractor.FSExtractor; -import cz.sio2.obo.extractor.RDFXMLExtractor; -import cz.sio2.obo.extractor.Extractor; -import cz.sio2.obo.extractor.XMLExtractor; +import cz.sio2.obo.extractor.FSOntologyHeaderExtractor; +import cz.sio2.obo.extractor.RDFXMLOntologyHeaderExtractor; +import cz.sio2.obo.extractor.OntologyHeaderExtractor; +import cz.sio2.obo.extractor.XMLOntologyHeaderExtractor; import lombok.extern.slf4j.Slf4j; import org.apache.hc.client5.http.classic.HttpClient; import org.apache.hc.client5.http.classic.methods.HttpGet; @@ -28,22 +28,22 @@ @Slf4j public class VersionFetcher { - final static List extractors = new ArrayList<>(); + final static List ONTOLOGY_HEADER_EXTRACTORS = new ArrayList<>(); static { - extractors.add(new RDFXMLExtractor()); - extractors.add(new FSExtractor()); - extractors.add(new XMLExtractor()); + ONTOLOGY_HEADER_EXTRACTORS.add(new RDFXMLOntologyHeaderExtractor()); + ONTOLOGY_HEADER_EXTRACTORS.add(new FSOntologyHeaderExtractor()); + ONTOLOGY_HEADER_EXTRACTORS.add(new XMLOntologyHeaderExtractor()); } /** - * Fetches relevant parts of an ontology file which contain version information. Currently, it takes + * Fetches relevant parts of an ontology file which contain header information. Currently, it takes * - first maxBytes of the document * - last maxBytes of the document * * @param url URL to fetch the document from * @param maxBytes maximal number of bytes to fetch from each side of the document - * @return Version information from the ontology + * @return header information from the ontology */ public OntologyHeader fetch(final URL url, final int maxBytes) { final RequestConfig cfg = RequestConfig.custom().setConnectTimeout(Timeout.ofMinutes(1)).build(); @@ -56,13 +56,13 @@ public OntologyHeader fetch(final URL url, final int maxBytes) { log.info("- range request (second part)"); final String s2 = getRange(httpClient, url, maxBytes, false); log.info("- done, extracting"); - return extractVersion(s1 + s2); + return extract(s1 + s2); } else { log.info("- not supporting range request, fetching the whole ontology."); HttpGet request1 = new HttpGet(url.toString()); final String s1 = extractContentFromResponse(httpClient.execute(request1), maxBytes); log.info("- done, extracting"); - return extractVersion(s1); + return extract(s1); } } catch (Exception e) { log.info("An error occurred during fetching ontology from URL " + url, e); @@ -90,11 +90,12 @@ private String extractContentFromResponse(final CloseableHttpResponse response, } } - private OntologyHeader extractVersion(final String content) { - final OntologyHeader version = new OntologyHeader(); - for (final Extractor e : extractors) { - if (e.extract(content, version)) { - return version; + private OntologyHeader extract(final String content) { + final Extractor e = new Extractor(); + for (final OntologyHeaderExtractor ohe : ONTOLOGY_HEADER_EXTRACTORS) { + final OntologyHeader header = e.extract(content, ohe); + if (header != null) { + return header; } } return null; diff --git a/src/main/java/cz/sio2/obo/commands/Extract.java b/src/main/java/cz/sio2/obo/commands/Extract.java index b72dd70..b50690f 100644 --- a/src/main/java/cz/sio2/obo/commands/Extract.java +++ b/src/main/java/cz/sio2/obo/commands/Extract.java @@ -1,6 +1,6 @@ package cz.sio2.obo.commands; -import cz.sio2.obo.OBOFoundryVersionExtractor; +import cz.sio2.obo.OBOFoundryHeaderExtractor; import lombok.extern.slf4j.Slf4j; import picocli.CommandLine; @@ -27,7 +27,7 @@ class Extract implements Callable { @Override public Integer call() { try { - new OBOFoundryVersionExtractor().extract(iri, outputFile, headerSize); + new OBOFoundryHeaderExtractor().extract(iri, outputFile, headerSize); } catch (Exception e) { log.error("Error during extraction: ", e); return -1; diff --git a/src/main/java/cz/sio2/obo/commands/Transform.java b/src/main/java/cz/sio2/obo/commands/Transform.java index 41f5cb4..ebbda1b 100644 --- a/src/main/java/cz/sio2/obo/commands/Transform.java +++ b/src/main/java/cz/sio2/obo/commands/Transform.java @@ -1,6 +1,6 @@ package cz.sio2.obo.commands; -import cz.sio2.obo.OBOFoundryVersionExtractor; +import cz.sio2.obo.OBOFoundryHeaderExtractor; import lombok.extern.slf4j.Slf4j; import picocli.CommandLine; @@ -25,9 +25,9 @@ class Transform implements Callable { public Integer call() { try { if (outputFile.endsWith("html")) { - new OBOFoundryVersionExtractor().transformToHtml(inputFile, outputFile); + new OBOFoundryHeaderExtractor().transformToHtml(inputFile, outputFile); } else { - new OBOFoundryVersionExtractor().transformToCsv(inputFile, outputFile); + new OBOFoundryHeaderExtractor().transformToCsv(inputFile, outputFile); } } catch (Exception e) { log.error("Error during extraction: ", e); diff --git a/src/main/java/cz/sio2/obo/extractor/FSExtractor.java b/src/main/java/cz/sio2/obo/extractor/FSOntologyHeaderExtractor.java similarity index 61% rename from src/main/java/cz/sio2/obo/extractor/FSExtractor.java rename to src/main/java/cz/sio2/obo/extractor/FSOntologyHeaderExtractor.java index 8cefe84..d6b6500 100644 --- a/src/main/java/cz/sio2/obo/extractor/FSExtractor.java +++ b/src/main/java/cz/sio2/obo/extractor/FSOntologyHeaderExtractor.java @@ -2,25 +2,25 @@ import java.util.regex.Pattern; -public class FSExtractor extends Extractor { +public class FSOntologyHeaderExtractor implements OntologyHeaderExtractor { @Override - protected Pattern getFormatMatcher() { + public Pattern getFormatMatcher() { return Pattern.compile(".*Ontology\\(.*"); } @Override - protected Pattern getIriMatcher() { + public Pattern getIriMatcher() { return Pattern.compile(".*Ontology\\(<(.+)> <.+?>.*"); } @Override - protected Pattern getVersionIriMatcher() { + public Pattern getVersionIriMatcher() { return Pattern.compile(".*Ontology\\(<.+> <(.+?)>.*"); } @Override - protected Pattern getVersionInfoMatcher() { + public Pattern getVersionInfoMatcher() { return Pattern.compile(".*versionInfo(.+)xxx"); } } diff --git a/src/main/java/cz/sio2/obo/extractor/RDFXMLExtractor.java b/src/main/java/cz/sio2/obo/extractor/RDFXMLOntologyHeaderExtractor.java similarity index 67% rename from src/main/java/cz/sio2/obo/extractor/RDFXMLExtractor.java rename to src/main/java/cz/sio2/obo/extractor/RDFXMLOntologyHeaderExtractor.java index 0808ddd..2a689a5 100644 --- a/src/main/java/cz/sio2/obo/extractor/RDFXMLExtractor.java +++ b/src/main/java/cz/sio2/obo/extractor/RDFXMLOntologyHeaderExtractor.java @@ -2,25 +2,25 @@ import java.util.regex.Pattern; -public class RDFXMLExtractor extends Extractor { +public class RDFXMLOntologyHeaderExtractor implements OntologyHeaderExtractor { @Override - protected Pattern getFormatMatcher() { + public Pattern getFormatMatcher() { return Pattern.compile(".*.*"); } @Override - protected Pattern getVersionIriMatcher() { + public Pattern getVersionIriMatcher() { return Pattern.compile(".*<[a-zA-Z0-9]*:?versionIRI [a-zA-Z0-9]*:?resource=\"([^\"]+?)\"/>.*"); } @Override - protected Pattern getVersionInfoMatcher() { + public Pattern getVersionInfoMatcher() { return Pattern.compile(".*<[a-zA-Z0-9]*:?versionInfo[^>]*>(.+?).*"); } } diff --git a/src/main/java/cz/sio2/obo/extractor/XMLExtractor.java b/src/main/java/cz/sio2/obo/extractor/XMLOntologyHeaderExtractor.java similarity index 67% rename from src/main/java/cz/sio2/obo/extractor/XMLExtractor.java rename to src/main/java/cz/sio2/obo/extractor/XMLOntologyHeaderExtractor.java index d923b44..4f16bb5 100644 --- a/src/main/java/cz/sio2/obo/extractor/XMLExtractor.java +++ b/src/main/java/cz/sio2/obo/extractor/XMLOntologyHeaderExtractor.java @@ -2,25 +2,25 @@ import java.util.regex.Pattern; -public class XMLExtractor extends Extractor { +public class XMLOntologyHeaderExtractor implements OntologyHeaderExtractor { @Override - protected Pattern getFormatMatcher() { + public Pattern getFormatMatcher() { return Pattern.compile(".*]* versionIRI=\"([^\"]+?)\".*"); } @Override - protected Pattern getVersionInfoMatcher() { + public Pattern getVersionInfoMatcher() { return Pattern.compile(".*\\s+\\s+]*>([^<]+?).*"); } } \ No newline at end of file diff --git a/src/test/java/cz/sio2/obo/extractor/TestOWLExtractor.java b/src/test/java/cz/sio2/obo/extractor/TestOWLOntologyHeaderExtractor.java similarity index 68% rename from src/test/java/cz/sio2/obo/extractor/TestOWLExtractor.java rename to src/test/java/cz/sio2/obo/extractor/TestOWLOntologyHeaderExtractor.java index e2445bc..ef707cc 100644 --- a/src/test/java/cz/sio2/obo/extractor/TestOWLExtractor.java +++ b/src/test/java/cz/sio2/obo/extractor/TestOWLOntologyHeaderExtractor.java @@ -1,5 +1,6 @@ package cz.sio2.obo.extractor; +import cz.sio2.obo.Extractor; import cz.sio2.obo.OntologyHeader; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; @@ -11,7 +12,7 @@ import java.nio.file.Paths; import java.util.Objects; -public class TestOWLExtractor { +public class TestOWLOntologyHeaderExtractor { @ParameterizedTest @CsvFileSource(resources = "/owl-testcases.csv", numLinesToSkip = 1, delimiter = ',') @@ -21,10 +22,9 @@ public void testExtractVersionIriFromXMLExtractsVersionInfoCorrectlyIfPresent( String versionIri, String versionInfo) throws URISyntaxException, IOException { final String s = Files.readString(Paths.get(Objects.requireNonNull(getClass().getResource("/owl-testcases/" + file)).toURI())); - final OntologyHeader version = new OntologyHeader(); - new FSExtractor().extract(s, version); - Assertions.assertEquals(ontologyIri, version.getOwlOntologyIri()); - Assertions.assertEquals(versionIri, version.getOwlVersionIri()); - Assertions.assertEquals(versionInfo, version.getOwlVersionInfo()); + final OntologyHeader header = new Extractor().extract(s, new FSOntologyHeaderExtractor()); + Assertions.assertEquals(ontologyIri, header.getOwlOntologyIri()); + Assertions.assertEquals(versionIri, header.getOwlVersionIri()); + Assertions.assertEquals(versionInfo, header.getOwlVersionInfo()); } } diff --git a/src/test/java/cz/sio2/obo/extractor/TestRDFXMLExtractor.java b/src/test/java/cz/sio2/obo/extractor/TestRDFOntologyHeaderExtractor.java similarity index 87% rename from src/test/java/cz/sio2/obo/extractor/TestRDFXMLExtractor.java rename to src/test/java/cz/sio2/obo/extractor/TestRDFOntologyHeaderExtractor.java index 21703a5..2134d76 100644 --- a/src/test/java/cz/sio2/obo/extractor/TestRDFXMLExtractor.java +++ b/src/test/java/cz/sio2/obo/extractor/TestRDFOntologyHeaderExtractor.java @@ -1,5 +1,6 @@ package cz.sio2.obo.extractor; +import cz.sio2.obo.Extractor; import cz.sio2.obo.OntologyHeader; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; @@ -11,7 +12,7 @@ import java.nio.file.Paths; import java.util.Objects; -public class TestRDFXMLExtractor { +public class TestRDFOntologyHeaderExtractor { @ParameterizedTest @CsvFileSource(resources = "/rdf-testcases.csv", numLinesToSkip = 1, delimiter = ',') @@ -20,8 +21,7 @@ public void testExtractVersionFromVersionIriFromRDFXMLWorksCorrectly(String file String versionIri, String versionInfo) throws URISyntaxException, IOException { final String s = Files.readString(Paths.get(Objects.requireNonNull(getClass().getResource("/rdf-testcases/" + file)).toURI())); - final OntologyHeader header = new OntologyHeader(); - new RDFXMLExtractor().extract(s, header); + final OntologyHeader header = new Extractor().extract(s, new RDFXMLOntologyHeaderExtractor()); Assertions.assertEquals(ontologyIri, header.getOwlOntologyIri()); Assertions.assertEquals(versionIri, header.getOwlVersionIri()); Assertions.assertEquals(versionInfo, header.getOwlVersionInfo()); diff --git a/src/test/java/cz/sio2/obo/extractor/TestXMLExtractor.java b/src/test/java/cz/sio2/obo/extractor/TestXMLOntologyHeaderExtractor.java similarity index 86% rename from src/test/java/cz/sio2/obo/extractor/TestXMLExtractor.java rename to src/test/java/cz/sio2/obo/extractor/TestXMLOntologyHeaderExtractor.java index 5364fb9..1a5fed1 100644 --- a/src/test/java/cz/sio2/obo/extractor/TestXMLExtractor.java +++ b/src/test/java/cz/sio2/obo/extractor/TestXMLOntologyHeaderExtractor.java @@ -1,5 +1,6 @@ package cz.sio2.obo.extractor; +import cz.sio2.obo.Extractor; import cz.sio2.obo.OntologyHeader; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; @@ -11,7 +12,7 @@ import java.nio.file.Paths; import java.util.Objects; -public class TestXMLExtractor { +public class TestXMLOntologyHeaderExtractor { @ParameterizedTest @CsvFileSource(resources = "/xml-testcases.csv", numLinesToSkip = 1, delimiter = ',') @@ -21,8 +22,7 @@ public void testExtractVersionIriFromXMLExtractsVersionInfoCorrectlyIfPresent( String versionIri, String versionInfo) throws URISyntaxException, IOException { final String s = Files.readString(Paths.get(Objects.requireNonNull(getClass().getResource("/xml-testcases/" + file)).toURI())); - final OntologyHeader header = new OntologyHeader(); - new XMLExtractor().extract(s, header); + final OntologyHeader header = new Extractor().extract(s, new XMLOntologyHeaderExtractor()); Assertions.assertEquals(ontologyIri, header.getOwlOntologyIri()); Assertions.assertEquals(versionIri, header.getOwlVersionIri()); Assertions.assertEquals(versionInfo, header.getOwlVersionInfo());