creativecommons / creativecommons/quantifying

Add Zenodo as Data Source for Commons Quantification

Đang mở
#249 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
✨ goal: improvement 🏁 status: ready for work 💻 aspect: code help wanted 🟩 priority: low
Ngôn ngữ chính
Python
Star
48
Fork
74
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

## 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.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với tài liệu REST API của Zenodo và endpoint /api/records, tập trung vào phân trang, giới hạn tốc độ và các trường siêu dữ liệu được liệt kê trong issue. Hoàn thành nghĩa là có thể thu thập và phân loại các bản ghi theo giấy phép, với các báo cáo bao quát năm, loại tài nguyên và ngôn ngữ, đồng thời xử lý phân trang và giới hạn tốc độ.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
data-engineering
Loại issue
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.