本体,为啥我的protege里英文无法正常显示,会乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了本体,为啥我的protege里英文无法正常显示,会乱码相关的知识,希望对你有一定的参考价值。

参考技术A 貌似需要一个个添加,双击类结构中的类名,或者双击显示的那个概念节点,会自动展开这个节点的子节点的,最终形成的图会比较的乱,通过手动移动编辑这些点可以理顺一点;你可以装个Graphviz,直接在OWL Viz标签中,点击显示全部类后,就会出现一个结构图,和你说的你那个出来的图会有些不一样,结构看起来比较清楚,但不可编辑。

protege5.0中定义类之间的关系

【中文标题】protege5.0中定义类之间的关系【英文标题】:define relationship between classes in protege5.0 【发布时间】:2020-09-25 05:42:30 【问题描述】:

我正在使用 Protege 工具构建我的本体,并且我已经定义了我的类和个人。 现在,我想添加类之间的关系。但是,我读过:

object 属性定义实例之间的关系,但是在 OWL 中我们可以 使用限制来定义类之间的关系

你能举个例子来帮助理解吗?

我的问题: 我有class1class2,我需要在这些类之间建立一个“相反的”关系。 你能帮忙吗?

【问题讨论】:

【参考方案1】:

您可以按照以下步骤操作:

(1) 创建类Class1Class2

<owl:Class rdf:about="http://henrietteharmse.com/tutorial/DomainRangeExample#Class1"/>
<owl:Class rdf:about="http://henrietteharmse.com/tutorial/DomainRangeExample#Class2"/> 

(2) 定义一个对象属性,比如related,域为Class1,范围为Class2

<owl:ObjectProperty rdf:about="http://henrietteharmse.com/tutorial/DomainRangeExample#related">
    <rdfs:domain rdf:resource="http://henrietteharmse.com/tutorial/DomainRangeExample#Class1"/>
    <rdfs:range rdf:resource="http://henrietteharmse.com/tutorial/DomainRangeExample#Class2"/>
</owl:ObjectProperty>

说明 这表明,如果个体 a 通过对象属性 related 与个体 b 相关联,则 a 将被假定为 Class1 类型,b 将被假定为 Class2 类型.

(3) 定义另一个对象属性,比如inverseRelated,它是related的倒数:

<owl:ObjectProperty rdf:about="http://henrietteharmse.com/tutorial/DomainRangeExample#inverseRelated">
    <owl:inverseOf rdf:resource="http://henrietteharmse.com/tutorial/DomainRangeExample#related"/>
</owl:ObjectProperty>

说明 这表明,如果个体 a 通过对象属性 inverseRelated 与个体 b 相关联,则将假定 a 的类型为 Class2,并且假定 b 的类型为 Class1 .

(4) 通过inverseRelated 对象属性定义2 个个体,例如individual1individual2individual1individual2

<owl:NamedIndividual rdf:about="http://henrietteharmse.com/tutorial/DomainRangeExample#individual1">
    <DomainRangeExample:inverseRelated rdf:resource="http://henrietteharmse.com/tutorial/DomainRangeExample#individual2"/>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="http://henrietteharmse.com/tutorial/DomainRangeExample#individual2"/>

(5) 如果您现在对您的本体运行推理器(即在 Protege 中),您将看到individual1 被推断为Class2 类型,而individual2Class1 类型。

【讨论】:

感谢您的回复,我认为这个建议很有用,但对我来说不是,因为我只是想定义该关系来注释我的文档(不使用推理器),例如:我已经定义了两个类 "good" 和 "bad" ,如果我的文档有一个像 "I'm not so good today" 这样的句子,并且在我的本体(通过 protege 构建)中搜索但加载到 GATE 工具后,我会发现2个重要标记:“not”和“good”,所以程序应该从本体中得到与“good”相反的类,最终结果是“bad” 我找到了一些代码,但它是用 OWL2 编写的: 也许,我需要类似的东西,但在 OWL 中。!【参考方案2】:

考虑 A 类和 B 类(我使用的是海龟语法)

:A rdf:type owl:Class .
:B rdf:type owl:Class .

您可以将 A 和 B 定义为不相交的(类之间的关系),这意味着如果一个元素是其中之一,则它不能在另一个中。

:A owl:disjointWith :B .

如果查询例如:

not B

你获得类A。它也适用于个人。

【讨论】:

感谢您的回复,这是一个简单的解决方案,我会尝试一下,但是如果我不在 protege 中使用查询,我如何才能达到“B”的反面,我必须通过以下方式找到该关系java代码! @SuznCB 这是一个全新的问题,您可以单独发布。在此期间,请参阅 java 代码 github.com/owlcs/owlapi/wiki/DL-Queries-with-a-real-reasoner 的此示例。您仍然可以通过代码传递查询“not B”。

以上是关于本体,为啥我的protege里英文无法正常显示,会乱码的主要内容,如果未能解决你的问题,请参考以下文章

protege 是否不支持中文?

用protege4.0建立的中文本体类层次怎么显示的是乱码,方框。

protege5.2基础教程

Protege:对象属性限制 1

protege5.0中定义类之间的关系

能力建模工具-Protege插件ICCTab