MCP HubMCP Hub
SKILL·A6D910

ontology-term-resolution

K-Dense-AI
Обновлено 1 month ago
4 просмотров
38,996
3,647
38,996
Посмотреть на GitHub
Разработкаaidata

О программе

Этот навык преобразует свободные текстовые метки в идентификаторы терминов онтологий и проверяет существующие CURIEs с использованием службы поиска онтологий EBI. Он необходим для аннотирования биологических метаданных, подготовки данных для отправки в крупные репозитории, а также для аудита или сопоставления идентификаторов онтологий. Используйте его всякий раз, когда вам требуется создавать, проверять или управлять стандартизированными терминами онтологий в ваших приложениях.

Быстрая установка

Claude Code

Рекомендуется
Основной
npx skills add K-Dense-AI/claude-scientific-skills -a claude-code
Команда плагинаАльтернативный
/plugin add https://github.com/K-Dense-AI/claude-scientific-skills
Git клонированиеАльтернативный
git clone https://github.com/K-Dense-AI/claude-scientific-skills.git ~/.claude/skills/ontology-term-resolution

Скопируйте и вставьте эту команду в Claude Code для установки этого навыка

Документация

Ontology Term Resolution

When to use

Any time an ontology identifier is about to be written down or trusted: annotating a metadata column, filling a submission template, auditing a table someone else produced, or checking whether an ID in an old file is still current.

The rule

Never write an ontology ID from memory, and never accept one without checking it.

Ontology IDs are memorable in form and arbitrary in detail. A plausible-looking UBERON:0002108 is a real term (small intestine) that is not the liver, and nothing downstream will catch the substitution — the ID is well-formed, the ontology is right, and the metadata is silently wrong. Reviewers cannot spot it either, which is why these errors persist into published datasets.

Every ID this skill emits comes from a live OLS lookup. Every ID it is handed gets verified.

Two directions

DirectionScriptQuestion answered
text → IDscripts/resolve_terms.pyWhat is the term for "left ventricle"?
ID → verdictscripts/validate_terms.pyIs EFO:0001067 real, current, and labelled what this file claims?

Both take single values or files, emit TSV or JSON, and need no packages beyond the standard library.

Resolve text to terms

cd skills/ontology-term-resolution/scripts

# one string, constrained to the ontology that should define it
python3 resolve_terms.py "liver" --ontology uberon
query   rank  curie           label  ontology  match_type   strategy  defining_ontology
liver   1     UBERON:0002107  liver  uberon    exact_label  exact     true
# a column of tissue names; anything not an exact hit is reported, not guessed
python3 resolve_terms.py --input tissues.txt --ontology uberon \
    --exact-only --format tsv -o resolved.tsv

# accept fuzzy fallbacks, then review the partial hits by hand
python3 resolve_terms.py "left ventrical of heart" --ontology uberon --top 3

The search escalates exact (label and synonym) → tokenfulltext and stops at the first strategy that returns anything, reporting which one fired. --exact-only disables the ladder. --branch UBERON:0000465 restricts candidates to descendants of a term.

Read match_type before using a result. exact_label and exact_synonym are safe; partial means OLS returned its best guess for a string that does not exist as written, and needs a human decision. unresolved is a legitimate output — see references/curation-rules.md for the normalisations worth retrying first.

Validate existing IDs

python3 validate_terms.py UBERON:0002107 EFO:0001067 UBERON:9999999
id              status     actual_label                  ontology  replacement     detail
UBERON:0002107  ok         liver                         uberon
EFO:0001067     obsolete   obsolete_parasitic infection  efo       MONDO:0005135   obsolete; replaced by MONDO:0005135
UBERON:9999999  not_found                                                          no such term in the ontology this prefix names

Exit code is 1 if anything failed, 0 otherwise, 2 on usage or network trouble — so it works as a CI gate on a metadata file:

# id + label columns; catches IDs that exist but are labelled as something else
python3 validate_terms.py --input metadata.tsv --strict

# a tissue column must hold UBERON anatomical entities and nothing else
python3 validate_terms.py --input tissue_ids.tsv \
    --branch UBERON:0000465 --expect-ontology uberon
StatusMeaningVerdict
okExists, current, consistent with everything assertedpass
matched_synonymClaimed label is a synonym; primary label differswarn
imported_onlyHome ontology no longer asserts this IDwarn
not_a_classTerm is a property or individualwarn
not_foundNo such termfail
obsoleteObsoleted; replacement gives the successor when one existsfail
label_mismatchID and claimed label describe different thingsfail
wrong_ontologyRight kind of ID, wrong ontology for this columnfail
wrong_branchNot a descendant of the required rootfail
malformed_curieNot of the form PREFIX:localfail

--strict promotes warnings to failures.

API behaviour that will mislead you

These are verified against the live service and are the reason this skill ships scripts rather than a recipe. Full detail in references/ols4-api.md.

TrapConsequence
exact=true is exact token matchingliver returns 161 hits in UBERON; adding queryFields=label returns 1
/search never returns is_obsolete or term_replaced_byNamed in fieldList they are dropped silently; only term detail can answer "is this ID still current"
ontology=efo returns MONDO and CL hitsOntologies import each other; filter on the CURIE prefix yourself
The same term appears once per importing ontologyDeduplicate on obo_id, keep is_defining_ontology: true
The obo_id index has holesMONDO:0000001 is live but unindexed by obo_id; an IRI fallback is required to avoid a false not_found
IRIs are not all OBO PURLsEFO and Orphanet use their own namespaces — resolve IRIs, do not template them
OxO is retiredReturns HTML with HTTP 200; use term cross-references or SSSOM instead
A branch check does not exclude cell types from anatomyCARO puts cell under anatomical structure; constrain the prefix too

Choosing the ontology

MONDO for disease, HP for phenotype, UBERON for tissue, CL for cell type, EFO for assay, ChEBI for compounds, NCBITaxon for organism, PATO for sex and for normal. Prefix-to-OLS-id mappings (HP is served as hp, Orphanet as ordo), branch roots for --branch, and the overlapping-ontology judgement calls are in references/ontology-registry.md.

Reporting results

Give the ID and the label, and say how each was matched. A table of bare IDs cannot be reviewed. State unresolved terms explicitly rather than filling them with the nearest hit.

References

  • references/ols4-api.md — endpoints, parameters, response fields, and every verified trap.
  • references/ontology-registry.md — prefix/ontology-id table, branch roots, which ontology owns which concept.
  • references/curation-rules.md — candidate-selection procedure, normalisations to retry, auditing an existing table, obsolete terms, cross-ontology mapping.

GitHub репозиторий

K-Dense-AI/claude-scientific-skills
Путь: skills/ontology-term-resolution
0
agent-skillsai-scientistbioinformaticschemoinformaticsclaudeclaude-skills
FAQ

Часто задаваемые вопросы

Что такое Skill ontology-term-resolution?

ontology-term-resolution — это Claude Skill от K-Dense-AI. Skills объединяют инструкции и ресурсы, которые Claude загружает по мере необходимости, чтобы выполнять задачи, связанные с ontology-term-resolution, без дополнительных запросов.

Как установить ontology-term-resolution?

Используйте команды установки на этой странице: добавьте ontology-term-resolution в Claude Code как плагин или клонируйте репозиторий в каталог skills, затем перезапустите Claude, чтобы загрузить Skill.

К какой категории относится ontology-term-resolution?

ontology-term-resolution относится к категории Разработка.

Можно ли использовать ontology-term-resolution бесплатно?

Да. ontology-term-resolution размещён на AIMCP и доступен для бесплатной установки.

Похожие навыки

qmd
Разработка

qmd — это локальный инструмент командной строки для поиска и индексирования, который позволяет разработчикам индексировать и осуществлять поиск по локальным файлам с использованием гибридного поиска, сочетающего BM25, векторные эмбеддинги и реранкинг. Он поддерживает как использование через командную строку, так и режим MCP (Model Context Protocol) для интеграции с Claude. Инструмент использует Ollama для создания эмбеддингов и хранит индексы локально, что делает его идеальным для поиска по документации или кодовой базе прямо из терминала.

Просмотреть навык
subagent-driven-development
Разработка

Этот навык выполняет планы реализации, создавая нового суб-агента для каждой независимой задачи, проводя проверку кода между задачами. Он позволяет быстро итерировать, сохраняя контроль качества через этот процесс ревью. Используйте его при работе в основном с независимыми задачами в рамках одной сессии, чтобы обеспечить непрерывный прогресс со встроенными проверками качества.

Просмотреть навык
mcporter
Разработка

Навык mcporter позволяет разработчикам управлять и вызывать серверы Model Context Protocol (MCP) напрямую из Claude. Он предоставляет команды для вывода списка доступных серверов, вызова их инструментов с аргументами, а также для обработки аутентификации и управления жизненным циклом демона. Используйте этот навык для интеграции и тестирования функциональности серверов MCP в вашем рабочем процессе разработки.

Просмотреть навык
adk-deployment-specialist
Разработка

Этот навык развертывает и оркестрирует агентов Vertex AI ADK с использованием протокола A2A, управляя обнаружением AgentCard, отправкой задач и поддерживая инструменты, такие как песочница для выполнения кода и Memory Bank. Он позволяет создавать мультиагентные системы с последовательными, параллельными или циклическими схемами оркестрации на Python, Java или Go. Используйте его, когда требуется развернуть агентов ADK или оркестрировать рабочие процессы агентов в Google Cloud.

Просмотреть навык