我需要在Protégé中实现一个OWL-ontology,它包含两个类:S1
和S2
,这两个类都是System
类的实例。这两个类由连接类S1_S2
连接,该连接类包含属性omega
。该财产必须根据下列法律取值:
欧米茄=1*S1。完成
我如何在Protégé中实现它,这样我就可以在将来的SWRL-rule中使用它了?
通常,首先定义所需的类和属性:
在这一点上,您可以添加一些公理来管理系统必须如何交互、属性如何工作等。例如,您可以在属性上声明域和范围。下面是hasS2属性上的域和范围:
您可能还想说,每个系统间正好有一个关联的S1和S2:
@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 .
如果导航到intersystem个体,则可能看不到推断出的值。要显示它,请转到Reasoner>Configure…并检查Data Property Assertions选项:
之后,您可能需要重新启动reasoner(reasoner>None;reasoner>Pellet;reasoner>Start reasoner),但之后您将能够看到推断出的值:
在我看来,类的定义在Protégé5.2.0中不能正常工作。但愿这是我这边的误会。 事先谢谢你,
我正在尝试执行一个带有基数限制的查询。查询看起来像 A类和(roleA最小2类B) 但这返回一个空集。另一方面,当我执行查询时 更具体地说,我有类Team、Player和Position,以及对象属性employs(与Team和Player相关)和hasPosition(与Player和Positions相关)。我正在尝试进行查询 球队和雇用的最小2人(球员和拥有一些{striker**}**)
我刚刚开始使用OWL API,以便生成一些使用其他本体的示例。情况是这样的:我有两个本体A和B,它们有很多元素,从其他本体导入。这两个本体是一个标准的一部分,因此它们是密切相关的。我需要生成一个标准的元素示例,它涉及导入这两个本体,并使用和组合来自这两个本体的类和元素,但我不知道如何开始。我尝试过使用API,但我唯一实现的是加载一个本体,获取一些类和属性,并将它们组合成一个新的本体。我也不知道如何
GreatNewUpperOntology正确导入,但显示的名称如下: Untitle-Ontology-93(http://www.semanticweb.org/myname/ontologies/2014/9/Untitle-Ontology-93) 问题:有没有一种方法让我把我的本体保存到SemanticWeb.org站点,使用我在自己的计算机上给文件起的描述性名称,例如“GreatNew
我使用Protégé“Open from URL”下载了dron本体。在它的.owl文件中只是一系列URL,Protégé使用这些URL从Internet加载它们。我正在保存这个项目,但是唯一保存的是原始文件(包含URL的文件),而且每次我都应该从互联网上获取所有的数据。我应该怎么做才能将完整的文件保存到我的计算机磁盘上呢?
我正在学习这门基于数据的知识课,我试图弄清楚如何安装第一个OWL API。首先,我在Protege中创建一个.owl文件。我的老师告诉我们,我们必须编写一个小的Java程序来读取我们的.owl文件。他告诉我们包括猫头鹰的API;他没有就OWL API进行任何指示和任何讲座。你知道我如何安装OWL API是非常混乱的吗?如果有什么好的教程可以解释如何将.owl文件实现到Java程序中呢? 谢谢