用途:校验材料样品标注是否符合本体约束,包括类名与属性名是否存在、属性 domain/range 关系是否一致、类标注的必填字段是否齐全。
主要能力:提供三个脚本。schema_checker.py 校验标注中的类与属性是否合法,输出 results.valid、results.errors(未知类/属性会附带 suggestions 近似匹配)、results.warnings(如 domain_mismatch)、results.class_valid、results.properties_valid。completeness_checker.py 检查某类的完整性,输出 completeness_score、required_missing、recommended_missing、optional_missing、unrecognized。relationship_checker.py 校验 subject-property-object 三元组的 domain/range 一致性,输出 results.valid、results.results、results.errors。
使用方式:需 Python 3.10+,无外部依赖,依赖 ontology-explorer 的 cmso_summary.json 与 ontology_registry.json。示例:python3 skills/ontology/ontology-validator/scripts/schema_checker.py --ontology cmso --annotation '{"class":"Unit Cell","properties":{"has Bravais lattice":"cF"}}' --json;completeness_checker.py --ontology cmso --class "Crystal Structure" --provided "has unit cell,has space group" --json;relationship_checker.py --ontology cmso --relationships '[{"subject_class":"Computational Sample","property":"has material","object_class":"Material"}]' --json。
适用场景:在 ontology-mapper 完成标注映射后校验正确性,检查特定类的必填/推荐属性缺失,构建实例关系时确保 domain/range 一致。
限制:约束文件为人工整理而非由 OWL 公理推导;不校验数据类型、基数与取值合理性;子类检查仅做简单父级遍历,非完整 OWL 推理;近似匹配基于 difflib 模糊匹配,可能出错或为空,需人工确认;completeness_score 对必填、推荐、可选属性等权计分,分数中等仍可能缺必填项,应先看 required_missing。脚本只读 references/ 下 JSON,不写文件、不联网,输入有大小与数量上限。