如何在耶拿添加合格的基数限制?我不能使用,createCardinalityQRestriction因为它OntModelSpec是OWL的第一个版本,而不是OWL2.在ModelFactory的createOntologyModel中,有没有办法创建OWL2本体?我需要一个类表达式
JeVysledkom 正好 1 Kolik_Fazovy
我试过使用这段代码:
OntModel ontModel = ModelFactory.createOntologyModel();
OntClass ret = ontModel.createCardinalityQRestriction(null, ontProperty, cardinality, ontClass2 );
ontClass.addSuperClass(ret);
Run Code Online (Sandbox Code Playgroud)
但我得到这个例外:
com.hp.hpl.jena.ontology.ProfileException:尝试使用当前语言配置文件不支持的语言构造CARDINALITY_Q:OWL Full
在OWL-DL本体中,考虑具有域D和范围R的属性p,其中D对p的限制具有恰好为1的基数:
d SubClassOf p 恰好 1个事
- (D⊑= 1 p.Thing)
那么我们可以推断p是一个函数属性,因为D类型中的每个d都只有p的一个值吗?如果这是正确的,推理人可以推断出这种知识吗?
semantic-web owl manchester-syntax protege description-logic
我想查询Nicotine(产品)的所有子类.
结果必须是(鼻形式尼古丁,Orophangengeal来自ni ..(4项)..见图)我尝试通过rdfs查询:subClassOf +和owl:equivalentClass +但是没有工作试试这个例子
这里的代码相同.
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT * WHERE
{
?s owl:equivalentClass+ ?o . # and try ?s rdfs:subClassOf ?o
filter(?s=<http://snomed.info/id/323283001>)
}
Run Code Online (Sandbox Code Playgroud)
来自protege的这张图片 谢谢.
第一个查询很难解释和做,因为这么大的文件有些IRI不是subClass而不是等价的类,我改变了从这里查询的方式
<owl:Class rdf:about="http://snomed.info/id/323283001">
<rdfs:label xml:lang="en">Nicotine (product)</rdfs:label>
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<rdf:Description rdf:about="http://snomed.info/id/420383004"/>
<rdf:Description rdf:about="http://snomed.info/id/425288007"/>
<owl:Restriction>
<owl:onProperty rdf:resource="http://snomed.info/id/127489000"/>
<owl:someValuesFrom rdf:resource="http://snomed.info/id/68540007"/>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
Run Code Online (Sandbox Code Playgroud)
我想查询所有id(id/420383004,id/425288007,id/127489000和id/68540007)
来自owl:Class rdf:about ="http://snomed.info/id/323283001"请告诉我一些想法.谢谢
我对使用域,范围和限制来定义本体的正确方法存在疑问.如果我想表示"学生必须只有一个身份证明",我认为我可以做以下其中一项:
定义属性的域和范围(例如,:hasId rdfs:domain :Student; rdfs:range :Identification)并使属性起作用.
定义属性并在学生班级中创建限制:"hasId恰好1个标识".
在语义方面,这些意味着同样的事情吗?如果是这样,在惯例或最佳做法方面是否有首选方案?最后,这同样适用于数据类型属性吗?我可以简单地定义域/范围和/或我应该在类中创建限制以将其与属性链接吗?
我有一个 OWL 2 本体,其中包含属于某个类的多个命名个体,这些个体需要具有相同的对象属性和相同的值。
我想在“类上”进行此属性断言,以便推理器可以推断出其所有成员所拥有的属性,因此不需要为每个成员进行显式断言。(获得类似于基于类的面向对象的属性继承)
一个简单的例子是包含属于该类的milkBottle1个体的milkBottle2本体。它们都应该具有value 的属性,但显然这是类的所有成员共享的东西,并且只应该显式断言一次。milkBottle3MilkcontainsNutrientproteinMilk
我只在这里发现了同样的问题,但唯一的答案提出了一个不适当的解决方案:使该类成为属性限制类的子类。这导致推理器推断该类等同于 Nothing 类(因为不存在具有此类属性的命名个体),从而由于向其分配个体而造成不一致。
我知道这是一个简单的任务,使用 SWRL 规则,例如
牛奶(?a) → 含有营养素(?a, 蛋白质)
但如果可能的话我想避免它们。
如果没有 OWL 2 中的解决方法,这可能吗?如果可以的话,该怎么办呢?
在描述逻辑中,"someValuesFrom"和"allValuesFrom"之间有什么区别?换句话说,(有限存在量化)和(价值限制)之间的差异.
例如,考虑一下:
Δ= {a,b,c,d,e}
ext(B)= {<c,d>}
ext(R)= {<a,b>,<a,c>,<d,c>,< C,E>}
那么以下是什么区别?
ext(∃R.B)= ?
ext(∀R.B)= ?
有没有办法简化somevaluefrom和allvalues的概念?
我正在使用Protégé4.3创建一个简单的本体,并尝试创建一个模型,以使C类的每个实例对于给定的属性p都具有特定的值v,它是V类的实例。我可以使用公理来得到这个推论
C subClassOf(p 值 v)
但我想我希望能够按照
C subClassOf(p 一些 V)
因为我实际上希望C的每个实例都与V的每个实例相关。
我的示例是汽车和动作-我想为汽车创建一组动作。当我创建汽车的新实例时,我希望每个实例都有一套动作。如果我添加了新的动作实例,我希望所有汽车实例都能反映出它们所有相关的动作。
为了进一步说明,我定义了Auto类和两个子类:Car和Truck。我还定义了一个Action类和一个子类TruckAction。我定义了具有域自动和范围动作的hasAction属性,以关联自动和动作。我进一步创建了几个不同类型的人:
当我将Car 设为(hasAction值Accelerate)的子类时,我可以看到ChevyMalibu具有推断的对象属性hasAction Accelerate,但这似乎类似于对对象属性断言进行硬编码。我想为ChevyMalibu推断所有的汽车动作,以及为F150推断所有的 TruckActions 。我不太确定为什么做类似使Car成为(hasAction和Action的子类)之类的事情不会使我到那里。
我认为对 …
我创建了这个本体,其中包含两个类:血糖和服务。Blood-Sugar有两个数据属性:范围为 xsd:int 的hasValu和范围为 xsd:string 的hasStatut 。对象属性triggerService以“血糖”为域,以“服务”为范围。
\n\n我想用这个规则推断数据属性断言:
\n\n\n\n\nBlood_Sugar(?x) \xe2\x88\xa7 hasValue(?x, ?y) \xe2\x88\xa7 swrlb:greaterThan(?y, 126) \xe2\x88\xa7 swrlb:lessThan(?y, 500) \ xe2\x86\x92 hasStatut(?x, "高")
\n
然后我想用这个规则推断一个新的对象属性:
\n\n\n\n\nBlood_Sugar(?x) \xe2\x88\xa7 hasStatut(?x, "高") \xe2\x88\xa7 Service(?s) \xe2\x86\x92 triggerService(?x, ?s)
\n
然而,当我创建规则应适用的个体时,推理机并没有给出我想要的结果。这是演示这种行为的本体:
\n\n<?xml version="1.0"?>\n\n\n<!DOCTYPE rdf:RDF [\n <!ENTITY owl "http://www.w3.org/2002/07/owl#" >\n <!ENTITY swrl "http://www.w3.org/2003/11/swrl#" >\n <!ENTITY swrlb "http://www.w3.org/2003/11/swrlb#" >\n <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >\n <!ENTITY rdfs …Run Code Online (Sandbox Code Playgroud) 我有一个具有以下等价的 OWL 类(采用曼彻斯特表示法):
A
and not (hasB some
(B
and (hasC some C)
and (hasD some D)
and (hasList some
(OWLList
and (hasContents some
(OWLList
and (hasContents some
(E
and (hasValue some integer[< 200])
and (hasType value "xsd:integer"^^string)))
and (hasNext some EmptyList)))
and (hasNext some EmptyList)))))
我希望对此类强制执行封闭世界推理,以便任何不满足语句后剩余条件的个人都not将成为此类的成员。
为此,我尝试使hasC,hasD和hasList属性具有功能性,以便 OWL 知道不可能有这些属性的其他实例附加到此类。
不幸的是,该hasB属性可能会多次出现,因此无法对其进行限制。为了尝试“关闭”班级的这一部分,我oneOf在班级中添加了一条声明B,指定班级可以接受的所有可能的个人B。
在我看来,函数属性和oneOf语句的这种组合应该成功“关闭”该类。谁能告诉我我做错了什么?
我正在使用http://owl-workshop.man.ac.uk/acceptedLong/submission_12.pdf提出的 OWLList 类和相关属性。
非常感谢。
在OWL 2 QL 的 W3C 解释中提到:
特别是,此配置文件(即 OWL 2 QL)包含 RDFS 和 OWL 2 DL 的交集。
这句话让我很困惑,我想知道是否有人可以澄清它。这是否意味着 OWL 2 QL 是 RDFS 的子集?或者这是否意味着它是 RDFS 的更受限制的版本(因此有更多的公理来表达这些限制)。
假设我有一个知识库,其中仅使用以下公理:rdfs:domain、rdfs:range、rdfs:subclassOF、rdf:type、owl:ObjectProperty 和 owl:DatatypeProperty。关于本知识库的语言我能说些什么?我可以说它是用 RDFS、OWL 2 QL 或两者来表达的吗?
是这样的情况吗,如果我看到一个资源既是某个东西的实例(rdf:type)又是一个类,我会说它是 RDFS,如果没有既是实例又是类的资源,我会说它是 RDFS OWL 2 QL 里也有吗?
在OWL 2的规范中,关键公理的部分说明:
关键公理的语义是特定的,因为这些公理仅适用于通过名称在本体中明确引入的个体,而不适用于未命名的个体(即存在通过存在量化暗示存在的个体).这使得关键公理等同于DL安全规则的变体.因此,关键公理通常不会影响基于类的推理,例如包含层次结构的计算,但它们将在回答关于个体的查询中起作用.
然后它继续显示一组公理的例子,这些公理显然需要得出结论,但由于该规则,规范不承认.
这个决定背后的原因是什么?