当前位置: 首页 > 知识库问答 >
问题:

Protégé-OWL/SWRL中的本体属性定义

汪庆
2023-03-14

我需要在Protégé中实现一个OWL-ontology,它包含两个类:S1S2,这两个类都是System类的实例。这两个类由连接类S1_S2连接,该连接类包含属性omega。该财产必须根据下列法律取值:

欧米茄=1*S1。完成

我如何在Protégé中实现它,这样我就可以在将来的SWRL-rule中使用它了?

共有1个答案

燕玉堂
2023-03-14

通常,首先定义所需的类和属性:

在这一点上,您可以添加一些公理来管理系统必须如何交互、属性如何工作等。例如,您可以在属性上声明域和范围。下面是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程序中呢? 谢谢