- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在Protégé中实现一个OWL-ontology,它包含两个类:s1
和s2
,都是System
的实例> 类。这两个类是通过连接类s1_s2
连接起来的,其中包含属性omega
。该属性必须根据以下规律取值:
omega = 1 * s1.complete
如何在 Protégé 中实现它,这样我以后可以在 SWRL-rule 中使用它?
最佳答案
通常,您首先要定义所需的类和属性:
此时,您可以添加一些公理来管理系统必须如何交互、属性如何工作等。例如,您可以在属性上声明域和范围。这是 hasS2 属性的域和范围:
你可能还想说每个InterSystem只有一个关联S1和S2:
要加入数学约束,您实际上需要 SWRL;您将无法使用其他类型的 OWL 公理来强制执行约束。您想要的规则如下所示。如果您在谓词上声明域和范围,那么您将不需要出现在此规则中的所有类型谓词,因为它们可以从属性使用中推断出来。
S1(?s1) ∧ InterSystem(?i) ∧ hasS1(?i,?s1) ∧ hasComplete(?s1,?complete) multiply(?omega,1,?complete) → hasOmega(?i,?omega)
这里的乘法实际上似乎是多余的,因为你要乘以 1,所以 omega = alpha,在这种情况下,该规则的头部可能只是 hasOmega(?i,?alpha)。在 Protégé 中,规则如下所示:
(在我使用的 Protégé 版本(不是最新版本)中,我必须使用 Window > Create New Tab 来创建 Rules 选项卡,然后 Window > Views > Ontology Views >将规则列表添加到界面的规则。)
这个 OWL 本体的 RDF 表示的 Turtle 序列化(您可以保存并加载到 Protégé)是:
@prefix : <http://stackoverflow.com/q/21499126/1281433/systems#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix swrl: <http://www.w3.org/2003/11/swrl#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix swrlb: <http://www.w3.org/2003/11/swrlb#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
<urn:swrl#s1> a swrl:Variable .
:hasComplete a owl:DatatypeProperty .
[ a swrl:Imp ;
swrl:body [ a swrl:AtomList ;
rdf:first [ a swrl:ClassAtom ;
swrl:argument1 <urn:swrl#i> ;
swrl:classPredicate :InterSystem
] ;
rdf:rest [ a swrl:AtomList ;
rdf:first [ a swrl:ClassAtom ;
swrl:argument1 <urn:swrl#s1> ;
swrl:classPredicate :S1
] ;
rdf:rest [ a swrl:AtomList ;
rdf:first [ a swrl:IndividualPropertyAtom ;
swrl:argument1 <urn:swrl#i> ;
swrl:argument2 <urn:swrl#s1> ;
swrl:propertyPredicate :hasS1
] ;
rdf:rest [ a swrl:AtomList ;
rdf:first [ a swrl:DatavaluedPropertyAtom ;
swrl:argument1 <urn:swrl#s1> ;
swrl:argument2 <urn:swrl#complete> ;
swrl:propertyPredicate :hasComplete
] ;
rdf:rest [ a swrl:AtomList ;
rdf:first [ a swrl:BuiltinAtom ;
swrl:arguments [ a rdf:List ;
rdf:first <urn:swrl#omega> ;
rdf:rest [ a rdf:List ;
rdf:first 1 ;
rdf:rest ( <urn:swrl#complete> )
]
] ;
swrl:builtin swrlb:multiply
] ;
rdf:rest ()
]
]
]
]
] ;
swrl:head [ a swrl:AtomList ;
rdf:first [ a swrl:DatavaluedPropertyAtom ;
swrl:argument1 <urn:swrl#i> ;
swrl:argument2 <urn:swrl#omega> ;
swrl:propertyPredicate :hasOmega
] ;
rdf:rest ()
]
] .
:S2 a owl:Class ;
rdfs:subClassOf :System .
<urn:swrl#omega> a swrl:Variable .
:S1 a owl:Class ;
rdfs:subClassOf :System .
:InterSystem a owl:Class ;
rdfs:subClassOf [ a owl:Restriction ;
owl:onClass :S1 ;
owl:onProperty :hasS1 ;
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
] ;
rdfs:subClassOf [ a owl:Restriction ;
owl:onClass :S2 ;
owl:onProperty :hasS2 ;
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
] .
<urn:swrl#complete> a swrl:Variable .
<http://stackoverflow.com/q/21499126/1281433/systems>
a owl:Ontology .
:hasS2 a owl:ObjectProperty .
:hasOmega a owl:DatatypeProperty .
:System a owl:Class .
:hasS1 a owl:ObjectProperty .
<urn:swrl#i> a swrl:Variable .
这是一个好的开始,但值得看看它是如何运作的。要查看可以应用规则的地方,我们需要一些实例数据和推理器。你提到你可以在 Protégé 中使用 Pellet,所以我们都准备好了。对于一些实例数据,让我们创建 InterSystem,它的 S1,并分配 S1 的完整值。
您需要从 Reasoner 菜单中选择 Pellet reasoner,然后选择 Reasoner > Start Reasoner。此时,您可以对“hasOmega value 42”运行 DL 查询,以确认个人具有所需的属性(确保选中右侧的“个人”复选框):
如果您导航到 intersystem 个体,您可能不会看到推断的值。要显示它,请转到 Reasoner > Configure... 并检查 Data Property Assertions 选项:
之后,您可能需要重新启动推理器(Reasoner > None;Reasoner > Pellet;Reasoner > Start Reasoner),但之后您将能够看到推断的值:
关于owl - Protégé-OWL/SWRL 中的本体属性定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21499126/
我正在使用 Protege v4.3 制作本体。 我有一个关于 OWL 本体和 DL 查询的问题。 例如,在 Pizza 本体中, http://owl.cs.manchester.ac.uk/co-
我已经用Protege用OWL编写了一个本体论。但是我找不到在类之间创建关系的解决方案。当然,有一个“子类”关系,但是我想定义自己的关系。所以我有一个类层次结构(由“子类”-关系组成),但我想创建一个
我正在使用等同于 dbpedia-owl:Organisation 的专有 rdfs:type 在我的 SPARQL 查询中选择(显然)组织: SELECT ?s WHERE { ?s
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
我正在建立一个旅游网站,并希望在其中使用语义网。我也对使用 RDF 本体感兴趣。 所以,我想知道是否有人可以告诉我,是否存在任何关于此的内容,如“这家酒店位于 Foo”或“这家餐厅在 Foo 社区的评
我正在尝试使用 Jena API 复制 OWL 本体,每次都向该本体添加一个新语句。但一开始它应该得到原始本体,没有新的语句。 以下代码每次都会在前一个语句之上添加一个新语句。 this runs i
我正在使用具有以下简单本体的 Protege 4.3(也尝试过 5-beta): Class: Person Class: Man SubClassOf: Person Ind
我在 Protege 中为一个小项目创建了一个本体,我在 csv 文件中有与域相关的数据集。 Protege中如何将类的所有个体都导入到本体中,使所有的个体都自动添加到本体中? 最佳答案 proteg
我正在尝试基于以 XMI 格式呈现的不同 UML 文件资源开发 OWL 本体。现在通过互联网阅读了一段时间,似乎几乎所有可用的工具或方法都已过时,即使尝试其中的一些工具或方法,它们也无法提供预期的结果
我正在尝试制作一个关于我所在地区运行比赛(10 公里、半程马拉松、马拉松)的语义 Web 应用程序。更具体地说,我想收集和发布(在 RDF 中)关于比赛、参与者和结果的数据,并合并类似的数据。过去几周
过去几个小时,我在谷歌上搜索了有关如何使用 virtuoso 服务器(开源版本)配置 RDF 存储的教程或指南。 我有一个用 Protégé 软件创建的 RDF 文件。如何将此文件添加到 virtuo
我正在使用 SUMO我想用 SPARQL 查询的本体。 SUMO 中的一个典型条目,例如,一个城市,看起来像这样: The City of Madrid in Spain. [...
我是第一次使用 OWL API(出于兼容性原因,使用 3.4.8),并且我正在尝试加载作为 YAGO 知识库 (http://resources.mpi-inf.mpg.de/yago-naga/ya
我已经完整下载了 wordnet2.0,但我不知道如何将它用作图表,因为它由多个 RDF 文件组成。我想在 Eclipse 中使用 wordnet2.0 本体作为图形。以下是我用于将本体加载为图表的代
我这学期有一个实践研讨会,我想在 Android 应用程序上使用本体。我选择 Protege owl ontology 作为本体 API,这个工具在普通的 Java 项目中工作。但是当我试图在 And
首先,我试图用来自 Schema.org 的属性定义数据库表,例如,例如,我有一个名为“JobPosting”的表,它或多或少具有与 http://schema.org/JobPosting 中定义的
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我正在尝试制作一个关于我所在地区运行比赛(10k、半程马拉松、马拉松)的语义 Web 应用程序。更具体地说,我想收集和发布(在 RDF 中)有关比赛、参与者和结果的数据,并合并类似的数据。在过去的几周
我在 protege 中创建了一个文件系统本体。我已将文件创建日期的范围设置为日期时间,如下面的代码所示。 Time when the file was last accessed.
我正在尝试使用来自 javacode 的 sparql 查询 DBPedia对于某些查询,它可以完美地工作,而对于另一个它不起作用。我认为我的查询没有错误,因为我已经在 DBPedia aparql
我是一名优秀的程序员,十分优秀!