我想我快要疯了!我已经遵循了 Owl 和 Protege 的各种教程,但仍然无法找出答案。用例很简单。我定义了一个名为 \xe2\x80\x98Person\xe2\x80\x99 的类。我定义了一个名为 hasFirstName 的数据属性。我已向 Person 添加了 \xe2\x80\x98subclass of \xe2\x80\x99 限制,如下所示:\xe2\x80\x98hasFirstName 恰好是 1 个字符串\xe2\x80\x99。我还添加了一个名为 Alex 的 Person 类型的个人,但没有添加 hasFirstName 属性。我希望推理机会抱怨,因为我指定了基数 1,并断言 Alex 是一个人,但没有将属性值添加到 Alex 个人,但推理机不会抱怨。但是,如果我添加两个语句,例如 hasFirstName \xe2\x80\x98Alex\xe2\x80\x99 和 hasFirstName \xe2\x80\x98John\xe2\x80\x99 那么我会收到抱怨。我做错了什么?任何帮助将不胜感激,谢谢。
\n我想使用其sparql端点从dbpedia下载一些实体配置文件.我的查询是:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbpedia: <http://dbpedia.org/ontology/>
select ?x where {?x rdf:type dbpedia:Drug} LIMIT 100
Run Code Online (Sandbox Code Playgroud)
上述查询的结果是实体配置文件的一些链接.对于解除引用,我必须单击每个链接.我想取消引用所有实体配置文件并将其另存为本地计算机中的数据集.我想稍后在我的项目中使用这个数据集.那么我如何下载这个实体配置文件?有sparql命令吗?
我正在寻找一个 SPARQL 查询,它可以返回 OWL 层次结构中指定子类的位置。我研究了几个例子,但我能达到的最好结果是计算指定超类与其子类之间的相对路径(感谢 Joshua Taylor)。相反,我需要计算给定子类的“绝对”深度。
我的本体包含几个顶级类,每个类后面都有一个单独的子类树。这是我的 OWL 的一部分(使用 rdfcat 实用程序转换为 TTL):
@prefix : <http://www.semanticweb.org/administrator/ontologies/2014/7/untitled-ontology-9#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
:depression a owl:Class ;
rdfs:subClassOf :pit .
:pit a owl:Class ;
rdfs:subClassOf :on_the_road .
:on_the_road a owl:Class ;
rdfs:subClassOf :traffic_accident .
:traffic_accident a owl:Class .
Run Code Online (Sandbox Code Playgroud)
在这种情况下,对于给定的depression类,我期望得到3,pit-> 2,on_the_road-> 1,traffc_accident(顶级类) -> 0 。
我正在使用 Protege 4.2.0。
当我编写一个新的本体时,我可以将它保存到我机器上的本地文件中,例如 GreatNewUpperOntology.owl
如果我现在想将该本体导入新的本体,我可以使用 Active Ontology 选项卡、Ontology 导入面板(下面板)、Direct Imports +、“使用特定文件导入本体”在硬盘上找到该文件
GreatNewUpperOntology 正确导入,但显示的名称如下:
untitled-ontology-93 ( http://www.semanticweb.org/myname/ontologies/2014/9/untitled-ontology-93 )
问题:有没有办法让我使用我在自己的计算机上给文件提供的描述性名称将我的本体保存到 Semanticweb.org 站点,例如“GreatNewUpperOntology”?
谢谢!
我正在研究本体,我需要告诉protege,一个类x只能具有值y和z。
我想要类似的东西:
Vegetable rdf:type owl:Class;
owl:oneOf (carrot corn).
Run Code Online (Sandbox Code Playgroud)
我必须直接编辑文件,还是可以通过Protege进行编辑?
我有一个 OWL 2 本体,其中包含属于某个类的多个命名个体,这些个体需要具有相同的对象属性和相同的值。
我想在“类上”进行此属性断言,以便推理器可以推断出其所有成员所拥有的属性,因此不需要为每个成员进行显式断言。(获得类似于基于类的面向对象的属性继承)
一个简单的例子是包含属于该类的milkBottle1个体的milkBottle2本体。它们都应该具有value 的属性,但显然这是类的所有成员共享的东西,并且只应该显式断言一次。milkBottle3MilkcontainsNutrientproteinMilk
我只在这里发现了同样的问题,但唯一的答案提出了一个不适当的解决方案:使该类成为属性限制类的子类。这导致推理器推断该类等同于 Nothing 类(因为不存在具有此类属性的命名个体),从而由于向其分配个体而造成不一致。
我知道这是一个简单的任务,使用 SWRL 规则,例如
牛奶(?a) → 含有营养素(?a, 蛋白质)
但如果可能的话我想避免它们。
如果没有 OWL 2 中的解决方法,这可能吗?如果可以的话,该怎么办呢?
如何使用 OWL 本体中的注释属性创建已定义的类?
\n\n目前,我已经使用对象属性hasSubject创建了一个定义的类创建了一个定义的类。
\n\n
定义的类:
\n\n
我更愿意通过重新使用 DC-Terms 集中的注释“Subject”而不是自定义对象属性来创建此类。
\n\n是否可以创建一个带有注释属性的定义类?\n我如何在 Prot\xc3\xa9g\xc3\xa9 中做到这一点?
\n我有这样的代码:
enum ElementKind {
BASIC (0),
INTERMEDIATE (1),
COMPLETE (2);
}
class Element {
private ElementKind elementKind;
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
我正在为此代码构建 RDF/XML(本体)表示:
enum ElementKind {
BASIC (0),
INTERMEDIATE (1),
COMPLETE (2);
}
class Element {
private ElementKind elementKind;
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
表示该枚举的最佳方式是什么?
假设我们有两个名为People和 的类Disease。这些类通过对象属性相关has。
:People :has :Disease
Run Code Online (Sandbox Code Playgroud)
People有子类(或个体)John,并且Disease有子类(或个体)Cancer。
:John a :People
:Cancer a :Disease
Run Code Online (Sandbox Code Playgroud)
如何通过推理得到这些子类之间的关系呢?
:John :has :Cancer
Run Code Online (Sandbox Code Playgroud) 我已阅读 W3C 文档,但我不明白它们为何不同。我将在 W3C 文档中给出它们的定义:
功能属性是对于每个实例 x 只能具有一个(唯一)值 y 的属性。
IFP (owl:InverseFunctionalProperty) :
如果一个属性被声明为反函数,那么属性声明的对象唯一地确定了主体(某个个体)。
这里还有一个区别:函数属性的一个区别是,对于反函数属性,不需要额外的对象属性或数据类型属性公理:反函数属性是根据定义对象属性。您可以在上面的 IFP 链接中看到这些词。
但是我不明白,你能不能给我详细解释一下?
owl ×10
protege ×4
rdf ×3
semantic-web ×3
ontology ×2
protege4 ×2
sparql ×2
cardinality ×1
inference ×1
inheritance ×1
reasoning ×1
restrictions ×1
xml ×1