我想我仍然对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
的成员,而不显式地做出断言吗?谢啦
感谢@horcrux提供的提示。最后的工作是将属性声明为owl:FunctionalProperty
。编辑属性声明以:
:prop1 a owl:DatatypeProperty, owl:FunctionalProperty .
:prop2 a owl:DatatypeProperty, owl:FunctionalProperty .
这不需要为每个单独的声明添加额外的限制。
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设置构建了一个新实例)到过滤器,但我需要从请求中以某种方式获取用户的信息,以便能够找出它是否是白
为什么下面的代码不将输出限制为前三个字符? 输出: 我希望输出为: