本体论、本体建模与 AI:从概念到代码的不完整指南

举报
小马过河R 发表于 2026/09/17 19:55:47 2026/09/17
【摘要】 哲学里的“本体论”研究存在本身;计算机里的“本体”是对某个领域的概念、关系、规则做显式、形式化、共享的规范;本体建模就是把这个规范建出来的过程。它常用于知识图谱、语义搜索、数据互操作和自动推理。在大模型时代,本体不仅没有过时,反而成为 LLM 的语义层、记忆、护栏和推理器。本文将从概念、动机、方法论、案例、代码以及与 AI 的关系六个方面,系统地介绍本体论与本体建模,并补充斯坦福七步法、Palan

引言

哲学里的“本体论”研究存在本身;计算机里的“本体”是对某个领域的概念、关系、规则做显式、形式化、共享的规范;本体建模就是把这个规范建出来的过程。它常用于知识图谱、语义搜索、数据互操作和自动推理。在大模型时代,本体不仅没有过时,反而成为 LLM 的语义层、记忆、护栏和推理器。本文将从概念、动机、方法论、案例、代码以及与 AI 的关系六个方面,系统地介绍本体论与本体建模,并补充斯坦福七步法、Palantir 式建模、OPM 方法三种主流建模方法论,同时讨论 FDE 场景下需求清晰后本体建模能否直接交给 AI。

一、什么是本体论、本体、本体建模?

1.1 哲学本体论

哲学本体论研究“存在什么”“存在的方式”“实体、属性、关系、事件”等终极问题。比如:世界由什么构成?属性依附于实体吗?它关注的是最一般的存在范畴。

1.2 计算机中的本体

在计算机与信息科学中,通常说“本体”(ontology),不是哲学思辨,而是工程制品。经典定义是:

本体是对某一领域共享概念化的显式、形式化规范。

拆开看:

  • 领域:大学课程、医疗、电商、图书馆。
  • 概念化:把世界抽象成类、关系、属性。
  • 显式:写出来,机器可读。
  • 形式化:用 RDF/OWL 等语言表达。
  • 共享:人和系统对术语有共同理解。

1.3 本体建模

本体建模就是构建本体的过程,通常包括:

  • 类/概念:StudentProfessorCourse
  • 个体/实例:AliceCS101
  • 对象属性:enrolledInteacheshasPrerequisite
  • 数据属性:namecourseName
  • 公理/约束:定义域、值域、逆关系、传递关系、不相交
  • 推理:从已有事实推出隐含事实

可以简单理解:

知识图谱 = 本体(语义 schema)+ 实例数据。


二、为什么需要本体建模?

现实世界的数据系统常常“各说各话”:

  • 两个数据库都有 title,一个指“书名”,一个指“职称”。
  • “苹果”可能是水果,也可能是公司。
  • A 系统的“学生”对应 B 系统的“学员”,C 系统的“用户”。
  • 想知道“CS102 的所有先修课”,但数据只存了直接先修关系。

本体建模能带来:

  1. 共享语义:明确定义术语。
  2. 互操作:不同系统映射到同一本体。
  3. 推理:例如 A 先修 B,B 先修 C,推出 A 先修 C。
  4. 语义搜索/问答/推荐:理解关系,而不只是关键词匹配。
  5. 数据治理:统一主数据、元数据、分类体系。

三、怎么做?一个实用流程(以斯坦福七步法为骨架)

常用七步法/迭代流程:

  1. 确定领域和范围
    比如:只做“大学课程”,不碰财务、宿舍。

  2. 写能力问题
    本体要能回答什么问题?

    • Alice 选了哪些课?
    • 谁教 CS101?
    • CS102 的所有先修课是什么?
  3. 复用现有本体
    如 FOAF、Dublin Core、Schemaorg、SKOS、SNOMED CT、Gene Ontology。

  4. 列术语
    StudentProfessorCourseenrolledInteacheshasPrerequisite

  5. 定义类层次
    PersonStudent / Professor
    Course

  6. 定义属性和公理

    • enrolledIn domain=Student,range=Course
    • teaches domain=Professor,range=Course
    • taughtByteaches 的逆属性
    • hasPrerequisite 是传递属性
  7. 实例化、查询、推理、验证、发布
    用 Protégé 建模,用 RDF/OWL/Turtle 存储,用 SPARQL 查询,用 HermiT/Pellet 推理。


四、主流本体建模方法论

除了上面这条通用流程,本体工程领域还沉淀了若干有名的方法论。下面补充三种有代表性的方法:斯坦福七步法、Palantir 式建模、OPM 方法。

4.1 斯坦福七步法

斯坦福七步法来自 Noy 和 McGuinness 的 Ontology Development 101,是传播最广、上手最快的本体建模方法论之一。它的基本信念是:不存在唯一正确的建模方式,最佳方案取决于预期应用和可预见的扩展。

七步:

  1. 确定本体的领域和范围;
  2. 考察复用现有本体的可能性;
  3. 列举重要术语;
  4. 定义类和类层次;
  5. 定义类的属性;
  6. 定义属性的分面,如值类型、定义域、值域;
  7. 创建实例。

特点:

  • 从确定领域范围到创建实例,流程完整;
  • 适合学术研究,强调完整性;
  • 与 Protégé 工具结合紧密,实操性强;
  • 开发过程是迭代的,需要通过应用或专家讨论来评估和修订。

适合场景: 领域本体构建、教学入门、中小规模项目快速起步、学术研究。

4.2 Palantir 式建模

Palantir 式建模不是传统学术本体方法论,而是 Palantir 在 Foundry 等平台工程实践中常被总结出的一种本体建模思路。它的核心是:以决策为导向,做减法,只保留支撑行动的必要实体。

核心主张:

  • 不为“完整描述世界”而建模,而为“支持决策和行动”而建模;
  • 做减法:只保留支撑行动的必要实体、属性和关系;
  • 强调对象、属性、链接与动作类型,尤其关注写回和运营闭环;
  • 本体要能直接服务于业务操作、监控、预警、调度和决策。

特点:

  • 目标明确:能行动、能决策、能闭环;
  • 落地快,避免过度建模;
  • 可能牺牲通用性和学术意义上的完整性;
  • 适合企业运营、供应链、军事、金融风控、数字孪生等场景。

适合场景: 企业决策系统、运营系统、需要快速产生业务价值的本体工程。

4.3 OPM 方法

OPM 是 Object-Process Methodology 的缩写,即对象-过程方法论,后来成为 ISO 19450 标准。它通过对象、过程、链接三大元素搭建动态本体,支持行为与规则建模。

三大元素:

  • 对象(Object):静态事物,如学生、课程、教授;
  • 过程(Process):对对象进行变换的行为,如选课、授课、先修课判定;
  • 链接(Link):对象与对象、对象与过程、过程与过程之间的关系。

特点:

  • 不只描述“有什么”,还描述“会发生什么”;
  • 支持动态本体、行为建模和规则建模;
  • 通常用 OPD 图与 OPL 文本双模态表达;
  • 适合复杂系统、系统工程、产品生命周期管理。

适合场景: 需要描述流程、行为、状态变化的复杂系统;系统工程;动态知识建模。

4.4 三种方法论对比

维度 斯坦福七步法 Palantir 式建模 OPM 方法
核心驱动 领域概念完整性 决策与行动 对象与过程动态建模
建模策略 从领域到实例,迭代完善 做减法,只留必要实体 对象、过程、链接三元素
形式化程度 中到高,可结合 OWL 工程化、平台化 高,ISO 19450
强项 学术研究、教学、领域本体 企业运营、决策闭环 复杂系统、行为规则
风险 容易建得过大 可能牺牲通用性 学习成本较高

实际项目中,这三种方法可以混合使用:用斯坦福七步法搭骨架,用 Palantir 式建模做业务减法,用 OPM 补足动态过程和行为规则。


五、直观实际案例:大学课程知识图谱

领域

大学里的学生、教授、课程、选课、先修关系。

本体结构 TBox

  • 类:PersonStudentProfessorCourse
  • 对象属性:
    • enrolledInStudentCourse
    • teachesProfessorCourse
    • taughtByCourseProfessor,是 teaches 的逆
    • hasPrerequisiteCourseCourse,传递
  • 数据属性:
    • namePerson → string
    • courseNameCourse → string

实例 ABox

  • Alice 是 Student,选了 CS101
  • Smith 是 Professor,教 CS101
  • CS101 先修 CS100
  • CS102 先修 CS101

推理结果

  • 因为 hasPrerequisite 传递:CS102 先修 CS100
  • 因为 taughtBy 是逆属性:CS101Smith 教。

六、代码示例

6.1 Turtle/OWL 本体片段

@prefix ex:   <example/univ#> .
@prefix owl:  www/2002/07/owl#> .
@prefix rdfs: <www/2000/01/rdf-schema#> .
@prefix xsd:  <www/2001/XMLSchema#> .

# 类
ex:Person    a owl:Class .
ex:Student   a owl:Class ; rdfs:subClassOf ex:Person .
ex:Professor a owl:Class ; rdfs:subClassOf ex:Person .
ex:Course    a owl:Class .

# 对象属性
ex:enrolledIn a owl:ObjectProperty ;
    rdfs:domain ex:Student ;
    rdfs:range  ex:Course .

ex:teaches a owl:ObjectProperty ;
    rdfs:domain ex:Professor ;
    rdfs:range  ex:Course .

ex:taughtBy a owl:ObjectProperty ;
    owl:inverseOf ex:teaches .

ex:hasPrerequisite a owl:ObjectProperty, owl:TransitiveProperty ;
    rdfs:domain ex:Course ;
    rdfs:range  ex:Course .

# 数据属性
ex:name a owl:DatatypeProperty ;
    rdfs:domain ex:Person ;
    rdfs:range  xsd:string .

ex:courseName a owl:DatatypeProperty ;
    rdfs:domain ex:Course ;
    rdfs:range  xsd:string .

# 实例
ex:alice a ex:Student ;
    ex:name "Alice" ;
    ex:enrolledIn ex:CS101 .

ex:CS101 a ex:Course ;
    ex:courseName "CS101" ;
    ex:hasPrerequisite ex:CS100 .

ex:CS100 a ex:Course ;
    ex:courseName "CS100" .

ex:Smith a ex:Professor ;
    ex:name "Smith" ;
    ex:teaches ex:CS101 .

6.2 SPARQL 查询:Alice 选了哪些课?谁教?

PREFIX ex: <example/univ#>
SELECT ?studentName ?courseName ?teacherName WHERE {
  ?student a ex:Student ;
           ex:name ?studentName ;
           ex:enrolledIn ?course .
  ?course ex:courseName ?courseName .
  OPTIONAL {
    ?teacher ex:teaches ?course ;
             ex:name ?teacherName .
  }
}

结果类似:

studentName courseName teacherName
Alice CS101 Smith

6.3 Python + Owlready2:建模 + 自动推理

安装:

pip install owlready2

sync_reasoner() 默认需要 Java。若没装 Java,可以先注释掉它,但看不到传递推理。

from owlready2 import *

# 创建一个本体
onto = get_ontology("example/univ.owl")

with onto:
    # 类
    class Person(Thing): pass
    class Student(Person): pass
    class Professor(Person): pass
    class Course(Thing): pass

    # 对象属性
    class enrolledIn(ObjectProperty):
        domain = [Student]
        range = [Course]

    class teaches(ObjectProperty):
        domain = [Professor]
        range = [Course]

    class taughtBy(ObjectProperty):
        inverse_property = teaches

    class hasPrerequisite(ObjectProperty):
        domain = [Course]
        range = [Course]
        transitive = True   # 传递属性

    # 数据属性
    class name(DataProperty):
        domain = [Person]
        range = [str]

    class courseName(DataProperty):
        domain = [Course]
        range = [str]

# 创建实例
alice = Student("alice")
alice.name = ["Alice"]

cs100 = Course("cs100")
cs100.courseName = ["CS100"]

cs101 = Course("cs101")
cs101.courseName = ["CS101"]
cs101.hasPrerequisite = [cs100]

cs102 = Course("cs102")
cs102.courseName = ["CS102"]
cs102.hasPrerequisite = [cs101]

alice.enrolledIn = [cs101]

smith = Professor("smith")
smith.name = ["Smith"]
smith.teaches = [cs101]

# 推理:需要 Java;若报错可先注释掉
sync_reasoner()

# 查询
print("Alice 选了:", [c.courseName[0] for c in alice.enrolledIn])
print("CS102 先修,推理后包含传递结果:", [c.courseName[0] for c in cs102.hasPrerequisite])
print("教 CS101 的老师,逆属性推理:", [p.name[0] for p in cs101.taughtBy])

输出类似:

Alice 选了: ['CS101']
CS102 先修,推理后包含传递结果: ['CS101', 'CS100']
教 CS101 的老师,逆属性推理: ['Smith']

这说明:

  • 显式写的是:CS102 hasPrerequisite CS101CS101 hasPrerequisite CS100
  • 推理器推出:CS102 hasPrerequisite CS100
  • 显式写的是:Smith teaches CS101
  • 推理器推出:CS101 taughtBy Smith

七、常见应用

  • Wikidata / Google Knowledge Graph:实体、关系、类别。
  • 医疗:SNOMED CT、ICD、疾病-症状-药物关系。
  • 生物:Gene Ontology。
  • 电商:商品类目、品牌、属性、兼容关系。
  • 企业数据治理:客户、产品、组织、指标统一定义。
  • 图书馆:Book、Author、Member、Loan。

八、本体与 AI 的关系

8.1 历史脉络:本体一直是 AI 的知识骨架

AI 早期的主流是符号主义。它认为智能来自对符号的操作,所以需要:

  • 知识表示:概念、关系、规则怎么写成机器可处理的形式;
  • 推理:从已知事实推出新事实;
  • 共享语义:不同系统对同一术语有共同理解。

这条线包括:

  • 语义网络、框架系统;
  • 专家系统,如 MYCIN;
  • 描述逻辑,后来成为 OWL 的逻辑基础;
  • 语义网:RDF、OWL、SPARQL;
  • 知识图谱:Google Knowledge Graph、Wikidata。

所以,本体在 AI 里不是哲学思辨,而是知识表示与推理的核心工程手段。它让机器不只是“存数据”,而是“理解概念和关系”。

8.2 本体在 AI 系统中的典型角色

  1. 知识表示与推理
    定义类、属性、关系、公理,让推理机做分类、一致性检查、蕴含计算。
    例如:CS102 hasPrerequisite CS101CS101 hasPrerequisite CS100,且 hasPrerequisite 传递,推出 CS102 hasPrerequisite CS100

  2. 语义互操作
    不同系统、数据库、API 的字段映射到同一本体,解决“同名不同义、同义不同名”。

  3. 约束与校验
    定义域、值域、不相交类、基数约束。LLM 输出可以用本体/SHACL 校验,减少幻觉和格式错误。

  4. 可解释与可审计
    KG/本体上的推理路径可追溯:为什么推荐这门课?因为先修关系链。LLM 的注意力权重很难解释,符号推理更容易审计。

  5. 语义检索与问答
    语义搜索、多跳问答、推荐系统常用 KG。比如问“CS102 的所有先修课”,SPARQL 可以直接算传递闭包。

  6. Agent 的共享协议与工具描述
    多 Agent 通信需要共享本体,避免术语歧义。工具调用的 JSON Schema 也可以看作轻量本体:函数名、参数、类型、约束。

8.3 大模型时代:为什么本体又重要了?

大模型是连接主义的高峰,它把大量知识隐式压进参数里。但它有几个痛点:

  • 幻觉:生成看似合理但错误的内容;
  • 知识过期:重训/微调成本高;
  • 不可解释:很难说清它为什么这样答;
  • 不可控:难以精确约束输出;
  • 领域长尾:专业领域容易出错。

本体/KG 恰好补这些短板:

维度 大模型 LLM 本体 / 知识图谱
知识形式 隐式参数 显式符号
更新 重训/微调贵 改三元组便宜
推理 概率、不精确 逻辑推理、可验证
解释
幻觉 无,但可能不完整
泛化 弱,依赖建模
构建成本 预训练高,使用低 建模高,维护难

所以现在的主流趋势不是“谁取代谁”,而是:

LLM 负责语言、感知、抽取、泛化;本体/KG 负责结构、约束、推理、记忆和可解释性。

8.4 LLM + 本体/KG 的典型结合模式

  1. GraphRAG
    向量 RAG 检索文本片段;GraphRAG 检索实体、关系、子图。本体定义图结构,LLM 用检索到的事实生成答案。

  2. Text-to-SPARQL / Text-to-Cypher / Text-to-SQL
    LLM 把自然语言转成查询,本体提供 schema。这样比直接让 LLM 编答案更可靠。

  3. LLM 抽取 + 本体对齐 + 推理机校验
    LLM 从文本抽三元组,映射到本体,再用推理机检查一致性、补全隐含关系。

  4. Agent + KG 记忆
    Agent 的长期记忆存到 KG/本体,工具调用用 schema 描述。Agent 可读写知识,做规划、推理、审计。

  5. 神经符号 AI
    神经部分做感知和语言,符号部分做逻辑和约束。LLM 生成候选,推理机验证;规则约束解码,减少不合规输出。

  6. LLM 辅助本体工程
    LLM 可以从文本、数据库 schema、API 文档中抽取候选类、关系、层次,生成定义和同义词,辅助本体对齐。但必须人工审核 + 推理机验证。

8.5 代码示例:GraphRAG 风格的“本体查询 + LLM 提示”

from rdflib import Graph

ttl = """
@prefix ex: <example/univ#> .
ex:CS102 ex:courseName "CS102" ; ex:hasPrerequisite ex:CS101 .
ex:CS101 ex:courseName "CS101" ; ex:hasPrerequisite ex:CS100 .
ex:CS100 ex:courseName "CS100" .
"""

g = Graph()
g.parse(data=ttl, format="turtle")

query = """
PREFIX ex: <example/univ#>
SELECT ?name WHERE {
  ex:CS102 ex:hasPrerequisite+ ?p .
  ?p ex:courseName ?name .
}
"""

facts = [str(row[0]) for row in g.query(query)]
print(facts)  # ['CS101', 'CS100']

context = "CS102 的先修课(含传递闭包):" + "、".join(facts)

prompt = f"""
你是一个课程顾问。只能根据下面的事实回答,不要编造。
事实:
{context}
问题:CS102 的先修课有哪些?
"""

print(prompt)

这个例子展示了:

  • 本体里的 hasPrerequisite 是传递属性;
  • SPARQL 用 + 算传递闭包;
  • 查出来的事实作为上下文喂给 LLM;
  • LLM 负责把结构化事实转成自然语言答案。

8.6 代码示例:用本体约束校验 LLM 输出(伪代码)

allowed = {
    "enrolledIn": ("Student", "Course"),
    "teaches": ("Professor", "Course"),
    "hasPrerequisite": ("Course", "Course"),
}

def validate(triple):
    s, r, o = triple
    if r not in allowed:
        return False, f"未知关系 {r}"
    st, ot = allowed[r]
    if s.type != st or o.type != ot:
        return False, f"类型不匹配:{r} 需要 {st} -> {ot}"
    return True, "OK"

llm_triples = [
    ("Alice", "enrolledIn", "CS101"),
    ("Smith", "teaches", "CS101"),
    ("CS102", "hasPrerequisite", "CS100"),
]

实际工程中可以用 SHACL、ShEx、推理机 做更严格的校验。核心思想是:

LLM 生成候选,本体/约束负责验证和纠错。

8.7 FDE 场景:需求清晰后,本体建模能直接交给 AI 吗?

结论:不能完全直接交给 AI,但可以让 AI 主导生成初稿。
更准确的公式是:

需求清晰 + AI 生成 + 推理机/SHACL 校验 + FDE/领域专家裁决 + 业务验收 = 可用的生产级本体。
需求清晰 ≠ 本体建模可全自动。

在 FDE(Forward Deployed Engineer,前线部署工程师)场景中,FDE 深入客户现场,梳理需求、理解业务、快速搭建数据与本体。需求梳理清晰当然会大幅降低建模难度,但它主要解决的是“问题空间”的清晰度,而本体建模还要解决“解空间”的设计问题。两者不是一回事。

为什么需求清晰还不够?

  1. 需求是“要什么”,本体是“世界怎么切分”。
    需求说“要看客户风险”,但风险按个人、企业、交易、账户、地区怎么分?边界在哪?哪些实体必须合并,哪些必须拆开?这需要业务裁决,AI 只能给候选。

  2. 隐性知识和组织共识无法从需求文档自动读出。
    同一个词在不同部门含义不同。销售说的“客户”可能是签约主体,风控说的“客户”可能是风险暴露单元。AI 可以列出歧义,但不能替组织拍板。

  3. 公理和约束有业务后果。
    传递、逆、不相交、基数、开放世界/封闭世界,这些选择会直接影响推理结果。选错会导致推理爆炸、漏推、误判。AI 生成公理容易,承担后果难。

  4. 数据现实与需求文档有差距。
    源系统脏数据、缺失值、粒度不一致、主键不统一,这些只有到现场看数据才知道。本体必须适配数据现实,而不是只适配需求文本。

  5. 决策与行动闭环要求做减法。
    Palantir 式建模强调只保留支撑行动的必要实体。删什么比加什么更难。AI 倾向于“多建”,FDE 必须“敢删”。

  6. 治理与版本是长期问题。
    本体是长期资产,需要 owner、变更流程、权限、审计、版本兼容。AI 可以生成草稿,但不能自动建立治理制度。

  7. 验收标准必须由人定义。
    能力问题、SHACL 约束、SPARQL 测试、业务 KPI,这些是验收依据。AI 可以生成测试,但“什么算通过”要业务确认。

AI 能做什么?

  • 从需求文档、访谈记录、数据库 schema、API 文档中生成候选类、属性、关系;
  • 生成能力问题清单;
  • 生成 OWL/Turtle/SHACL 草稿;
  • 对齐 FOAF、Schemaorg、Dublin Core 等标准本体;
  • 生成 SPARQL 查询和测试用例;
  • 做一致性检查、反例生成;
  • 生成文档、同义词、多语言标签。

推荐流水线:

  1. FDE + 业务:定范围、能力问题、决策场景、验收标准。
  2. AI:读需求与数据源,生成候选本体、术语表、映射。
  3. 推理机/SHACL:自动查一致性、可满足性、约束。
  4. FDE + 领域专家:裁决冲突、删减、定公理、定权限。
  5. AI:生成查询、API、应用脚手架、文档。
  6. 业务:用真实问题验收,迭代。

FDE 角色变化:

FDE 会从“手工画本体的人”变成“问题定义者、约束设计者、冲突裁决者、价值验证者”。AI 是副驾驶,不是自动驾驶。

适用边界:

场景 能否交给 AI 主导
一次性、低风险、只读、实验 可以,AI 主导,人类轻审
部门级、有推理、有查询 AI 生成 + 人审核 + 自动校验
生产级、跨部门、驱动行动、强治理 人主导 + AI 辅助 + 治理闭环

最终判断:

在 FDE 中,需求梳理清晰时,AI 可以把本体建模的初稿效率提升数倍,但“直接交给 AI”只适用于低风险实验场景。生产级本体建模仍然是“AI 生成候选,人类做决策,推理机做校验,业务做验收”的人机协同工程。


九、关键注意点

  1. 本体建模是迭代的,不要一开始追求大而全。
  2. 先写能力问题,再决定建哪些类和属性。
  3. 尽量复用标准本体,如 FOAF、Dublin Core、Schemaorg。
  4. OWL 通常采用开放世界假设:没写的不一定为假。
  5. 本体不是简单的分类树,还包括属性、关系、约束、公理和推理。
  6. 工具链:Protégé 建模,RDF/OWL/Turtle 存储,SPARQL 查询,HermiT/Pellet 推理,rdflib/owlready2 编程。
  7. 方法论要按场景选:斯坦福七步法适合学术与领域本体,Palantir 式建模适合决策与运营,OPM 适合动态系统与行为规则。
  8. AI 可以加速本体建模,但不能替代业务裁决与治理。需求清晰时,AI 适合做初稿、校验、查询和文档,最终决策权和验收权仍应留在人。

十、结语

AI 早期靠符号和本体,深度学习时代靠数据和神经网络,大模型时代则走向 神经符号 + 知识图谱 + LLM 的融合。

在这个融合里:

  • LLM 是语言接口和泛化引擎;
  • 本体 是语义骨架;
  • 知识图谱 是实例记忆;
  • 推理机 是逻辑引擎;
  • SHACL/规则 是护栏。

所以本体不是过时技术,而是大模型的“语义层、记忆、护栏和推理器”。

一句话总结:

本体建模就是把某个领域的共识写成机器能读、能查、能推理的语义模型;在大模型时代,它更是让 AI 从“会说”走向“可信、可控、可解释”的关键基础设施。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。