User Guide
Learn how to use AnyLOD to convert Zenodo records to EDM XML
Getting Started
AnyLOD converts metadata from Zenodo research records into the Europeana Data Model (EDM) XML format. This enables research outputs to be integrated with cultural heritage platforms and Linked Open Data ecosystems.
Provide either a Zenodo record URL (e.g., https://zenodo.org/records/1234567) or
just the numeric record ID (e.g., 1234567).
If the record contains multiple files, a dialog appears allowing you to choose which files to include in the EDM XML.
Once conversion is complete, download the XML file or copy it to your clipboard.
Conversion Modes
Single Record Conversion
Convert one Zenodo record at a time by entering its URL or ID in the input field and clicking "Convert".
Best for: Quick conversions, testing, or when you need to select specific files.
Batch Conversion
Convert multiple records at once by uploading a CSV file. The CSV must contain one of these column headers:
record_id- Numeric Zenodo record IDsurl- Full Zenodo URLsidentifier- Either format
Best for: Processing many records, automated workflows, or periodic bulk conversions.
File Selection Dialog
When a Zenodo record contains multiple files, a dialog appears with the following options:
| Option | Description |
|---|---|
| File Checkboxes | Select which files to include as edm:WebResource elements in the output. By
default, all files are selected. |
| Primary File Dropdown | Choose which file should be used for edm:isShownBy. This is the main
representation of the record (e.g., a preview image or the main document). The system
automatically suggests the most appropriate file based on file type. |
Automatic Primary File Selection
AnyLOD intelligently selects the primary file based on the record type:
- 3D Records: Prefers GLB, GLTF, OBJ files
- Image Records: Prefers JPEG, PNG images
- Video Records: Prefers MP4, WebM files
- Documents: Prefers PDF files
Understanding the Output
The generated EDM XML contains several key elements:
| EDM Element | Purpose |
|---|---|
edm:ProvidedCHO |
The Cultural Heritage Object - contains descriptive metadata (title, description, creator, date, etc.) |
edm:WebResource |
Represents each file in the record - contains file-specific metadata (format, size, URL) |
ore:Aggregation |
Groups the CHO with its digital representations - links to the provider, rights, and display URLs |
Saving EDM-XML via API
You can use the AnyLOD API to convert and save EDM-XML files programmatically. Here's how to do it using curl or any programming language:
Example: Save EDM-XML to a File
Use the API's format=xml parameter to get raw XML output, then redirect to a file:
# Using GET request with record ID
curl "https://anylod.modavis.org/v1/convert?id=10297036&format=xml" -o zenodo_record.xml
# Using POST request with full URL
curl -X POST https://anylod.modavis.org/v1/convert \
-H "Content-Type: application/json" \
-d '{"identifier": "https://zenodo.org/records/10297036", "format": "xml"}' \
-o my_edm_record.xml
Example: Python Script
import requests
# Convert and save a Zenodo record to EDM-XML
record_id = "10297036"
response = requests.get(
f"https://anylod.modavis.org/v1/convert",
params={"id": record_id, "format": "xml"}
)
if response.status_code == 200:
with open(f"zenodo_{record_id}.xml", "w", encoding="utf-8") as f:
f.write(response.text)
print(f"Saved zenodo_{record_id}.xml")
else:
print(f"Error: {response.status_code}")
Example: Batch Conversion Script
Process multiple records and save each to a separate file:
#!/bin/bash
# Save multiple records to EDM-XML files
for id in 10297036 10234567 10345678; do
curl -s "https://anylod.modavis.org/v1/convert?id=$id&format=xml" \
-o "zenodo_${id}.xml"
echo "Saved zenodo_${id}.xml"
done
Validation
AnyLOD automatically validates generated EDM XML using the Metis Sandbox API (the same validation used by Europeana). The validation results show:
| Status | Meaning |
|---|---|
| Valid | The XML conforms to the EDM schema and is ready for submission to Europeana. |
| Warnings | The XML is valid but could be improved. Common warnings include missing optional fields or very long text values. |
| Errors | The XML has structural problems that must be fixed before submission. This usually indicates missing required fields. |
Configuration Options
AnyLOD can be configured via environment variables when running as a Docker container:
| Variable | Default | Description |
|---|---|---|
ZENODO_API_KEY |
(none) | Optional Zenodo API key for higher rate limits when fetching records |
RATE_LIMIT_RPM |
60 | Maximum API requests per minute allowed from clients |
VALIDATION_METHOD |
metis | Validation method: metis (Europeana API) or local (XSD only) |
SECRET_KEY |
(generated) | Flask secret key for session security - must be set in production |
DATABASE_URL |
sqlite:///anylod.db | Database connection URL for storing conversion history |
Supported Zenodo Record Types
AnyLOD maps Zenodo upload types to EDM types as follows:
| Zenodo Type | EDM Type |
|---|---|
| Publication, Presentation, Lesson, Dataset, Software | TEXT |
| Image, Poster | IMAGE |
| Video | VIDEO |
| Physical Object | 3D |
Troubleshooting
Record Not Found
Ensure the Zenodo record ID is correct and that the record is publicly accessible. Restricted or embargoed records cannot be converted.
Conversion Takes Too Long
Large records with many files may take longer to process. The system fetches file metadata from Zenodo which is subject to rate limiting.
Validation Warnings
Warnings are informational and do not prevent the XML from being valid. Common warnings include:
- "Extremely long values" - Description text exceeds recommended length
- "Missing description fields" - Optional fields not present in Zenodo metadata