当前位置: 首页 > 知识库问答 >
问题:

关于OWL基数限制的推理

苏涛
2023-03-14

我想我仍然对OWL公理有一个基本的误解:(。

下面是我创建的一个小测试本体论:

@prefix xsd:      <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:     <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:      <http://www.w3.org/2002/07/owl#> .
@prefix :         <http://foobar.com/test/> .

: a owl:Ontology .

:prop1 a owl:DatatypeProperty .
:prop2 a owl:DatatypeProperty .

:Class1 owl:equivalentClass [
    a owl:Restriction ;
    owl:onProperty :prop1 ;
    owl:cardinality "1"^^xsd:int
  ] .

:Ind1 a owl:NamedIndividual ;
  :prop1 "value1"^^xsd:string .

:Class2 owl:equivalentClass [
    a owl:Restriction ;
    owl:onProperty :prop2 ;
    owl:minCardinality "1"^^xsd:int
  ] .

:Ind2 a owl:NamedIndividual ;
  :prop2 "value2"^^xsd:string .

当我在Protege中运行hermitreasoner时,我得到了:Ind2的预期结果,即它是:Class2的成员。但是,就成为:Class1的成员而言,我对:Ind1没有同样的感受。

我怀疑这与开放世界的假设有关,并且有可能:Ind1可能还有另一个:prop1断言。有几个问题:

  • 我诊断的问题正确吗?
  • 我能得到一个例子,说明我如何让我的目标隐士推理: Ind1: Class1的成员,而不显式地做出断言吗?

谢啦

共有2个答案

宁飞宇
2023-03-14

感谢@horcrux提供的提示。最后的工作是将属性声明为owl:FunctionalProperty。编辑属性声明以:

:prop1 a owl:DatatypeProperty, owl:FunctionalProperty .
:prop2 a owl:DatatypeProperty, owl:FunctionalProperty .

这不需要为每个单独的声明添加额外的限制。

单于经纬
2023-03-14

OWL语义是在开放世界假设下定义的,因此您无法检查某个属性的基数是否正好为N,因为即使没有声明,也可能存在其他属性实例。

更准确地说,这些是你可以做的检查:

 类似资料:
  • 考虑一个具有以下公理(OWL:class C1)和(OWL:class P)的本体,一个对象属性(RDFS:domain observes C1)(RDFS:range observes P)以及一个个体(RDF:type P P) 然后,通过创建具有限制(观察C2 p)的类C2(RDFS:subclassof C2 C1)来限制类C1 现在,当我创建一个新的个体(rdf:type x owl:t

  • 我刚认识猫头鹰。我在这页http://dior.ics.muni.cz/~makub/owl/中读到了一个通用量化示例。

  • 例如,我有一个Fruit和vitamin类的本体论。水果类只有橘子和香蕉为亚类,维生素类只有维他命C和维他命B为亚类。这些子类都是互不相交的。 我还提供了一个object属性,类Fruit作为域,类Vitamin作为范围。 然后,我定义了限制条件:“橘子提供一些维他命C”和“香蕉提供一些维他命B”。

  • 我想我快疯了!我已经学习了Owl和Protege的各种教程,但仍然无法找到答案。用例很简单。我定义了一个叫‘人’的类。我定义了一个名为HasFirstName的数据属性。我给Person添加了一个'subclass of'restriction',如下所示:'has firstname确切1 string'。我还添加了Person类型的名为Alex的个人,但没有添加hasFirstName属性。我

  • 假设我的用户订阅了一个计划。那么,是否可以使用SpringCloudGateway根据订阅计划对用户请求进行分级限制?考虑到白银和黄金的计划,它是否会让白银订阅的充值率/容量为5/10,黄金订阅的充值率/容量为50/100? 我天真地想到传递RedisRateLimiter的新实例(见下文,我用5/10设置构建了一个新实例)到过滤器,但我需要从请求中以某种方式获取用户的信息,以便能够找出它是否是白

  • 为什么下面的代码不将输出限制为前三个字符? 输出: 我希望输出为: