11ARG RMLSTREAMER_VERSION=2.5.0
2+ ARG HDT_JAVA_PACKAGE_VERSION=3.0.10
23
34FROM eclipse-temurin:11-jre AS build-hdt-cpp
45
@@ -37,6 +38,7 @@ RUN mkdir -p /opt/third_party_licenses \
3738FROM eclipse-temurin:11-jre
3839
3940ARG RMLSTREAMER_VERSION
41+ ARG HDT_JAVA_PACKAGE_VERSION
4042
4143RUN apt-get update \
4244 && apt-get install -y --no-install-recommends \
@@ -50,30 +52,50 @@ RUN apt-get update \
5052 gzip \
5153 libserd-0-0 \
5254 nodejs \
55+ python3 \
56+ python3-venv \
5357 time \
5458 && rm -rf /var/lib/apt/lists/*
5559
60+ RUN python3 -m venv /opt/pycottas-venv \
61+ && /opt/pycottas-venv/bin/pip install --no-cache-dir pycottas
62+
5663RUN mkdir -p /opt/rmlstreamer \
5764 && curl -fsSL \
5865 -o /opt/rmlstreamer/RMLStreamer-v${RMLSTREAMER_VERSION}-standalone.jar \
5966 https://github.com/RMLio/RMLStreamer/releases/download/v${RMLSTREAMER_VERSION}/RMLStreamer-v${RMLSTREAMER_VERSION}-standalone.jar
6067
68+ RUN mkdir -p /opt/hdt-java \
69+ && curl -fsSL \
70+ -o /tmp/hdt-java-package.tar.gz \
71+ https://repo1.maven.org/maven2/org/rdfhdt/hdt-java-package/${HDT_JAVA_PACKAGE_VERSION}/hdt-java-package-${HDT_JAVA_PACKAGE_VERSION}-distribution.tar.gz \
72+ && tar -xzf /tmp/hdt-java-package.tar.gz -C /opt/hdt-java --strip-components=1 \
73+ && rm -f /tmp/hdt-java-package.tar.gz
74+
6175COPY --from=build-hdt-cpp /usr/local/bin/rdf2hdt /usr/local/bin/rdf2hdt
6276COPY --from=build-hdt-cpp /usr/local/bin/hdt2rdf /usr/local/bin/hdt2rdf
6377COPY --from=build-hdt-cpp /usr/local/lib/libcds* /usr/local/lib/
6478COPY --from=build-hdt-cpp /usr/local/lib/libhdt* /usr/local/lib/
6579COPY --from=build-hdt-cpp /opt/third_party_licenses/ /usr/share/licenses/vcf-rdfizer/
6680COPY THIRD_PARTY_NOTICES.md /usr/share/licenses/vcf-rdfizer/THIRD_PARTY_NOTICES.md
6781COPY src/*.sh /opt/vcf-rdfizer/
82+ COPY src/*.py /opt/vcf-rdfizer/
6883
6984RUN chmod +x /opt/vcf-rdfizer/*.sh \
85+ && find /opt/hdt-java/bin -type f -exec chmod +x {} \; \
7086 && chmod +x /usr/local/bin/rdf2hdt \
7187 && chmod +x /usr/local/bin/hdt2rdf
7288
7389ENV RMLSTREAMER_JAR=/opt/rmlstreamer/RMLStreamer-v${RMLSTREAMER_VERSION}-standalone.jar
7490ENV JAR=/opt/rmlstreamer/RMLStreamer-v${RMLSTREAMER_VERSION}-standalone.jar
91+ ENV HDT_JAVA_HOME=/opt/hdt-java
7592ENV RDF2HDT_BIN=/usr/local/bin/rdf2hdt
7693ENV HDT2RDF_BIN=/usr/local/bin/hdt2rdf
94+ ENV COTTAS_PYTHON_BIN=/opt/pycottas-venv/bin/python
7795ENV LD_LIBRARY_PATH=/usr/local/lib
7896
97+ # COTTAS creates a temporary DuckDB database in the container working
98+ # directory. The wrapper runs containers as the host UID/GID, so this path
99+ # must be writable without requiring root or creating root-owned host files.
100+ RUN mkdir -p /work && chmod 1777 /work
79101WORKDIR /work
0 commit comments