在 OWL 中的同一属性中定义多个域/范围

2024-03-12

在 OWL 中设置数据/对象属性的域/范围的正确方法是什么?

如果我有两节课A, B和数据属性hasName:

<Declaration><Class IRI="#A"/></Declaration>
<Declaration><Class IRI="#B"/></Declaration>
<Declaration><DataProperty IRI="#hasName"/></Declaration>
<FunctionalDataProperty>
    <DataProperty IRI="#hasName"/>
</FunctionalDataProperty>
<DataPropertyRange>
    <DataProperty IRI="#hasName"/>
    <Datatype abbreviatedIRI="xsd:string"/>
</DataPropertyRange>

我要设置班级A和班级B作为单独的域名hasName。我尝试了三种方法,以下哪种方法是正确的?

  • 选项 1 - 推断域结果:A, B and owl:Thing

    <DataPropertyDomain>
        <DataProperty IRI="#hasName"/>
        <Class IRI="#A"/>
    </DataPropertyDomain>
    <DataPropertyDomain>
        <DataProperty IRI="#hasName"/>
        <Class IRI="#B"/>
    </DataPropertyDomain>
    
  • 选项 2 - 推断域结果:owl:Thing

    <DataPropertyDomain>
        <DataProperty IRI="#hasName"/>
        <ObjectUnionOf>
            <Class IRI="#A"/>
            <Class IRI="#B"/>
        </ObjectUnionOf>
    </DataPropertyDomain>
    
  • 选项 3 - 推断域结果:owl:Thing

    <EquivalentClasses>
        <Class IRI="#A"/>
        <DataExactCardinality cardinality="1">
            <DataProperty IRI="#hasName"/>
            <Datatype abbreviatedIRI="xsd:string"/>
        </DataExactCardinality>
    </EquivalentClasses>
    <EquivalentClasses>
        <Class IRI="#B"/>
        <DataExactCardinality cardinality="1">
            <DataProperty IRI="#hasName"/>
            <Datatype abbreviatedIRI="xsd:string"/>
        </DataExactCardinality>
    </EquivalentClasses>
    

从选项 1 中,我从 HermiT Reasoner 得到了 3 个结果:A, B, and owl:Thing,但是当我读到这个帖子 https://stackoverflow.com/questions/23724182/rdfs-same-property-for-multiple-domains他说我写了错误的语义,应该使用owl:unionOf.

然后我尝试像选项2那样表达类,但是当我再次推断时,我只得到了类owl:Thing, not A or B.

使用选项 3,我将类设置为等效类公理中的域。它可以工作,但我无法使用强大的推理工具来推断:

Set<OWLClass> classes = reasoner.getDataPropertyDomains(hasNameProperty, false).getFlattened();

第一点也是最重要的一点:属性的域和范围hasNameOWL 语义是not限制hasName!相反,这些公理用于推断通过属性相关的个体类型hasName.

Option 1

关于您的示例,它为该属性声明了多个域hasName,这意味着这些类的交集,即A and B.

Option 2

这确实是最常见的方式。

Option 3

我不明白你在这里做什么。但在 OWL 中,开放世界假设 (OWA) 成立,这意味着未知信息不被认为是错误的。这只是未知的。因此,如果您有个人a只与个人有关x通过财产hasName标准的 OWL 推理机不能(也不能)得出这样的结论:a属于班级A.

注意,OWL 中域公理的语义等价 subClassOf 公理是(伪曼彻斯特语法)

hasName Domain: A

(hasName some owl:Thing) SubClassOf: A

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 OWL 中的同一属性中定义多个域/范围 的相关文章

  • 如何将嵌入的 Blazegraph 内容转储到 RDF 文件?

    I have 创建了 blazegraph RDF4J 存储库和连接 https wiki blazegraph com wiki index php Sesame API Tutorial在斯卡拉中 val props new Prope
  • 如何推断两个人之间的财产是兄弟

    我需要推断一个人是另一个人的兄弟 如果他们有同一个父亲 所以 如果我有这个 巴特有父亲荷马 丽莎有父亲荷马 Because Bart and Lisa有同一个父亲 我想推断 丽莎有弟弟巴特 有没有什么方法可以利用任何属性特征来做到这一点 使
  • SPARQL - 查找具有最相似属性的对象

    假设有一个人的 RDF 数据库 每个人都有许多三元组来定义这个人的朋友 这么多 person x hasFriend otherPerson 如何找到拥有最相似朋友的人 我是 SPARQL 的新手 这似乎是一个非常复杂的查询 基本上 结果将
  • 组图模式在 SPARQL 中如何工作

    首先 我不知道这是否真的称为组图模式 反正 请看看这个查询 select x y where x rdf type rs Recommendable union xd rs doesntexist y 有no rs doesntexist但
  • 在构建语义 Web 应用程序时,OWL 是如何实际使用的?

    我一直在阅读有关语义 Web 技术 例如 RDF 和 OWL 的内容 并且对在现有关系数据库之上构建 RDF 三重存储语义数据库的可能性很感兴趣 这只是一项研发活动 看看我能做什么 我喜欢的样子OWLIM http www ontotext
  • 限制 Factforge sparql 端点使用的图表

    Using http www sparql org sparql html http www sparql org sparql html运行此查询 prefix oxprop
  • 两个本体之间的映射

    我如何使用 owl sameas 来链接两个本体 如果我有本体A c rdf type owl Class 和本体B d rdf type owl Class 我想将两个本体与共享概念 c 和 d 联系起来 我读过有关 owl sameas
  • 使用 SPARQL 提取 dbpedia 实体的层次结构

    我正在尝试使用以下方法提取 DBpedia 资源的 Wikipedia 类别或 Yago 分类的层次结构SPARQL端点 http dbpedia org sparql 例如 我想以实体的分层形式找出所有可能的类别和类 例如 http db
  • rdf:seeAlso 和 rdfs:seeAlso 之间的区别

    有什么区别rdf seeAlso and rdfs seeAlso 当我可以使用时rdf seeAlso当我可以使用时rdfs seeAlso 你能举出一些例子吗 首先 请注意rdf and rdfs分别是常用于引用 RDF 语法和 RDF
  • 使用 owl:Class 前缀进行 rdflib 和 xml 序列化

    我想使用owl 我的 RDF 本体的 XML 序列化中的前缀 使用 rdflib 版本 4 1 1 不幸的是我仍然得到序列化rdf Description标签 我查看了有关将命名空间绑定到图表的答案RDFLib XML 序列化中的命名空间前
  • SPARQL 为缺失字段生成值

    我正在尝试编写一个 SELECT 它为我提供表中的所有值 我有可选值 我希望用标准值填充它们 如果它们不存在 这是我的代码 SELECT WHERE a nmo hasObject nm coin OPTIONAL a nmo hasAut
  • 概念数据建模:RDF 是正确的工具吗?其他解决方案?

    我正在规划一个系统 该系统结合了各种数据源 并允许用户对这些数据源进行简单的查询 系统的一部分需要充当抽象层 了解所有连接的数据源 用户不应该 需要 了解底层数据 提供者 数据提供者可以是任何东西 关系 DBMS 错误跟踪系统 气象站 它们
  • SHACL 规则中的多路径和存在量化(我应该使用 sh:oneOrMorePath 吗?)

    我想了解如何处理 SHACL 规则中的多路径和存在量化 让我用一个示例本体来举例说明我的问题 本体包括 Approve Legal Result Man 和 Machine 类 所有类都是不相交的 它有两个属性 has theme 和 co
  • 内容自动分类

    我正在开发一个脚本 从我所属的特定 meetup com 组的消息存档中提取消息 http www meetup com opencoffee messages archive http www meetup com opencoffee
  • 使用 sparql 将 rdf 有序列表从一个图移动到另一个图

    我在 Fuseki 数据集中的 rdf 知识图中有一个列表 我可以用类似的方法获取列表的元素 select webpage where graph
  • Freebase RDF 转储的 C# 解析仅产生 1150 万个 N-三元组,而不是 19 亿个

    我正在构建一个 C 程序来读取 RDF 数据Google Freebase 数据转储 https developers google com freebase data 首先 我编写了一个简单的循环来简单地读取文件并获取三元组的计数 然而
  • 使用 Jena 查询维基数据

    目前 Wikidata 有一个 SPARQL 端点 https query wikidata org https query wikidata org 我想使用 Jena 3 0 1 查询此网站 我使用以下代码 但收到错误消息 端点返回的
  • Sparql 键与不同值

    我有一个返回重复项的 sparql 查询 我希望它仅在其中一个值 subjectID 上清理它们 与 DISTINCT 不同的是 DISTINCT 似乎为所选值的组合找到唯一的值 而不是仅为其中一个参数 我看到有人在这里提出 group b
  • rdf:type 令人费解的语义

    虽然我已经创建了几个本体并且拥有一些专业知识 但我有一段时间对 rdf type 的语义不清楚 W3C 规范规定 rdf type is an instance of rdf Property that is used to state t
  • 将任何 URI 类型的 CURI 字符串表示形式转换为真正的 CURI 或 IRI

    我有这样的三元组 其中对象是anyURICURIe 的类型化字符串表示形式 我想将对象构造为真正的 CURIe 或 IRI 的三元组 prefix source

随机推荐