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.

1
Enter a Zenodo Identifier

Provide either a Zenodo record URL (e.g., https://zenodo.org/records/1234567) or just the numeric record ID (e.g., 1234567).

2
Select Files (Optional)

If the record contains multiple files, a dialog appears allowing you to choose which files to include in the EDM XML.

3
Download or Copy

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 IDs
  • url - Full Zenodo URLs
  • identifier - 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