用途
OpenAIRE Graph API 是欧洲开放科学基础设施 OpenAIRE 提供的程序化接口,用于检索和发现欧盟资助的研究成果。它覆盖出版物、数据集、软件及其他研究产品,并将这些成果与欧盟资助项目、组织和研究人员关联起来。该 API 免费、无需认证,返回 JSON 或 XML 格式,特别适合发现欧盟/Horizon 资助的研究,以及追踪研究成果、项目与机构之间的关联。
主要能力
- 检索出版物:支持按关键词、DOI、开放获取状态、接收日期范围、欧盟项目 ID 等条件查询。
- 检索数据集:支持按关键词、开放获取状态等条件查询研究数据集。
- 检索项目:支持按关键词、资助机构(如 EC)、资助计划(如 H2020、HE)查询欧盟资助项目。
- 项目—成果关联:可追踪哪些出版物来自哪个欧盟资助项目。
- 跨实体关系:支持出版物 ↔ 数据集 ↔ 软件 ↔ 项目 ↔ 组织之间的关联查询。
- 去重:OpenAIRE 对来自多个来源(Crossref、PubMed、arXiv、机构仓库等)的记录进行去重。
- 开放获取监测:可追踪受资助研究的开放获取合规情况。
- 数据规模:来自 120,000+ 数据源的 1.75 亿+ 研究产品。
使用方式
基础 URL 为 https://api.openaire.eu。
检索出版物示例:
# 按关键词检索
curl "https://api.openaire.eu/search/publications?keywords=climate+change+adaptation&format=json&size=10"
# 仅开放获取
curl "https://api.openaire.eu/search/publications?keywords=machine+learning&openaccessonly=true&format=json"
# 按日期过滤
curl "https://api.openaire.eu/search/publications?keywords=CRISPR&fromDateAccepted=2023-01-01&toDateAccepted=2026-12-31&format=json"
# 按欧盟项目过滤
curl "https://api.openaire.eu/search/publications?projectID=corda__h2020::123456&format=json"
# 按 DOI 检索
curl "https://api.openaire.eu/search/publications?doi=10.1038/s41586-023-05881-4&format=json"
检索数据集示例:
# 查找研究数据集
curl "https://api.openaire.eu/search/datasets?keywords=genomics+sequencing&format=json&size=20"
# 仅开放获取数据集
curl "https://api.openaire.eu/search/datasets?keywords=ocean+temperature&openaccessonly=true&format=json"
检索项目示例:
# 检索欧盟资助项目
curl "https://api.openaire.eu/search/projects?keywords=artificial+intelligence&funder=EC&format=json"
# Horizon 2020 项目
curl "https://api.openaire.eu/search/projects?keywords=renewable+energy&fundingStream=H2020&format=json"
# Horizon Europe 项目
curl "https://api.openaire.eu/search/projects?keywords=quantum+computing&fundingStream=HE&format=json"
查询参数:
| 参数 | 说明 | 示例 |
|---|---|---|
| keywords | 自由文本检索 | keywords=deep+learning |
| doi | 按 DOI 检索 | doi=10.1234/example |
| openaccessonly | 开放获取过滤 | openaccessonly=true |
| fromDateAccepted | 开始日期 | fromDateAccepted=2023-01-01 |
| toDateAccepted | 结束日期 | toDateAccepted=2026-12-31 |
| funder | 资助机构 | funder=EC(欧盟委员会) |
| fundingStream | 资助计划 | fundingStream=H2020 |
| format | 响应格式 | format=json 或 format=xml |
| size | 每页结果数 | size=50(最大 100) |
| page | 页码 | page=2 |
| sortBy | 排序方式 | sortBy=resultdateofacceptance,descending |
Python 使用示例:
import requests
BASE_URL = "https://api.openaire.eu"
def search_publications(keywords: str, open_access: bool = False,
from_date: str = None, size: int = 20) -> list:
"""Search OpenAIRE publications."""
params = {
"keywords": keywords,
"format": "json",
"size": size
}
if open_access:
params["openaccessonly"] = "true"
if from_date:
params["fromDateAccepted"] = from_date
resp = requests.get(f"{BASE_URL}/search/publications", params=params)
resp.raise_for_status()
data = resp.json()
results = []
for item in data.get("response", {}).get("results", {}).get("result", []):
metadata = item.get("metadata", {}).get("oaf:entity", {}).get("oaf:result", {})
title = metadata.get("title", {})
if isinstance(title, dict):
title = title.get("$", "")
results.append({
"title": title,
"doi": metadata.get("pid", [{}])[0].get("$", "") if metadata.get("pid") else None,
"date": metadata.get("dateofacceptance", {}).get("$", ""),
"description": metadata.get("description", {}).get("$", "")[:300] if metadata.get("description") else None
})
return results
# Example: find recent open access papers on climate
pubs = search_publications("climate resilience urban", open_access=True, from_date="2024-01-01")
for p in pubs:
print(f"[{p['date']}] {p['title']}")
适用场景
- 发现欧盟/Horizon 资助的研究成果。
- 追踪某欧盟资助项目产出的出版物、数据集或软件。
- 监测受资助研究的开放获取合规情况。
- 跨来源检索并利用去重后的研究记录。
- 构建研究实体之间的关联图谱(成果、项目、机构、研究人员)。
限制
- 单页最多返回 100 条结果(size 最大 100)。
- 资料未提供速率限制、配额或商业使用条款等具体信息。
- 资料未提供除 JSON/XML 之外的其他格式说明。
- 资料未提供 API 版本、稳定性承诺或 SLA 信息。
参考
- OpenAIRE API Documentation
- OpenAIRE Graph
- OpenAIRE EXPLORE Portal