[Feature] Minimal IUCLID export (#338)

This is an initial implementation that creates a working minimal .i6z document.
It passes schema validation and can be imported into IUCLID.

Caveat:
IUCLID files target individual compounds.
Pathway is not actually covered by the format.

It can be added in either soil or water and soil OECD endpoints.
**I currently only implemented the soil endpoint for all data.**

This sort of works, and I can report all degradation products in a pathway (not a nice view, but we can report many transformation products and add a diagram attachment in the future).

Adding additional information is an absolute pain, as we need to explicitly map each type of information to the relevant OECD field.
I use the XSD scheme for validation, but unfortunately the IUCLID parser is not fully compliant and requires a specific order, etc.

The workflow is: finding the AI structure from the XSD scheme -> make the scheme validation pass -> upload to IUCLID to get obscure error messages -> guess what could be wrong -> repeat 💣

New specifications get released once per year, so we will have to update accordingly.
I believe that this should be a more expensive feature, as it requires significant effort to uphold.

Currently implemented for root compound only in SOIL:

- Soil Texture 2
- Soil Texture 1
- pH value
- Half-life per soil sample / scenario (mapped to disappearance; not sure about that).
- CEC
- Organic Matter (only Carbon)
- Moisture content
- Humidity

<img width="2123" alt="image.png" src="attachments/d29830e1-65ef-4136-8939-1825e0959c62">
<img width="2124" alt="image.png" src="attachments/ac9de2ac-bf68-4ba4-b40b-82f810a9de93">
<img width="2139" alt="image.png" src="attachments/5674c7e6-865e-420e-974a-6b825b331e6c">

Reviewed-on: enviPath/enviPy#338
Co-authored-by: Tobias O <tobias.olenyi@envipath.com>
Co-committed-by: Tobias O <tobias.olenyi@envipath.com>
This commit is contained in:
2026-04-07 19:46:12 +12:00
committed by jebus
parent f7c45b8015
commit d06bd0d4fd
49 changed files with 66402 additions and 1014 deletions

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://iuclid6.echa.europa.eu/namespaces/platform-attachment/v1"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink"
targetNamespace="http://iuclid6.echa.europa.eu/namespaces/platform-attachment/v1"
elementFormDefault="qualified" attributeFormDefault="qualified">
<xs:annotation>
<xs:appinfo>XML Schema Definition of the IUCLID6 Attachment entity</xs:appinfo>
</xs:annotation>
<xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
<xs:element name="Attachment">
<xs:annotation>
<xs:documentation>Defines the attachment metadata information</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element name="documentKey" type="xs:string">
<xs:annotation>
<xs:documentation>The unique identifier of the attachment</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="name" type="xs:string">
<xs:annotation>
<xs:documentation>The name of the uploaded attachment</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="creationDate" type="xs:dateTime">
<xs:annotation>
<xs:documentation>The date that the attachment was created</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="lastModificationDate" type="xs:dateTime">
<xs:annotation>
<xs:documentation>The last modification date of the attachment</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="remarks" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>The remarks provided by the user during the attachment uploading</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="md5" type="xs:string">
<xs:annotation>
<xs:documentation>The MD5 hash of the uploaded attachment content</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="mimetype" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>The media type of the attachment content</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element type="xs:boolean" name="symbolic" minOccurs="0">
<xs:annotation>
<xs:documentation>Indicates that the actual attachment file is not included in the i6z file</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="content" minOccurs="0">
<xs:annotation>
<xs:documentation>The name/location of the attachment binary under the "attachments" directory inside the i6z archive file</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute ref="xlink:type"/>
<xs:attribute ref="xlink:href"/>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="AttachmentRef" type="xs:string">
<xs:annotation>
<xs:documentation>Specifies the unique identifier of an attachment that is directly linked to a IUCLID6 document</xs:documentation>
</xs:annotation>
</xs:element>
</xs:schema>