MCP HubMCP Hub
Volver a habilidades

ontology-mapper

HeshamFS
Actualizado 2 days ago
6 vistas
40
3
40
Ver en GitHub
Otroaidata

Acerca de

Esta habilidad mapea terminología de ciencia de materiales y descripciones de estructuras cristalinas a clases estandarizadas de ontologías, soportando múltiples ontologías como CMSO y ASMO. Traduce términos en lenguaje natural (por ejemplo, "hierro CCC") a entradas formales de ontología con puntuaciones de confianza y genera metadatos legibles por máquinas. Los desarrolladores deben usarla al anotar entradas de simulación para cumplimiento FAIR o para conectar vocabulario informal de laboratorio con términos formales de ontologías.

Instalación rápida

Claude Code

Recomendado
Principal
npx skills add HeshamFS/materials-simulation-skills -a claude-code
Comando PluginAlternativo
/plugin add https://github.com/HeshamFS/materials-simulation-skills
Git CloneAlternativo
git clone https://github.com/HeshamFS/materials-simulation-skills.git ~/.claude/skills/ontology-mapper

Copia y pega este comando en Claude Code para instalar esta habilidad

Documentación

Ontology Mapper

Goal

Translate real-world materials science descriptions into standardized ontology annotations. Given terms like "FCC copper" or structured data like {"material": "iron", "structure": "BCC", "lattice_a": 2.87}, produce the corresponding ontology classes and properties for any registered ontology.

Requirements

  • Python 3.8+
  • No external dependencies (Python standard library only)
  • Requires ontology-explorer's summary JSON and ontology_registry.json
  • Per-ontology mapping config (<name>_mappings.json) for ontology-specific synonyms and labels

Inputs to Gather

InputDescriptionExample
OntologyOntology name from registrycmso, asmo
Term(s)Natural-language materials concept(s)"unit cell", "FCC,copper,lattice"
Crystal systemOne of the 7 crystal systemscubic, hexagonal
Bravais latticeLattice type (symbol or common name)FCC, cF, BCC
Space groupSpace group number (1-230)225
Lattice parametersa, b, c in angstroms; alpha, beta, gamma in degreesa=3.615
Sample descriptionJSON dict with material properties{"material":"copper","structure":"FCC"}

Decision Guidance

What do you need to map?
├── A concept or term to find its ontology class
│   └── concept_mapper.py --ontology <name> --term "<term>"
├── Crystal structure parameters to ontology terms
│   └── crystal_mapper.py --ontology <name> --bravais <type> --space-group <N> --a <val>
├── A full sample description to ontology annotations
│   └── sample_annotator.py --ontology <name> --sample '<json>'
└── Multiple terms at once
    └── concept_mapper.py --ontology <name> --terms "term1,term2,term3"

Script Outputs (JSON Fields)

ScriptKey Outputs
scripts/concept_mapper.pyresults.matches, results.unmatched, results.suggestions
scripts/crystal_mapper.pyresults.ontology_classes, results.ontology_properties, results.effective_system, results.bravais_lattice, results.validation_warnings
scripts/sample_annotator.pyresults.annotations, results.sample_type, results.material_type, results.unmapped_fields, results.suggested_properties

Workflow

  1. If the user provides natural-language terms, use concept_mapper.py to find matching ontology classes.
  2. If the user describes crystal structure parameters, use crystal_mapper.py to map them and validate constraints.
  3. For a complete sample description, use sample_annotator.py to produce full ontology annotations.
  4. Review any validation warnings (e.g., lattice parameter mismatches for the crystal system).
  5. Check unmapped_fields and suggested_properties for completeness.

Conversational Workflow Example

User: I'm setting up an MD simulation of BCC iron with lattice parameter 2.87 angstroms.
      What CMSO terms should I use?

Agent: Let me map your iron sample to CMSO ontology terms.

[Runs: sample_annotator.py --ontology cmso --sample '{"material":"iron","structure":"BCC","lattice_a":2.87,"space_group":229}' --json]

Your BCC iron simulation maps to these CMSO annotations:

- **Sample**: Atomic Scale Sample (subclass of Computational Sample)
- **Material**: Crystalline Material
- **Unit Cell**: Bravais lattice = "cI" (body-centered cubic)
- **Space Group**: number = 229 (Im-3m)
- **Lattice**: a = 2.87 Å
- **Element**: Fe

Suggested additions:
- Number of atoms in the simulation cell
- Simulation cell vectors and angles

CLI Examples

# Map a single concept
python3 skills/ontology/ontology-mapper/scripts/concept_mapper.py \
  --ontology cmso --term "space group" --json

# Map multiple terms
python3 skills/ontology/ontology-mapper/scripts/concept_mapper.py \
  --ontology cmso --terms "FCC,copper,lattice constant" --json

# Map crystal parameters (with ontology-specific labels)
python3 skills/ontology/ontology-mapper/scripts/crystal_mapper.py \
  --ontology cmso --bravais FCC --space-group 225 --a 3.615 --json

# Map crystal parameters (generic labels, no ontology specified)
python3 skills/ontology/ontology-mapper/scripts/crystal_mapper.py \
  --bravais FCC --space-group 225 --a 3.615 --json

# Annotate a full sample
python3 skills/ontology/ontology-mapper/scripts/sample_annotator.py \
  --ontology cmso \
  --sample '{"material":"copper","structure":"FCC","space_group":225,"lattice_a":3.615}' \
  --json

Adding a New Ontology

To support a new ontology (e.g., ASMO), create a <name>_mappings.json in references/:

{
  "ontology": "asmo",
  "synonyms": { "simulation method": "Simulation Method", ... },
  "property_synonyms": { "timestep": "has timestep", ... },
  "material_type_rules": { "keyword_rules": [...], "default": "Material" },
  "sample_schema": { "sample_class": "Simulation", ... },
  "crystal_output": { "base_classes": [...], "property_map": {...} },
  "annotation_routing": { "unit_cell_indicators": [...], ... }
}

Then add "mappings_file": "asmo_mappings.json" to the ontology's entry in ontology_registry.json. No code changes needed.

Error Handling

ErrorCauseResolution
space_group must be between 1 and 230Invalid space group numberUse a valid space group number
a must be positiveNon-positive lattice parameterProvide positive values in angstroms
Sample must be a non-empty dictEmpty or missing sample dataProvide a valid JSON sample dict
Validation warningsLattice parameters inconsistent with crystal systemCheck that a=b=c for cubic, etc.

Interpretation Guidance

  • Confidence scores: 1.0 = exact match, 0.9 = synonym match, 0.7 = substring match, 0.5 = description match
  • Validation warnings: indicate potential mistakes (e.g., specifying a!=b for cubic). These are warnings, not errors — the mapping still proceeds.
  • Unmapped fields: input keys that the annotator doesn't recognize. These may need manual mapping.
  • Suggested properties: additional ontology properties that would make the annotation more complete.

Security

Input Validation

  • --ontology is validated against registered ontology names in ontology_registry.json (fixed allowlist)
  • --term and --terms are length-limited and used only for substring matching against pre-processed synonym tables (never interpolated into code)
  • --bravais is validated against a fixed set of recognized lattice type symbols
  • --space-group is validated as an integer between 1 and 230
  • Lattice parameters (--a, --b, --c, --alpha, --beta, --gamma) are validated as finite positive numbers
  • --sample JSON is parsed with json.loads() and validated as a non-empty dict; keys and values are type-checked

File Access

  • Scripts read pre-processed JSON files from the references/ directory: ontology_registry.json, *_mappings.json, *_summary.json, crystal_systems.json, element_data.json (all read-only)
  • No scripts write to the filesystem; all output goes to stdout
  • No network access is required

Tool Restrictions

  • Read: Used to inspect script source, reference files, and ontology data
  • Grep: Used to search reference files for mapping patterns or ontology terms
  • Glob: Used to locate reference files and ontology data
  • Notably, this skill has no Bash or Write access, giving it the lowest attack surface of all skills

Safety Measures

  • No eval(), exec(), or dynamic code generation
  • No subprocess calls of any kind; all logic runs within Python scripts invoked by the agent
  • No file writes; the skill is purely read-only and analytical
  • Minimal tool surface (Read, Grep, Glob only) means the agent cannot execute arbitrary commands or modify the filesystem

Limitations

  • Concept mapping uses string matching and a per-ontology synonym table; it does not understand arbitrary natural language
  • Crystal system validation checks basic constraints only (not all crystallographic rules)
  • The element resolver recognizes common element names and symbols but may miss unusual spellings
  • Bravais lattice aliases cover common usage (FCC, BCC, HCP) but not all crystallographic notation variants

References

Version History

DateVersionChanges
2026-02-251.1Refactored for multi-ontology support: externalized CMSO-specific knowledge to config
2026-02-251.0Initial release with CMSO mapping support

Repositorio GitHub

HeshamFS/materials-simulation-skills
Ruta: skills/ontology/ontology-mapper
0
agent-skillsagentscli-toolscomputational-sciencellmmaterials-science

Habilidades relacionadas

llamaguard

Otro

LlamaGuard es el modelo de Meta de 7-8B parámetros para moderar las entradas y salidas de LLM en seis categorías de seguridad como violencia y discurso de odio. Ofrece una precisión del 94-95% y puede implementarse usando vLLM, Hugging Face o Amazon SageMaker. Utiliza esta skill para integrar fácilmente filtrado de contenido y barreras de seguridad en tus aplicaciones de IA.

Ver habilidad

cost-optimization

Otro

Esta Skill de Claude ayuda a los desarrolladores a optimizar los costes en la nube mediante el ajuste de tamaño de recursos, estrategias de etiquetado y análisis de gastos. Proporciona un marco para reducir los gastos en la nube e implementar una gobernanza de costes en AWS, Azure y GCP. Úsala cuando necesites analizar los costes de infraestructura, ajustar el tamaño de los recursos o cumplir con restricciones presupuestarias.

Ver habilidad

quantizing-models-bitsandbytes

Otro

Esta habilidad cuantiza LLMs a precisión de 8 o 4 bits utilizando bitsandbytes, logrando una reducción de memoria del 50-75% con pérdida mínima de precisión. Es ideal para ejecutar modelos más grandes en memoria GPU limitada o para acelerar la inferencia, admitiendo formatos como INT8, NF4 y FP4. La habilidad se integra con HuggingFace Transformers y permite entrenamiento QLoRA y optimizadores de 8 bits.

Ver habilidad

dispatching-parallel-agents

Otro

Esta Skill de Claude despliega múltiples agentes para investigar y solucionar 3 o más problemas independientes de forma concurrente. Está diseñada para escenarios que involucran fallos no relacionados que pueden resolverse sin estado compartido o dependencias. Su capacidad principal es la resolución paralela de problemas, asignando un agente por cada dominio problemático independiente para maximizar la eficiencia.

Ver habilidad