知识图谱本体模型管理(manage-kg-schema)
1. Scenario Description
数据架构师通过阿里云 CLI 管理知识图谱的本体模型(Schema)。当前 KG Schema OpenAPI 仅提供整体 Schema 级别的操作(导出 / 导入 / 发布),不提供实体类型、关系类型的细粒度单独 CRUD 接口。因此新增 / 修改 / 删除实体类型、关系类型、属性,均通过「导出 YAML → 本地编辑 → 整体导入 → 发布」的流程完成。
业务流程:
导出当前 Schema(基线)→ 本地编辑 YAML(增删改类型/属性)→ 整体导入 Schema → 发布 Schema → 查询发布结果
资源拓扑:
知识图谱空间(Workspace)
├── 实体类型(EntityType)
│ ├── 属性定义(Properties)
│ └── 继承关系(ParentTypeId)
├── 关系类型(RelationType)
│ ├── 起始/目标实体类型
│ ├── 基数(Cardinality)
│ └── 关系属性
├── Schema 版本
│ ├── 草稿态(Draft)
│ └── 已发布版本(Published)
└── 发布任务(PublishTask)
├── 四项校验(连接/完整性/兼容性/偏离)
└── 数据调整策略(BackfillDefault)
前置条件:
- 知识图谱空间(Workspace)已存在,当前用户有空间管理权限
- OpTenantId(租户 ID)已知
CLI 原生支持:KG OpenAPI 已正式发布(CLI
--help实测显示 Online version: v6.1.1,以aliyun dataphin-public export-kg-schema --help实际输出为准),并注册到aliyun-cli-dataphin-public插件(>= 0.7.1)。本 Skill 全部使用 CLI 原生命令export-kg-schema/import-kg-schema/publish-kg-schema/get-kg-schema-publish-result。独立部署低于该版本(< v6.1.1)的旧环境未发布 KG OpenAPI,可退回 Python Tea SDK 泛化调用(辅助脚本scripts/export-schema.py/scripts/import-schema.py)。重要(能力边界):当前 KG Schema OpenAPI 仅支持整体 Schema 操作——导出、导入、发布及查询发布结果。不存在
CreateKgEntityType/UpdateKgEntityType/DeleteKgEntityType/CreateKgRelationType等细粒度单类型 CRUD 接口。所有类型/属性的增删改,请编辑导出的 YAML 后整体重新导入。
🚨 建模前先确认图引擎:导出/导入/发布这 4 个接口本身引擎无关,但 YAML 里的
dataType与业务识别规则随引擎变化(Lindorm 图引擎自 V6.2.3 支持):
建模项 Neo4j Lindorm 图引擎 日期/时间 DATETIMESTAMPDURATION✅ ❌ 不支持 → 用 STRING存 ISO 8601 字串多值 LIST✅ /SET❌LIST❌ /SET✅(V6.2.3 新增)嵌套 EMBEDDED/MAP<K,V>✅ ❌ 不支持 → 用 STRING存 JSON 文本UNKNOWN(AI 抽取待确认)✅ ❌ 不支持 GEOPOINT✅ Point ✅(底层落 String) 业务识别规则 含编辑距离、时间类规则 ❌ 无编辑距离、无时间类规则(其余精确/忽略大小写/包含/等于/数值/语义相似度均支持) 完整类型映射表与替代写法见 图引擎能力矩阵。向 Lindorm 空间导入含不支持类型的 YAML 会在导入/发布阶段失败或被静默降级,请在编辑阶段就按引擎裁剪。
2. Installation
Pre-check: Aliyun CLI >= 3.4.8 required
运行
aliyun version确认版本 >= 3.4.8。未安装或版本过低,请从 https://aliyuncli.alicdn.com 安装/升级(各操作系统一键脚本见 ./references/cli-installation-guide.md)。
Pre-check: Aliyun CLI plugin update required
[MUST] 运行
aliyun configure set --auto-plugin-install true开启插件自动安装。 [MUST] 运行aliyun plugin update确保已装插件保持最新(KG 命令要求插件 >= 0.7.1)。
# 安装 aliyun CLI(>= 3.4.8):https://github.com/aliyun/aliyun-cli
# 各操作系统一键安装脚本见 ./references/cli-installation-guide.md
# 开启插件自动安装并更新已装插件
aliyun configure set --auto-plugin-install true
aliyun plugin update
# 安装 dataphin-public 插件(>= 0.7.1,KG 命令自 0.7.x 起注册)
aliyun plugin install --names aliyun-cli-dataphin-public
# 安装 Python 依赖(YAML 预校验脚本需要 pyyaml;SDK 兜底脚本另需 tea-openapi)
pip3 install pyyaml
# 验证:KG Schema 命令已注册
aliyun dataphin-public export-kg-schema --help
详见 CLI 安装指南。
3. Environment Variables
凭证与环境变量由父 skill
alibabacloud-dataphin-skills统一声明并预检(父 §3 + §4 Authentication + §8 Step 0,先于路由到本 skill 执行);本 skill 不重复声明。
4. Authentication
Pre-check: Credentials Required
# 检查凭证配置
aliyun configure list
# 检查 CLI 版本
aliyun version
# 要求 >= 3.4.8
# 检查 KG 命令已注册(插件 >= 0.7.1)
aliyun dataphin-public export-kg-schema --help
凭证不可打印:任何时候不得将 AccessKey ID/Secret 输出到终端或日志。
5. RAM Policy
本 Skill 涉及的最小 RAM 权限:
{
"Effect": "Allow",
"Action": [
"dataphin:ExportKgSchema",
"dataphin:ImportKgSchema",
"dataphin:PublishKgSchema",
"dataphin:GetKgSchemaPublishResult"
],
"Resource": "*"
}
Permission Failure Handling
若遇到权限错误(HTTP 403 或 ErrorCode 含 Forbidden/NoPermission/Dataphin.KG.NoPermission),请:
- 确认 RAM 用户已附加上述策略
- 确认策略中 Resource 范围覆盖目标租户
- 确认当前用户具有知识图谱空间的管理权限
- 联系租户管理员授权
详见 RAM 策略参考。
6. Parameter Confirmation
IMPORTANT: Parameter Confirmation 执行前必须确认以下业务参数:
| 参数 | CLI 标志 | 含义 | 获取方式 | 必填 |
|---|---|---|---|---|
| 图引擎 | (不是 CLI 参数) | 空间绑定的引擎:Neo4j / Lindorm |
向用户确认(决定 YAML 里可用的 dataType) |
是(编辑 YAML 前置) |
| OpTenantId | --op-tenant-id |
租户 ID | profile 或询问用户 | 是 |
| WorkspaceId | --workspace-id |
知识图谱空间 ID | 必须向用户索取(见下方说明) | 是 |
| Schema YAML 内容 | --import-command 的 Content |
编辑后的完整本体模型 | 导出基线后本地编辑 | 导入操作 |
| MergeStrategy | --import-command 的 MergeStrategy |
导入合并策略 Replace/Merge |
用户指定 | 导入操作 |
| Description | --publish-command 的 Description |
发布备注 | 用户指定 | 发布操作 |
WorkspaceId 无自助发现途径:KG OpenAPI 不提供列出 KG 空间的接口(全部 18 个 KG 命令中无任何 list-workspace 类命令),WorkspaceId 必须向用户索取(32 位小写 hex 字符串,可在控制台知识图谱空间列表页查到)。不要尝试猜命令或翻 help 探索。
详细 API 入参/出参见 KG Schema API 参数参考。
7. Observability
本子 Skill 的 session-id 继承自父 Skill alibabacloud-dataphin-skills,不重新生成。
所有 CLI 命令携带:
--user-agent AlibabaCloud-Agent-Skills/manage-kg-schema/{SESSION_ID}
其中 {SESSION_ID} 为父 Skill 生成的 32 字符小写十六进制字符串。
8. Core Workflow
能力边界(务必先读):KG Schema OpenAPI 仅支持整体 Schema 操作——
export-kg-schema(导出)、import-kg-schema(导入)、publish-kg-schema(发布)、get-kg-schema-publish-result(查询发布结果)。不存在CreateKgEntityType/UpdateKgEntityType/DeleteKgEntityType/CreateKgRelationType等细粒度单类型 CRUD 接口。新增 / 修改 / 删除实体类型、关系类型、属性,统一通过「导出 YAML → 本地编辑 → 整体导入 → 发布」完成。
步骤 1:导出当前 Schema(基线)
# 导出 YAML 并直接提取 Schema 内容存为基线文件
aliyun dataphin-public export-kg-schema \
--op-tenant-id "{OpTenantId}" \
--workspace-id "{WorkspaceId}" \
--output-format yaml \
--profile {profile} --endpoint {endpoint} \
--user-agent "AlibabaCloud-Agent-Skills/manage-kg-schema/{SESSION_ID}" \
--cli-query 'SchemaInfo.Content'
可选参数:
--output-format:yaml(默认)/json--version-id:空或-1返回草稿态;0返回最新已发布版本;正整数返回指定版本
响应处理:
- Schema 内容位于
SchemaInfo.Content(字符串),输出格式位于SchemaInfo.OutputFormat - 用
--cli-query 'SchemaInfo.Content'可直接提取内容(输出为 JSON 引号包裹的字符串,需反序列化:python3 -c "import json,sys; print(json.load(sys.stdin))" < raw.txt > schema.yaml) - 响应不含
VersionId(版本号通过get-kg-schema-publish-result获取)
将导出的 YAML 保存为本地文件(如 schema.yaml)作为编辑基线。若空间为空、首次建模,可跳过导出直接从零编写 YAML。
步骤 2:本地编辑并预校验 YAML
在导出的 YAML 上直接增删改实体类型 / 关系类型 / 属性——这是唯一的类型级变更方式(无单类型 CRUD API):
- 新增类型/属性:在
entityTypes/relationTypes/properties下追加条目 - 修改类型/属性:直接改对应字段值
- 删除类型/属性:从 YAML 移除对应条目,随后以
Replace策略导入(见步骤 3)
编辑完成后运行 scripts/validate-schema.py 预校验,提前发现常见错误:
# 仅校验
python3 alibabacloud-dataphin-skills/references/knowledge-graph/manage-kg-schema/scripts/validate-schema.py <yaml_file>
# 自动修复可处理的问题(dataType 大小写、补充缺失 boolean 字段等):
python3 alibabacloud-dataphin-skills/references/knowledge-graph/manage-kg-schema/scripts/validate-schema.py <yaml_file> --fix
校验规则覆盖:
- 实体/属性/关系编码格式
- 每个实体至少一个
isPrimaryKey: true(useSysPk=false 时) - 每个实体至少一个
isUsedShow: true - dataType 全大写
- cardinalType 合法值
- 属性/关系引用的实体存在性
- 唯一性:实体/关系的编码与名称各自空间内唯一,且编码与名称均跨类型(实体↔关系)唯一;属性编码/名称在同一类型内唯一
YAML Schema 格式要点:
| 层级 | 关键字段 | 说明 |
|---|---|---|
| 顶层 | name, description, workspaceId, entityTypes, relationTypes |
空间标识用 workspaceId |
| 实体类型 | code, name, description, useSysPk, icon, properties |
code 大写字母开头、仅含字母/数字(不含下划线)、2-64 字符;useSysPk 控制系统/业务主键 |
| 关系类型 | code, name, sourceEntityCode, targetEntityCode, hasDirection, cardinalType, properties |
code 大写开头、仅含大写字母/数字/下划线(不含小写,SCREAMING_SNAKE),如 POC_EQUITY_INVESTMENT;cardinalType 取值 MULTI_TO_MULTI / ONE_TO_MANY 等 |
| 属性 | code, name, dataType, isPrimaryKey, isRequired, isIndexed, isUsedShow, isSemanticEnabled, defaultValue |
dataType 全大写(STRING/INTEGER/FLOAT/DATE 等);每个实体至少一个 isPrimaryKey: true 和一个 isUsedShow: true;isSemanticEnabled: true 开启该属性的语义检索(见下方专节) |
isUsedShow标记用于展示的属性(每个实体类型必须至少有一个)。useSysPk: true时使用系统主键,所有属性isPrimaryKey为 false。
按图引擎裁剪 dataType(Lindorm 空间必看)
| 意图 | Neo4j 写法 | Lindorm 写法 |
|---|---|---|
| 注册日期 / 创建时间 | dataType: DATE / TIMESTAMP |
dataType: STRING(值存 2024-01-28 / 2024-01-28T14:30:00Z) |
| 标签、别名等多值 | dataType: LIST |
dataType: SET |
| 地址、扩展字段等嵌套对象 | dataType: EMBEDDED / MAP |
dataType: STRING(存 JSON 文本) |
| 时长 | dataType: DURATION |
dataType: INTEGER(存秒数)或 STRING(存 ISO Duration) |
| AI 抽取待定类型 | dataType: UNKNOWN |
dataType: STRING |
两引擎均不支持:DECIMAL / BIGINTEGER / DATETIMERANGE(高精度数值用 STRING 存,时间区间拆两个字段)。完整矩阵见 图引擎能力矩阵。
业务识别规则(实体消歧)也随引擎:Lindorm 不支持编辑距离与时间类型规则(控制台选项隐藏)。需要“名称近似去重”时,在 Lindorm 空间改用语义相似度 / 忽略大小写 / 包含策略(识别规则本身在控制台配置,OpenAPI 不提供规则管理接口)。
开启语义检索(isSemanticEnabled,引擎无关)
语义检索(SearchKgBySemantic 的语义路径)的开启方式是属性层开关:在实体/关系属性上置 isSemanticEnabled: true,导入并发布后平台自动创建向量索引(Neo4j 上自动执行 CREATE VECTOR INDEX ... ON (n.__system_kg_embedding__<prop>__))。不需要也不能用 Cypher 手建向量索引(exec-kg-cypher 只读,CREATE 会被拒)。
Neo4j 版本门槛 5.11+(trace 72c13131 实测):
CREATE VECTOR INDEX是 Neo4j 5.11+ 语法,低版本实例发布带语义属性的 Schema 必失败,发布结果日志里报Invalid input 'VECTOR': expected "(", "allShortestPaths" or "shortestPath"。这是引擎版本限制不是操作错误,重试无效;正解是升级 Neo4j 到 5.11+,或由管理员确认实例支持向量索引。详见 图引擎能力矩阵 §语义检索开启方式与向量索引。
YAML 示例片段:
name: 我的知识图谱
description: 示例 Schema
workspaceId: "{WorkspaceId}"
entityTypes:
- code: COMPANY
name: 公司
useSysPk: false
description: 企业实体
properties:
- code: name
name: 公司名称
dataType: STRING
isPrimaryKey: true
isRequired: true
isIndexed: true
isUsedShow: true
defaultValue: ''
- code: industry
name: 行业
dataType: STRING
isPrimaryKey: false
isRequired: false
isIndexed: false
isUsedShow: false
defaultValue: ''
relationTypes: []
步骤 3:导入 Schema(YAML)
前置检查:空间状态必须可编辑
导入前先跑 get-kg-schema-publish-result(见步骤 5,不带 --version-id 返回最近一次发布记录)检查空间状态:若 Data.Status 为 RollbackFailed(发布失败且回滚失败),空间处于不可编辑状态,import-kg-schema / publish-kg-schema 均会返回 400 DPN.Planning.KgWorkspaceStatusNotEditable(「知识图谱空间处于不可编辑状态:ROLLBACK_FAILED」)。此状态 OpenAPI 侧无任何恢复/重置命令,请勿重试,唯一出路是到 Dataphin 控制台人工恢复该空间。
HITL 确认(写操作 / 高危)
执行前确认:
- Schema YAML 内容来源
- 合并策略:Replace(替换)/ Merge(合并)
- 影响范围:Replace 会删除空间中 YAML 未包含的类型(删除类型即通过此方式:从 YAML 移除后 Replace 导入)
- Merge 不删除:
Merge只新增/更新,不会删除 YAML 中未列出的已有类型(即使响应/日志显示"已删除",草稿态仍保留)。需删除已有类型时必须用 Replace。
确认后执行:
# YAML 内容含换行/引号,建议用 python3 组装 ImportCommand JSON 再传入
python3 -c "
import json
content = open('schema.yaml').read()
cmd = {'Content': content, 'InputFormat': 'yaml', 'MergeStrategy': 'Merge'}
open('import-cmd.json', 'w').write(json.dumps(cmd, ensure_ascii=False))
"
aliyun dataphin-public import-kg-schema \
--op-tenant-id "{OpTenantId}" \
--workspace-id "{WorkspaceId}" \
--import-command "$(cat import-cmd.json)" \
--profile {profile} --endpoint {endpoint} \
--user-agent "AlibabaCloud-Agent-Skills/manage-kg-schema/{SESSION_ID}"
字段名注意:
--import-commandJSON 结构为{Content, InputFormat, MergeStrategy}——格式字段名是InputFormat(取值yaml/json),不是Format。
响应处理:
ImportResult.EntityTypeCount/RelationTypeCount:计数不可信,不可作为导入验证依据——实测以 Replace 导入 7 实体/9 关系的基线,响应却返回 9/10(导入前草稿态的计数),Merge 场景同样不可信。唯一可信验证是导入/发布后export-kg-schema核对类型清单- 导入仅写入草稿态;须经步骤 4 发布后才在图引擎生效
步骤 4:发布 Schema
HITL 确认(写操作 / 高危 / 异步)
执行前确认:
- 发布备注描述
- 是否有破坏性变更(如非必填→必填)需要数据调整策略
- 影响范围:将草稿态 Schema 发布为正式版本并同步到图引擎
确认后执行:
aliyun dataphin-public publish-kg-schema \
--op-tenant-id "{OpTenantId}" \
--workspace-id "{WorkspaceId}" \
--publish-command '{
"Description": "新增公司实体类型及投资关系类型",
"DataAdjustmentPolicies": []
}' \
--profile {profile} --endpoint {endpoint} \
--user-agent "AlibabaCloud-Agent-Skills/manage-kg-schema/{SESSION_ID}"
响应处理:
- 提取
Data.VersionId(预期发布后的最新模型版本号),用于步骤 5 查询发布结果 - 返回 ok 只是受理成功:向量索引创建等实际执行结果必须到步骤 5 复核(trace 72c13131 实测:publish 返回成功,但发布结果里向量索引创建失败),不要凭发布返回 ok 就宣布成功
步骤 5:查询发布结果
# 不带 --version-id 时返回最近一次发布记录
aliyun dataphin-public get-kg-schema-publish-result \
--op-tenant-id "{OpTenantId}" \
--workspace-id "{WorkspaceId}" \
--version-id {VersionId} \
--profile {profile} --endpoint {endpoint} \
--user-agent "AlibabaCloud-Agent-Skills/manage-kg-schema/{SESSION_ID}"
响应处理:
Data.Status:Publishing(执行中)/Published(成功)/Partial(部分完成)/Failed(失败)/RollbackFailed(发布失败且回滚失败——空间进入不可编辑状态,后续import-kg-schema/publish-kg-schema均报 400DPN.Planning.KgWorkspaceStatusNotEditable)Data.Content:发布过程日志(含各阶段时间戳与校验结果);含isSemanticEnabled属性时重点看向量索引创建记录——出现「属性新增向量索引:X 失败」+Invalid input 'VECTOR'即 Neo4j 版本 < 5.11(见步骤 2 专节,不要重试)Data.VersionId:本次发布的版本号- 如为 Publishing 状态,间隔 5 秒后重新查询,直到终态
- 如为
RollbackFailed:不要重试导入/发布——OpenAPI 侧无恢复/重置命令,必须到 Dataphin 控制台人工恢复空间后再继续
兜底:旧版本独立部署(SDK 泛化调用)
独立部署低于 KG OpenAPI 发布版本(< v6.1.1)时,使用辅助脚本(Python Tea SDK call_api()):
pip3 install pyyaml alibabacloud-tea-openapi alibabacloud-tea-util
export ALIBABA_CLOUD_ACCESS_KEY_ID=... ALIBABA_CLOUD_ACCESS_KEY_SECRET=...
export DATAPHIN_ENDPOINT={endpoint} DATAPHIN_TENANT_ID={OpTenantId} DATAPHIN_WORKSPACE_ID={WorkspaceId}
# 只读导出基线(--output 存文件;独立部署自签证书加 --ignore-ssl)
python3 scripts/export-schema.py --ignore-ssl --output schema.yaml
# 端到端导入(本地校验 → 导出基线 → 导入 → 验证 → 发布 → 轮询)
python3 scripts/import-schema.py <yaml_file> --ignore-ssl [--skip-publish] [--merge-strategy Merge]
SDK 调用细节见 Python SDK 模板 与 scripts/README.md。
9. Success Verification
- Schema 内容:
export-kg-schema返回的SchemaInfo.Content含预期的实体类型和关系类型 - 发布成功:
get-kg-schema-publish-result返回Data.Status: Published - 发布日志:
Data.Content日志显示各阶段(版本快照/类型处理)均完成、无报错 - 语义检索(若开启):
Data.Content中向量索引创建无失败记录;可再用SearchKgBySemantic验证MatchSource含semantic/both(全为keyword说明语义路径未生效)
10. Cleanup
无细粒度删除接口。清理某个实体类型/关系类型的方式:从 YAML 中移除对应条目,再以 Replace 策略整体导入并发布:
# 1. 导出当前 Schema 作为基线
aliyun dataphin-public export-kg-schema \
--op-tenant-id "{OpTenantId}" --workspace-id "{WorkspaceId}" \
--output-format yaml \
--profile {profile} --endpoint {endpoint} \
--user-agent "AlibabaCloud-Agent-Skills/manage-kg-schema/{SESSION_ID}" \
--cli-query 'SchemaInfo.Content'
# 2. 本地编辑 YAML,删除不需要的 entityTypes / relationTypes 条目
# (删除实体类型前,需一并删除 YAML 中引用该类型的所有关系类型)
# 3. 以 Replace 策略整体导入(Replace 会删除空间中 YAML 未包含的类型)
aliyun dataphin-public import-kg-schema \
--op-tenant-id "{OpTenantId}" --workspace-id "{WorkspaceId}" \
--import-command '{"Content": "...(移除目标类型后的 YAML)...", "InputFormat": "yaml", "MergeStrategy": "Replace"}' \
--profile {profile} --endpoint {endpoint} \
--user-agent "AlibabaCloud-Agent-Skills/manage-kg-schema/{SESSION_ID}"
# 4. 发布使删除生效(见步骤 4)
11. Command Tables
| CLI 命令 | 用途 | 类型 | 关键参数 |
|---|---|---|---|
export-kg-schema |
导出整体 Schema(YAML/JSON) | 读 | --output-format、--version-id |
import-kg-schema |
导入整体 Schema | 写(高危) | --import-command(JSON:{Content, InputFormat, MergeStrategy}) |
publish-kg-schema |
发布 Schema(异步) | 写(高危) | --publish-command(JSON:{Description, DataAdjustmentPolicies}) |
get-kg-schema-publish-result |
查询发布结果 | 读 | --version-id(空=最近一次) |
KG Schema OpenAPI 仅提供以上 4 个整体 Schema 命令,无实体类型/关系类型的细粒度 CRUD 命令。命令已注册到 CLI 插件(>= 0.7.1,
--help实测 Online version v6.1.1)。
详见 相关命令索引。
12. Best Practices
- 仅整体 Schema 操作(重要):无
CreateKgEntityType等细粒度单类型 API。类型/属性的增删改一律「导出 YAML → 编辑 → 整体导入 → 发布」;删除类型用Replace策略导入移除了该类型的 YAML - 先确认图引擎再编辑 YAML(重要):
dataType可用集合随引擎变化——Lindorm 不支持DATE/TIMESTAMP/LIST/DURATION/EMBEDDED/MAP/UNKNOWN(时间类改STRING存 ISO 字串,多值改SET,嵌套改STRING存 JSON),而SET仅 Lindorm 支持。引擎不明时先问用户,详见 图引擎能力矩阵 - 业务识别规则的引擎差异:Lindorm 无编辑距离与时间类规则,近似去重改用语义相似度/忽略大小写/包含(规则在控制台配置,OpenAPI 无规则管理接口)
- CLI 原生优先:KG API 已注册到 CLI 插件(>= 0.7.1),直接使用
aliyun dataphin-public <cmd>;命令报 unknown command 时先aliyun plugin update - InputFormat 字段名(重要):
--import-commandJSON 的格式字段是InputFormat(不是Format),取值yaml/json - YAML 传参用文件组装:YAML 内容含换行/引号,直接内联 shell 易转义出错,建议用 python3 组装 ImportCommand JSON 文件后
"$(cat import-cmd.json)"传入 - 编码唯一性:EntityCode / RelationCode 在空间内唯一,编辑 YAML 时保证不重复
- 导入 YAML 必填字段:每个属性必须包含
code/name/dataType/isPrimaryKey/isRequired/isIndexed/isUsedShow/defaultValue;每个实体至少一个isPrimaryKey: true和一个isUsedShow: true - dataType 全大写:
STRING/INTEGER/FLOAT/BOOLEAN/DATE/TIMESTAMP/DECIMAL(具体可用范围按图引擎裁剪,见上文) - useSysPk:实体级别
useSysPk: true表示系统自动生成主键(此时所有属性isPrimaryKey为 false);false表示业务主键模式 - cardinalType 枚举:
MULTI_TO_MULTI/ONE_TO_MANY/ONE_TO_ONE(关系基数) - 导入策略选择:
Replace(完整替换,慎用)vsMerge(增量合并,推荐日常使用) - Merge 删除语义(重要):
Merge只做新增/更新,不会删除 YAML 中未列出的已有类型——实测即使 Import 响应报 count 减少、发布日志写"处理被删除…完成",草稿态实际仍保留原类型。如需删除已有类型,必须改用Replace策略(从 YAML 移除该类型后 Replace 导入并发布)。 - ImportResult 计数不可信(重要):
ImportResult.EntityTypeCount/RelationTypeCount在 Merge / Replace 两种策略下均不可作为验证依据(实测 Replace 导入返回的是导入前草稿态的计数)。唯一可信验证是导入/发布后export-kg-schema核对类型清单 - 导入前空间状态前置检查(重要):导入/发布前先跑
get-kg-schema-publish-result检查空间状态;遇 400DPN.Planning.KgWorkspaceStatusNotEditable(如RollbackFailed发布失败且回滚失败)时 API 侧无解、盲目重试无效,需到 Dataphin 控制台人工恢复空间。注意:Schema 面不可编辑不影响数据面读写(create-kg-entity/exec-kg-cypher等基于已发布版本仍正常,见 manage-kg-knowledge) - 发布是异步的:
publish-kg-schema返回Data.VersionId,需轮询get-kg-schema-publish-result获取最终状态(Data.Status) - 破坏性变更:非必填→必填时需提供
DataAdjustmentPolicies中的BackFillDefaultValuePolicy策略,否则返回Dataphin.KG.RequiredDefaultMissing - 版本查询:
export-kg-schema --version-id:空/-1=草稿态、0=最新已发布版本、正整数=指定版本 - 大整数 ID:WorkspaceId 等 ID 用字符串传参
- 独立部署 Endpoint:
--endpoint dataphin-openapi.<env>.aliyun.com(不带https://前缀) - 旧环境兜底:独立部署低于 KG OpenAPI 发布版本(< v6.1.1,以
--help显示的 Online version 为准)无 KG OpenAPI,退回scripts/export-schema.py/scripts/import-schema.pySDK 泛化调用