ontology-term-resolution
정보
이 스킬은 자유 텍스트 라벨을 온톨로지 용어 ID로 변환하고 EBI 온톨로지 조회 서비스를 사용하여 기존 CURIEs를 검증합니다. 생물학적 메타데이터 주석 처리, 주요 저장소 제출을 위한 데이터 준비, 온톨로지 식별자 감사 및 매핑에 필수적입니다. 애플리케이션에서 표준화된 온톨로지 용어를 생성, 확인 또는 관리해야 할 때마다 이 스킬을 사용하세요.
빠른 설치
Claude Code
추천npx skills add K-Dense-AI/claude-scientific-skills -a claude-code/plugin add https://github.com/K-Dense-AI/claude-scientific-skillsgit clone https://github.com/K-Dense-AI/claude-scientific-skills.git ~/.claude/skills/ontology-term-resolutionClaude 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
| Direction | Script | Question answered |
|---|---|---|
| text → ID | scripts/resolve_terms.py | What is the term for "left ventricle"? |
| ID → verdict | scripts/validate_terms.py | Is 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) → token → fulltext 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
| Status | Meaning | Verdict |
|---|---|---|
ok | Exists, current, consistent with everything asserted | pass |
matched_synonym | Claimed label is a synonym; primary label differs | warn |
imported_only | Home ontology no longer asserts this ID | warn |
not_a_class | Term is a property or individual | warn |
not_found | No such term | fail |
obsolete | Obsoleted; replacement gives the successor when one exists | fail |
label_mismatch | ID and claimed label describe different things | fail |
wrong_ontology | Right kind of ID, wrong ontology for this column | fail |
wrong_branch | Not a descendant of the required root | fail |
malformed_curie | Not of the form PREFIX:local | fail |
--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.
| Trap | Consequence |
|---|---|
exact=true is exact token matching | liver returns 161 hits in UBERON; adding queryFields=label returns 1 |
/search never returns is_obsolete or term_replaced_by | Named in fieldList they are dropped silently; only term detail can answer "is this ID still current" |
ontology=efo returns MONDO and CL hits | Ontologies import each other; filter on the CURIE prefix yourself |
| The same term appears once per importing ontology | Deduplicate on obo_id, keep is_defining_ontology: true |
The obo_id index has holes | MONDO:0000001 is live but unindexed by obo_id; an IRI fallback is required to avoid a false not_found |
| IRIs are not all OBO PURLs | EFO and Orphanet use their own namespaces — resolve IRIs, do not template them |
| OxO is retired | Returns HTML with HTTP 200; use term cross-references or SSSOM instead |
| A branch check does not exclude cell types from anatomy | CARO 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 저장소
자주 묻는 질문
ontology-term-resolution Skill이란 무엇인가요?
ontology-term-resolution은(는) K-Dense-AI이(가) 만든 Claude Skill입니다. Skill은 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는 BM25, 벡터 임베딩, 재순위화를 결합한 하이브리드 검색을 통해 로컬 파일을 색인화하고 검색할 수 있는 로컬 검색 및 색인화 CLI 도구입니다. 명령줄 사용과 Claude 통합을 위한 MCP(Model Context Protocol) 모드를 모두 지원합니다. 이 도구는 임베딩에 Ollama를 사용하고 색인을 로컬에 저장하여 터미널에서 직접 문서나 코드베이스를 검색하는 데 이상적입니다.
이 스킬은 각 독립적인 작업마다 새로운 하위 에이전트를 배치하고 작업 사이에 코드 리뷰를 진행하여 구현 계획을 실행합니다. 이 리뷰 프로세스를 통해 품질 게이트를 유지하면서 빠른 반복 작업을 가능하게 합니다. 동일한 세션 내에서 대부분 독립적인 작업을 진행할 때 내장된 품질 검증과 함께 지속적인 진행을 보장하기 위해 사용하세요.
mcporter 스킬은 개발자가 Claude에서 직접 Model Context Protocol(MCP) 서버를 관리하고 호출할 수 있도록 합니다. 이 스킬은 사용 가능한 서버를 나열하고, 인수를 사용해 해당 서버의 도구를 호출하며, 인증 및 데몬 생명주기를 처리하는 명령어를 제공합니다. 개발 워크플로우에서 MCP 서버 기능을 통합하고 테스트할 때 이 스킬을 사용하세요.
이 스킬은 A2A 프로토콜을 사용하여 Vertex AI ADK 에이전트를 배포하고 오케스트레이션하며, AgentCard 검색, 작업 제출, 코드 실행 샌드박스 및 메모리 뱅크와 같은 지원 도구를 관리합니다. Python, Java 또는 Go 언어로 순차, 병렬 또는 루프 오케스트레이션 패턴을 갖춘 다중 에이전트 시스템 구축을 가능하게 합니다. Google Cloud에서 ADK 에이전트 배포 또는 에이전트 워크플로우 오케스트레이션을 요청받았을 때 사용하세요.
