creativecommons / creativecommons/quantifying

Add Zenodo as Data Source for Commons Quantification

Ouverte
#249 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
✨ goal: improvement 🏁 status: ready for work 💻 aspect: code help wanted 🟩 priority: low
Langage dominant
Python
Étoiles
48
Forks
74
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

## Problem
Zenodo is a major repository for open access research outputs with 5.5M+ records, but is not currently included in our commons quantification project. Adding Zenodo would significantly expand our coverage of Creative Commons licensed content, particularly in academic and research domains.

## Description
Implement data collection from Zenodo using their REST API to gather license information for quantifying the commons. This involves:

- Fetching records with structured license metadata
- Classifying Creative Commons and other open licenses
- Generating reports by year, resource type, and language
- Handling API rate limiting and pagination

## Zenodo Useful Links

### Official Documentation
- **REST API Documentation**: https://developers.zenodo.org/
- **API Reference**: https://zenodo.org/api/docs
- **General Documentation**: https://help.zenodo.org/
- **Developer Documentation**: https://developers.zenodo.org/
- **Search Guide**: https://help.zenodo.org/guides/search/
- **Zenodo Homepage**: https://zenodo.org/

### API Endpoints
- **Base URL**: `https://zenodo.org/api/records`
- **Records Search**: `https://zenodo.org/api/records`
- **Single Record**: `https://zenodo.org/api/records/{id}`
- **Communities**: `https://zenodo.org/api/communities`

## Technical Details

### Query Strategy
```
GET https://zenodo.org/api/records?q=*&size=100&page=1&sort=bestmatch
```

**Parameters:**
- `q`: Query string (use `*` for all records)
- `size`: Records per page (300) *implementation choice*
- `page`: Page number for pagination
- `sort`: Sorting method (bestmatch recommended)

### API Types Available
1. **REST API** (Recommended)
- Format: JSON
- Authentication: None required for public records
- Structured license data: `metadata.license.id`

2. **OAI-PMH** (Not recommended)
- Format: XML Dublin Core
- Unreliable license parsing from free-text fields `(dc:rights)`

### Key Metadata Fields
- **License**: `metadata.license.id` (structured, e.g., "cc-by-4.0")
- **Access Rights**: `metadata.access_right` ("open", "restricted", "embargoed")
- **Publication Date**: `metadata.publication_date` (ISO format)
- **Resource Type**: `metadata.resource_type.title`
- **Language**: `metadata.language` (ISO codes)

## Implementation

- [x] I would be interested in implementing this feature.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencer par la documentation de la REST API de Zenodo et le endpoint /api/records, en se concentrant sur la pagination, les limites de débit et les champs de métadonnées listés dans l’issue. Le travail est terminé lorsque les enregistrements peuvent être collectés et classés par licence, avec des rapports couvrant l’année, le type de ressource et la langue, tout en gérant la pagination et les limites de débit.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
data-engineering
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.