diff --git a/cli/src/main/java/org/incenp/obofoundry/sssom/cli/SimpleCLI.java b/cli/src/main/java/org/incenp/obofoundry/sssom/cli/SimpleCLI.java
index b836e7d..0ec9902 100644
--- a/cli/src/main/java/org/incenp/obofoundry/sssom/cli/SimpleCLI.java
+++ b/cli/src/main/java/org/incenp/obofoundry/sssom/cli/SimpleCLI.java
@@ -71,6 +71,8 @@
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyCreationException;
import org.semanticweb.owlapi.model.OWLOntologyManager;
+import org.tukaani.xz.LZMA2Options;
+import org.tukaani.xz.XZOutputStream;
import picocli.CommandLine.ArgGroup;
import picocli.CommandLine.Command;
@@ -833,6 +835,10 @@ private OutputStream getOutputStream(String filename, CompressionFormat comp)
out = new GZIPOutputStream(out);
break;
+ case XZ:
+ out = new XZOutputStream(out, new LZMA2Options());
+ break;
+
case NONE:
break;
}
diff --git a/ext/pom.xml b/ext/pom.xml
index 6aa1adf..6791b35 100644
--- a/ext/pom.xml
+++ b/ext/pom.xml
@@ -32,6 +32,11 @@
owlapi-distribution
4.5.29
+
+ org.tukaani
+ xz
+ 1.12
+
io.github.liveontologies
elk-owlapi
diff --git a/ext/src/main/java/org/incenp/obofoundry/sssom/util/CompressionFormat.java b/ext/src/main/java/org/incenp/obofoundry/sssom/util/CompressionFormat.java
index 609e7ff..b442b8c 100644
--- a/ext/src/main/java/org/incenp/obofoundry/sssom/util/CompressionFormat.java
+++ b/ext/src/main/java/org/incenp/obofoundry/sssom/util/CompressionFormat.java
@@ -35,7 +35,14 @@ public enum CompressionFormat {
*
* @see RFC 1952
*/
- GZIP(".gz");
+ GZIP(".gz"),
+
+ /**
+ * The XZ file format from the XZ Utils project.
+ *
+ * @see XZ file format
+ */
+ XZ(".xz");
private String extension;
diff --git a/ext/src/main/java/org/incenp/obofoundry/sssom/util/ReaderFactory.java b/ext/src/main/java/org/incenp/obofoundry/sssom/util/ReaderFactory.java
index 408f452..88a4143 100644
--- a/ext/src/main/java/org/incenp/obofoundry/sssom/util/ReaderFactory.java
+++ b/ext/src/main/java/org/incenp/obofoundry/sssom/util/ReaderFactory.java
@@ -34,6 +34,7 @@
import org.incenp.obofoundry.sssom.TSVReader;
import org.incenp.obofoundry.sssom.TSVReader.SeparatorMode;
import org.incenp.obofoundry.sssom.rdf.RDFReader;
+import org.tukaani.xz.XZInputStream;
/**
* A class providing helper methods to obtain SSSOM reader objects.
@@ -513,6 +514,10 @@ private InputStream getInputStream(String filename, boolean allowStdin, Compress
in = new GZIPInputStream(in);
break;
+ case XZ:
+ in = new XZInputStream(in);
+ break;
+
case NONE:
break;
}