ontology-explorer

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Ontology Explorer

本体浏览器

Goal

目标

Enable an agent to understand, navigate, and query the structure of materials science ontologies without loading verbose OWL/XML files directly. Provides fast access to class hierarchies, property definitions, and domain-range relationships through pre-processed JSON summaries.
让Agent能够理解、浏览和查询材料科学本体的结构,无需直接加载冗长的OWL/XML文件。通过预处理的JSON摘要提供对类层级、属性定义以及定义域-值域关系的快速访问。

Requirements

要求

  • Python 3.10+
  • No external dependencies (Python standard library only)
  • Internet access required only for
    owl_parser.py
    and
    ontology_summarizer.py
    when fetching remote OWL files
  • Python 3.10+
  • 无外部依赖(仅使用Python标准库)
  • 仅当
    owl_parser.py
    ontology_summarizer.py
    获取远程OWL文件时需要互联网访问

Inputs to Gather

需要收集的输入

InputDescriptionExample
Ontology nameRegistered ontology to query
cmso
Class nameA specific class to inspect
Material
,
UnitCell
Property nameA specific property to look up
hasMaterial
,
hasSpaceGroupNumber
Search termKeyword to search across labels
crystal
,
lattice
OWL sourcePath or URL to an OWL/XML file (for parsing/summarizing)
https://raw.githubusercontent.com/OCDO/cmso/main/cmso.owl
输入项描述示例
本体名称要查询的已注册本体
cmso
类名称要查看的特定类
Material
,
UnitCell
属性名称要查找的特定属性
hasMaterial
,
hasSpaceGroupNumber
搜索术语用于跨标签搜索的关键词
crystal
,
lattice
OWL源OWL/XML文件的路径或URL(用于解析/总结)
https://raw.githubusercontent.com/OCDO/cmso/main/cmso.owl

Decision Guidance

决策指引

What do you need?
├── Understand overall ontology structure
│   └── class_browser.py --ontology cmso --list-roots
├── Inspect a specific class
│   └── class_browser.py --ontology cmso --class <name>
├── Find properties for a class
│   └── property_lookup.py --ontology cmso --class <name>
├── Look up a specific property
│   └── property_lookup.py --ontology cmso --property <name>
├── Search for a concept
│   ├── class_browser.py --ontology cmso --search <term>
│   └── property_lookup.py --ontology cmso --search <term>
├── Parse a new/updated OWL file
│   └── owl_parser.py --source <path-or-url>
└── Generate/refresh a summary JSON
    └── ontology_summarizer.py --source <url> --output <path>
你需要什么?
├── 理解本体整体结构
│   └── class_browser.py --ontology cmso --list-roots
├── 查看特定类
│   └── class_browser.py --ontology cmso --class <名称>
├── 查找类的属性
│   └── property_lookup.py --ontology cmso --class <名称>
├── 查找特定属性
│   └── property_lookup.py --ontology cmso --property <名称>
├── 搜索概念
│   ├── class_browser.py --ontology cmso --search <术语>
│   └── property_lookup.py --ontology cmso --search <术语>
├── 解析新的/更新的OWL文件
│   └── owl_parser.py --source <路径或URL>
└── 生成/刷新摘要JSON
    └── ontology_summarizer.py --source <URL> --output <路径>

Script Outputs (JSON Fields)

脚本输出(JSON字段)

ScriptKey Outputs
scripts/owl_parser.py
results.metadata
,
results.classes
,
results.object_properties
,
results.data_properties
,
results.class_hierarchy
scripts/ontology_summarizer.py
results.output_file
,
results.statistics
scripts/class_browser.py
results.class_info
,
results.subtree
,
results.properties
,
results.path_to_root
,
results.roots
,
results.search_results
scripts/property_lookup.py
results.property_info
,
results.class_properties
,
results.search_results
脚本关键输出
scripts/owl_parser.py
results.metadata
,
results.classes
,
results.object_properties
,
results.data_properties
,
results.class_hierarchy
scripts/ontology_summarizer.py
results.output_file
,
results.statistics
scripts/class_browser.py
results.class_info
,
results.subtree
,
results.properties
,
results.path_to_root
,
results.roots
,
results.search_results
scripts/property_lookup.py
results.property_info
,
results.class_properties
,
results.search_results

Workflow

工作流程

  1. Identify which ontology the user is working with (default: CMSO).
  2. Use
    class_browser.py --list-roots
    to see the top-level concepts.
  3. Drill into specific classes with
    class_browser.py --class <name>
    to see hierarchy, children, and applicable properties.
  4. Look up individual properties with
    property_lookup.py --property <name>
    .
  5. If the user mentions a concept but not its ontology name, use
    --search
    to find matching classes or properties.
  6. For a new or updated ontology, run
    owl_parser.py
    to parse the raw OWL, then
    ontology_summarizer.py
    to generate a summary JSON.
  1. 确定用户正在使用的本体(默认:CMSO)。
  2. 使用
    class_browser.py --list-roots
    查看顶层概念。
  3. 使用
    class_browser.py --class <名称>
    深入查看特定类,了解其层级、子类和适用属性。
  4. 使用
    property_lookup.py --property <名称>
    查找单个属性。
  5. 如果用户提到某个概念但未指明本体名称,使用
    --search
    查找匹配的类或属性。
  6. 对于新的或更新的本体,先运行
    owl_parser.py
    解析原始OWL文件,再运行
    ontology_summarizer.py
    生成摘要JSON。

Conversational Workflow Example

对话式工作流程示例

User: I have an FCC copper simulation. What CMSO classes should I use to describe it?

Agent: Let me explore the CMSO ontology to find the relevant classes. I'll run
a few targeted searches and property lookups (the answer below is synthesized
from several commands, per the Workflow section).

[Runs: class_browser.py --ontology cmso --search "crystal" --json]
  → Crystalline Material, Crystal Structure (among others)
[Runs: class_browser.py --ontology cmso --search "sample" --json]
  → Computational Sample, Atomic Scale Sample
[Runs: class_browser.py --ontology cmso --search "unit cell" --json]
  → Unit Cell
[Runs: class_browser.py --ontology cmso --search "space group" --json]
  → Space Group
[Runs: class_browser.py --ontology cmso --search "element" --json]
  → Chemical Element
[Runs: property_lookup.py --ontology cmso --property "has material" --json]
  → domain Computational Sample → range Material
[Runs: property_lookup.py --ontology cmso --property "has structure" --json]
  → domain Material → range Structure
[Runs: property_lookup.py --ontology cmso --property "has unit cell" --json]
  → domain Crystal Structure → range Unit Cell

For an FCC copper simulation, the relevant CMSO classes are:

- **Computational Sample** → **Atomic Scale Sample**: your simulation is an atomic-scale sample
- **Material** → **Crystalline Material**: copper is crystalline
- **Crystal Structure**: describes the FCC arrangement
- **Unit Cell**: the repeating FCC unit cell (a=b=c=3.615 Å, α=β=γ=90°)
- **Space Group**: FCC copper is space group 225 (Fm-3m)
- **Chemical Element**: Cu

The key relationship chain (from the property domains/ranges above):
  Computational Sample → has material → Material → has structure → Structure
  → (Crystal Structure) → has unit cell → Unit Cell

Shall I look up the specific properties for any of these classes?
用户:我做了一个FCC铜仿真,应该用哪些CMSO类来描述它?

Agent:让我探索CMSO本体找到相关类。我会运行几个针对性的搜索和属性查询(以下答案是根据工作流程部分的多个命令综合得出的)。

[执行:class_browser.py --ontology cmso --search "crystal" --json]
  → Crystalline Material, Crystal Structure(以及其他类)
[执行:class_browser.py --ontology cmso --search "sample" --json]
  → Computational Sample, Atomic Scale Sample
[执行:class_browser.py --ontology cmso --search "unit cell" --json]
  → Unit Cell
[执行:class_browser.py --ontology cmso --search "space group" --json]
  → Space Group
[执行:class_browser.py --ontology cmso --search "element" --json]
  → Chemical Element
[执行:property_lookup.py --ontology cmso --property "has material" --json]
  → 定义域 Computational Sample → 值域 Material
[执行:property_lookup.py --ontology cmso --property "has structure" --json]
  → 定义域 Material → 值域 Structure
[执行:property_lookup.py --ontology cmso --property "has unit cell" --json]
  → 定义域 Crystal Structure → 值域 Unit Cell

对于FCC铜仿真,相关的CMSO类包括:

- **Computational Sample** → **Atomic Scale Sample**:你的仿真是一个原子尺度样本
- **Material** → **Crystalline Material**:铜是晶体材料
- **Crystal Structure**:描述FCC排列
- **Unit Cell**:重复的FCC晶胞(a=b=c=3.615 Å,α=β=γ=90°)
- **Space Group**:FCC铜的空间群是225(Fm-3m)
- **Chemical Element**:Cu

关键关系链(来自上述属性的定义域/值域):
  Computational Sample → has material → Material → has structure → Structure
  → (Crystal Structure) → has unit cell → Unit Cell

需要我查看这些类的具体属性吗?

CLI Examples

CLI示例

bash
undefined
bash
undefined

List root classes in CMSO

列出CMSO中的根类

python3 skills/ontology/ontology-explorer/scripts/class_browser.py
--ontology cmso --list-roots --json
python3 skills/ontology/ontology-explorer/scripts/class_browser.py
--ontology cmso --list-roots --json

Inspect the Material class hierarchy

查看Material类的层级

python3 skills/ontology/ontology-explorer/scripts/class_browser.py
--ontology cmso --class Material --json
python3 skills/ontology/ontology-explorer/scripts/class_browser.py
--ontology cmso --class Material --json

Search for crystal-related classes

搜索与晶体相关的类

python3 skills/ontology/ontology-explorer/scripts/class_browser.py
--ontology cmso --search crystal --json
python3 skills/ontology/ontology-explorer/scripts/class_browser.py
--ontology cmso --search crystal --json

Find all properties for UnitCell

查找UnitCell的所有属性

python3 skills/ontology/ontology-explorer/scripts/property_lookup.py
--ontology cmso --class UnitCell --json
python3 skills/ontology/ontology-explorer/scripts/property_lookup.py
--ontology cmso --class UnitCell --json

Look up a specific property

查找特定属性

python3 skills/ontology/ontology-explorer/scripts/property_lookup.py
--ontology cmso --property "has space group" --json
python3 skills/ontology/ontology-explorer/scripts/property_lookup.py
--ontology cmso --property "has space group" --json

Parse a remote OWL file

解析远程OWL文件

python3 skills/ontology/ontology-explorer/scripts/owl_parser.py
--source https://raw.githubusercontent.com/OCDO/cmso/main/cmso.owl --json
python3 skills/ontology/ontology-explorer/scripts/owl_parser.py
--source https://raw.githubusercontent.com/OCDO/cmso/main/cmso.owl --json

Generate a summary JSON from an OWL file

从OWL文件生成摘要JSON

python3 skills/ontology/ontology-explorer/scripts/ontology_summarizer.py
--source https://raw.githubusercontent.com/OCDO/cmso/main/cmso.owl
--output summary.json --json
undefined
python3 skills/ontology/ontology-explorer/scripts/ontology_summarizer.py
--source https://raw.githubusercontent.com/OCDO/cmso/main/cmso.owl
--output summary.json --json
undefined

Error Handling

错误处理

ErrorCauseResolution
Ontology 'X' not in registry
Ontology name not registeredCheck
references/ontology_registry.json
for available names
Class 'X' not found
Class label doesn't match any entryUse
--search
to find similar names, or
--list-roots
to see available classes
Property 'X' not found
Property label doesn't matchUse
--search
to find similar properties
Cannot parse OWL source
Invalid XML or unreachable URLCheck file path or URL; ensure the file is valid OWL/XML
Summary file not found
Summary JSON hasn't been generatedRun
ontology_summarizer.py
first
错误原因解决方法
Ontology 'X' not in registry
本体名称未注册查看
references/ontology_registry.json
获取可用名称
Class 'X' not found
类标签与任何条目不匹配使用
--search
查找相似名称,或使用
--list-roots
查看可用类
Property 'X' not found
属性标签不匹配使用
--search
查找相似属性
Cannot parse OWL source
XML无效或URL无法访问检查文件路径或URL;确保文件是有效的OWL/XML格式
Summary file not found
摘要JSON未生成先运行
ontology_summarizer.py

Interpretation Guidance

解读指引

  • Class hierarchy: root classes are the broadest concepts; leaf classes are the most specific. A class inherits all properties from its ancestors.
  • Object properties: show how classes relate to each other (domain → range). A property with domain
    UnitCell
    and range
    Basis
    means a unit cell has a basis.
  • Data properties: show what literal values a class carries. A property with domain
    ChemicalElement
    and range
    xsd:string
    means an element has a string-valued attribute.
  • Union domains: a property can apply to more than one class. When it does, the domain is shown as the classes joined with a pipe, e.g.
    A | B
    . (The bundled CMSO/ASMO summaries currently contain no union-domain properties.)
  • Search relevance: 1.0 = label match, 0.5 = description match only.
  • 类层级:根类是最宽泛的概念;叶类是最具体的。子类继承其所有父类的属性。
  • 对象属性:展示类之间的关联(定义域 → 值域)。如果某个属性的定义域是
    UnitCell
    、值域是
    Basis
    ,表示晶胞包含一个基元。
  • 数据属性:展示类携带的字面量值。如果某个属性的定义域是
    ChemicalElement
    、值域是
    xsd:string
    ,表示元素有一个字符串类型的属性。
  • 联合定义域:一个属性可适用于多个类。此时定义域会显示为用竖线分隔的类,例如
    A | B
    。(当前提供的CMSO/ASMO摘要中暂无联合定义域属性。)
  • 搜索相关性:1.0 = 标签匹配,0.5 = 仅描述匹配。

Verification checklist

验证清单

Before presenting any class, property, or relationship as fact, confirm and record:
  • Resolved the target via
    class_browser.py --class <name>
    (or
    property_lookup.py
    ) and recorded the exact canonical
    label
    returned in
    results.class_info.label
    /
    results.property_info.name
    — do not quote a name the agent typed; quote the label the tool resolved (e.g.
    UnitCell
    Unit Cell
    ).
  • For every relationship chain stated, cited the actual
    domain
    and
    range
    from a
    property_lookup.py --property <name>
    call (recorded
    results.property_info.domain
    and
    .range
    ), rather than inferring the link from class names.
  • When a property's
    domain
    contains a pipe (
    A | B
    ), reported it as a union (applies to each listed class) and confirmed the class in question matches one normalized member — did not silently assume single-class domain.
  • For
    --search
    results, recorded each match's
    relevance
    and stated whether it was a label match (1.0) or description-only match (0.5); did not present a 0.5 description hit as a confirmed term match.
  • Identified the ontology by its registry key (
    cmso
    or
    asmo
    ) and confirmed it exists in
    references/ontology_registry.json
    ; did not query an unregistered ontology or conflate CMSO and ASMO terms.
  • When relying on a generated/refreshed summary, recorded its
    metadata.source_url
    and
    metadata.generated_at
    and the
    statistics
    (
    num_classes
    ,
    num_object_properties
    ,
    num_data_properties
    ) so the result is traceable to a specific OWL source.
  • Treated absent parents, descriptions, or domain/range as missing data (not as "no such relationship"), since the parser extracts only simple
    rdfs:subClassOf
    and declared domains/ranges and does no reasoning.
在将任何类、属性或关系作为事实呈现之前,请确认并记录:
  • 通过
    class_browser.py --class <名称>
    (或
    property_lookup.py
    )找到目标,并记录
    results.class_info.label
    /
    results.property_info.name
    返回的准确标准
    label
    ——不要引用Agent输入的名称;引用工具解析后的标签(例如
    UnitCell
    Unit Cell
    )。
  • 对于所有陈述的关系链,引用
    property_lookup.py --property <名称>
    调用返回的实际
    domain
    range
    (记录
    results.property_info.domain
    .range
    ),而非从类名称推断关联。
  • 当属性的
    domain
    包含竖线(
    A | B
    )时,将其报告为联合定义域(适用于每个列出的类),并确认相关类与其中一个规范化成员匹配——不要默认假设是单类定义域。
  • 对于
    --search
    结果,记录每个匹配项的
    relevance
    ,并说明是标签匹配(1.0)还是仅描述匹配(0.5);不要将0.5的描述匹配项作为已确认的术语匹配呈现。
  • 通过其注册表键(
    cmso
    asmo
    )识别本体,并确认其存在于
    references/ontology_registry.json
    中;不要查询未注册的本体,也不要混淆CMSO和ASMO术语。
  • 当依赖生成/刷新的摘要时,记录其
    metadata.source_url
    metadata.generated_at
    以及
    statistics
    num_classes
    ,
    num_object_properties
    ,
    num_data_properties
    ),以便结果可追溯到特定的OWL源。
  • 将缺失的父类、描述或定义域/值域视为缺失数据(而非“不存在此类关系”),因为解析器仅提取简单的
    rdfs:subClassOf
    和已声明的定义域/值域,不进行推理。

Common pitfalls & rationalizations

常见误区与合理化纠正

Tempting shortcutWhy it's wrong / what to do
"The class name
UnitCell
returned nothing, so the term doesn't exist."
Labels carry spaces (
Unit Cell
). The tools resolve exact → case-insensitive → space-normalized; if a direct guess fails, run
--search
and use the canonical
label
the tool returns, not the typed string.
"These two classes are obviously related, so I'll state the link."Relationships exist only where an object property declares them. Verify with
property_lookup.py --property <name>
and quote the recorded
domain → range
; never infer a triple from class names alone.
"The script ran and printed results, so the answer is complete."Run success ≠ completeness. A missing
parent
,
description
, or
domain/range
means the OWL lacked that annotation — the parser does no inference and ignores complex OWL restrictions. State what is absent.
"
--search crystal
matched it, so it's the right term."
A match may be relevance 0.5 (description-only), not a label match. Check the
relevance
field and prefer 1.0 label matches; report 0.5 hits as "mentioned in the description," not as the canonical term.
"A property has one domain class."Domains can be unions (`A
"Any OCDO ontology will work / CMSO and ASMO are interchangeable."Only
cmso
and
asmo
are registered; CDCO/PODO/PLDO/LDO are planned, not available. Pick the correct registry key and don't mix terms across ontologies.
"I'll point the parser at this
http://
OWL URL."
owl_parser.py
/
ontology_summarizer.py
reject non-
https://
URLs by design. Use an
https://
source or a local file path.
诱人的捷径错误原因/正确做法
“类名
UnitCell
没有返回结果,所以该术语不存在。”
标签包含空格(
Unit Cell
)。工具会按精确匹配→不区分大小写→空格规范化的顺序解析;如果直接猜测失败,请运行
--search
并使用工具返回的标准
label
,而非输入的字符串。
“这两个类显然相关,所以我可以陈述它们的关联。”仅当存在对象属性声明时,关系才存在。使用
property_lookup.py --property <名称>
验证并引用记录的
domain → range
;永远不要仅从类名称推断三元组。
“脚本运行并输出了结果,所以答案是完整的。”运行成功≠内容完整。缺失的
parent
description
domain/range
表示OWL文件缺少该注释——解析器不进行推理,且忽略复杂的OWL约束。请说明缺失的内容。
--search crystal
匹配到了它,所以这是正确的术语。”
匹配项的相关性可能为0.5(仅描述匹配),而非标签匹配。检查
relevance
字段,优先选择1.0的标签匹配项;将0.5的匹配项报告为“在描述中提及”,而非标准术语。
“属性只有一个定义域类。”定义域可以是联合的(`A
“任何OCDO本体都可以使用 / CMSO和ASMO可以互换。”
cmso
asmo
已注册;CDCO/PODO/PLDO/LDO处于规划中,暂不可用。请选择正确的注册表键,不要跨本体混用术语。
“我将解析器指向这个
http://
的OWL URL。”
owl_parser.py
/
ontology_summarizer.py
默认拒绝非
https://
的URL。请使用
https://
源或本地文件路径。

Security

安全

Input Validation

输入验证

  • --ontology
    is validated against registered ontology names in
    ontology_registry.json
    (fixed allowlist)
  • --class
    and
    --property
    names are validated against a safe-character pattern to prevent injection
  • --search
    terms are length-limited and used only for substring matching against pre-processed labels (never interpolated into queries or code)
  • --source
    for
    owl_parser.py
    accepts file paths or URLs; URLs are validated against
    https://
    scheme only
  • --ontology
    会根据
    ontology_registry.json
    中的已注册本体名称进行验证(固定允许列表)
  • --class
    --property
    名称会根据安全字符模式验证,防止注入攻击
  • --search
    术语有长度限制,仅用于对预处理标签进行子串匹配(绝不会插入到查询或代码中)
  • owl_parser.py
    --source
    接受文件路径或URL;URL仅允许
    https://
    协议

File Access

文件访问

  • class_browser.py
    and
    property_lookup.py
    read pre-processed JSON summary files from the
    references/
    directory (read-only)
  • owl_parser.py
    reads a single OWL/XML file from a local path or HTTPS URL; remote fetches have a 30-second timeout
  • ontology_summarizer.py
    writes a single JSON summary file to the path specified by
    --output
  • No scripts modify or delete existing files
  • class_browser.py
    property_lookup.py
    references/
    目录读取预处理的JSON摘要文件(只读)
  • owl_parser.py
    从本地路径或HTTPS URL读取单个OWL/XML文件;远程获取有30秒超时限制
  • ontology_summarizer.py
    将单个JSON摘要文件写入
    --output
    指定的路径
  • 所有脚本都不会修改或删除现有文件

Tool Restrictions

工具限制

  • Read: Used to inspect script source, reference files, and ontology summaries
  • Bash: Used to execute the four Python scripts (
    owl_parser.py
    ,
    ontology_summarizer.py
    ,
    class_browser.py
    ,
    property_lookup.py
    ) with explicit argument lists; URL fetching is contained within the Python scripts with timeout limits
  • 读取:用于检查脚本源文件、参考文件和本体摘要
  • Bash:用于执行四个Python脚本(
    owl_parser.py
    ,
    ontology_summarizer.py
    ,
    class_browser.py
    ,
    property_lookup.py
    ),参数列表明确;URL获取被限制在Python脚本内,并设有超时限制

Safety Measures

安全措施

  • No
    eval()
    ,
    exec()
    , or dynamic code generation
  • All subprocess calls use explicit argument lists (no
    shell=True
    )
  • OWL/XML parsing uses Python's
    xml.etree.ElementTree
    which does not resolve external entities by default, mitigating XXE attacks
  • Remote URL fetching is limited to HTTPS with a 30-second timeout to prevent abuse
  • Search results are capped in count to prevent output flooding
  • 不使用
    eval()
    exec()
    或动态代码生成
  • 所有子进程调用使用明确的参数列表(不使用
    shell=True
  • OWL/XML解析使用Python的
    xml.etree.ElementTree
    ,默认不解析外部实体,可缓解XXE攻击
  • 远程URL获取仅允许HTTPS协议,并设置30秒超时限制,防止滥用
  • 搜索结果有数量上限,防止输出泛滥

Limitations

局限性

  • Only supports OWL/XML format (not Turtle, JSON-LD, or N-Triples)
  • Does not support OWL reasoning or inference (e.g., does not compute transitive closures)
  • Class hierarchy extraction handles simple
    rdfs:subClassOf
    only (not complex OWL restrictions)
  • Descriptions may be missing for classes that lack
    rdfs:comment
    ,
    skos:definition
    , or IAO annotations
  • URL fetching requires internet access and may time out (30-second limit)
  • 仅支持OWL/XML格式(不支持Turtle、JSON-LD或N-Triples)
  • 不支持OWL推理或推断(例如,不计算传递闭包)
  • 类层级提取仅处理简单的
    rdfs:subClassOf
    (不处理复杂的OWL约束)
  • 对于缺少
    rdfs:comment
    skos:definition
    或IAO注释的类,其描述可能缺失
  • URL获取需要互联网访问,且可能超时(30秒限制)

References

参考资料

  • OWL/RDF Primer — brief introduction to OWL concepts
  • CMSO Guide — narrative guide to the CMSO ontology
  • Ontology Registry — registered ontologies and their metadata
  • CMSO Summary — pre-processed CMSO structure
  • CMSO Documentation — official CMSO docs
  • CMSO Repository — source OWL file and development
  • OWL/RDF入门 — OWL概念的简要介绍
  • CMSO指南 — CMSO本体的叙述性指南
  • 本体注册表 — 已注册本体及其元数据
  • CMSO摘要 — 预处理后的CMSO结构
  • CMSO官方文档 — CMSO官方文档
  • CMSO代码库 — 源OWL文件及开发资源

Version History

版本历史

DateVersionChanges
2026-06-241.2.2Added a Verification checklist (evidence-based, tied to canonical-label resolution, recorded domain/range, union domains, search relevance, registry keys, and summary provenance) and a Common pitfalls & rationalizations table.
2026-06-231.2.0Fixed property_lookup
--class
to resolve canonical labels (spaceless names like
UnitCell
now match), made class/property domain matching consistent across tools, enforced documented security controls (safe-character pattern, length caps, search-result caps, HTTPS-only URLs), corrected union-domain doc example and eval assertions, scoped description to CMSO/ASMO.
2026-02-251.0Initial release with CMSO support
日期版本变更
2026-06-241.2.2添加了验证清单(基于证据,关联标准标签解析、记录的定义域/值域、联合定义域、搜索相关性、注册表键和摘要来源)以及常见误区与合理化纠正表格。
2026-06-231.2.0修复了property_lookup的
--class
参数以解析标准标签(无空格名称如
UnitCell
现在可以匹配),使类/属性定义域匹配在所有工具中保持一致,实施了文档中记录的安全控制(安全字符模式、长度限制、搜索结果上限、仅HTTPS URL),修正了联合定义域的文档示例和评估断言,将描述范围限定为CMSO/ASMO。
2026-02-251.0初始版本,支持CMSO