如何使 class 的某个实例仅具有所需谓词列表中的一个谓词?

How to make an certain instance of a class to have only one predicate from the desired list of predicates?

作为我学士论文的一部分,我正在尝试为组织创建一个通用的 ontology(我从 W3C 了解到 The Organizational Ontology 的存在)。在这个过程中,我想出了以下方案(ontology drawn in pencil)。我的想法是拥有一个主要实体(在我的例子中是实体工作区),我可以为其设置它的类型(组织、部门、职位、人员、地点)并且我可以与它自己配对(使用类型化关系“关系”)来构建任意复杂的组织结构。

我尝试使用 WebVOWL 在线实用程序将绘制的 ontology 转换为 RDF 图,这就是我得到的 (picture of ontology)。

遗憾的是,我对本体建模理论和语义Web技术的了解还有很多不足之处,请了解它们的人帮助我。

如果我错了请纠正我,但我感觉在我构建的 ontology 中,Relation 实体必须同时拥有所有链接。 (关系 - 关系类型 - HoldsPost,关系 - 关系类型 - ReportsTo,关系 - 关系类型 - 子组织等)。我需要 Relation 实体实例只有一种关系(例如,只有 Relation - relationType - HoldsPost)。

想到这个问题只有一个解决方案 - 删除 HeadOf、HoldsPost、ReportsTo、.. 节点,而是添加一个字符串节点,根据关系的类型,在其中写入所需的值。

所以看来问题是如何构建一个 ontology 来提供仅包含所列类型之一的 Relation 实例,而不是同时提供所有类型。

如果有任何帮助和反馈,我将不胜感激。

我还附上了由 WebVOWL 实用程序生成的 Turtle 文件的内容:

    #################################################################
###  Generated with the experimental alpha version of the TTL exporter of WebVOWL (version 1.1.7)  http://visualdataweb.de/webvowl/   ###
#################################################################

@prefix :       <http://visualdataweb.org/organizationalOntology/> .
@prefix rdf:        <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:       <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:        <http://www.w3.org/2002/07/owl#> .
@prefix xsd:        <http://www.w3.org/2001/XMLSchema#> .
@prefix dc:         <http://purl.org/dc/elements/1.1/> .
@prefix xml:        <http://www.w3.org/XML/1998/namespace> .
@prefix wot:        <http://xmlns.com/wot/0.1/> .
@prefix vs:         <http://www.w3.org/2003/06/sw-vocab-status/ns#> .
@prefix foaf:       <http://xmlns.com/foaf/0.1/> .
@base           <http://visualdataweb.org/organizationalOntology/> .

<http://visualdataweb.org/organizationalOntology/> rdf:type owl:Ontology ;
                                                   dc:title "Organizational structure ontology"@en;
                                                   dc:description "Ontology for modelling organizational structures, specializable to a broad variety of types of organization."@en;
                                                   owl:versionInfo "0.1"@en;
                                                   dc:creator "" . 
#################################################################

###  Property Definitions (Number of Property) 20 ###
#  --------------------------- Property 0------------------------- 
:supports rdf:type owl:ObjectProperty ;
          rdfs:label "supports"@en; 
          rdfs:domain :Workspace;
          rdfs:range :SupportedOperations . 
#  --------------------------- Property 1------------------------- 
:constraints rdf:type owl:ObjectProperty ;
             rdfs:label "limits"@en; 
             rdfs:domain :Workspace;
             rdfs:range :BuisnessRules . 
#  --------------------------- Property 2------------------------- 
:name rdf:type owl:DatatypeProperty ;
      rdfs:label "name"@en; 
      rdfs:domain :Workspace;
      rdfs:range rdfs:Datatype . 
#  --------------------------- Property 3------------------------- 
:relationWorkspaceLink rdf:type owl:ObjectProperty ;
                       rdfs:label "relationWorkspaceLink"@en; 
                       rdfs:domain :Relation;
                       rdfs:range :Workspace . 
#  --------------------------- Property 4------------------------- 
:hasType rdf:type owl:ObjectProperty ;
         rdfs:label "relationType"@en; 
         rdfs:domain :Relation;
         rdfs:range :HeadOf . 
#  --------------------------- Property 5------------------------- 
:hasType rdf:type owl:ObjectProperty ;
         rdfs:label "relationType"@en; 
         rdfs:domain :Relation;
         rdfs:range :HoldPost . 
#  --------------------------- Property 6------------------------- 
:workspaceRelationLink rdf:type owl:ObjectProperty ;
                       rdfs:label "workspaceRelationLink"@en; 
                       rdfs:domain :Workspace;
                       rdfs:range :Relation . 
#  --------------------------- Property 7------------------------- 
:hasType rdf:type owl:ObjectProperty ;
         rdfs:label "relationType"@en; 
         rdfs:domain :Relation;
         rdfs:range :ReportsTo . 
#  --------------------------- Property 8------------------------- 
:hasType rdf:type owl:ObjectProperty ;
         rdfs:label "relationType"@en; 
         rdfs:domain :Relation;
         rdfs:range : . 
#  --------------------------- Property 9------------------------- 
:hasType rdf:type owl:ObjectProperty ;
         rdfs:label "relationType"@en; 
         rdfs:domain :Relation;
         rdfs:range :SubUnit . 
#  --------------------------- Property 10------------------------- 
:hasType rdf:type owl:ObjectProperty ;
         rdfs:label "relationType"@en; 
         rdfs:domain :Relation;
         rdfs:range :MemberOf . 
#  --------------------------- Property 11------------------------- 
:hasType rdf:type owl:ObjectProperty ;
         rdfs:label "relationType"@en; 
         rdfs:domain :Relation;
         rdfs:range :LocatesIn . 
#  --------------------------- Property 12------------------------- 
:workspaceType rdf:type owl:ObjectProperty ;
               rdfs:label "workspaceType"@en; 
               rdfs:domain :Workspace;
               rdfs:range :Place . 
#  --------------------------- Property 13------------------------- 
:workspaceType rdf:type owl:ObjectProperty ;
               rdfs:label "workspaceType"@en; 
               rdfs:domain :Workspace;
               rdfs:range :Organization . 
#  --------------------------- Property 14------------------------- 
:workspaceType rdf:type owl:ObjectProperty ;
               rdfs:label "workspaceType"@en; 
               rdfs:domain :Workspace;
               rdfs:range :Department . 
#  --------------------------- Property 15------------------------- 
:workspaceType rdf:type owl:ObjectProperty ;
               rdfs:label "workspaceType"@en; 
               rdfs:domain :Workspace;
               rdfs:range :Person . 
#  --------------------------- Property 16------------------------- 
:workspaceType rdf:type owl:ObjectProperty ;
               rdfs:label "workspaceType"@en; 
               rdfs:domain :Workspace;
               rdfs:range :Post . 
#  --------------------------- Property 17------------------------- 
:hasCoordinates rdf:type owl:ObjectProperty ;
                rdfs:label "hasCoordinates"@en; 
                rdfs:domain :Place;
                rdfs:range :Coordinates . 
#  --------------------------- Property 18------------------------- 
:coordinatesString rdf:type owl:DatatypeProperty ;
                   rdfs:label "coordinatesString"@en; 
                   rdfs:domain :Coordinates;
                   rdfs:range xsd:string . 
#  --------------------------- Property 19------------------------- 
:description rdf:type owl:DatatypeProperty ;
             rdfs:label "description"@en; 
             rdfs:domain :Workspace;
             rdfs:range rdfs:Datatype . 
###  Class Definitions (Number of Classes) 17 ###
#  --------------------------- Class  0------------------------- 
:Workspace rdf:type owl:Class; 
           rdfs:label "Workspace"@en . 
#  --------------------------- Class  1------------------------- 
:SupportedOperations rdf:type owl:Class; 
                     rdfs:label "SupportedOperations"@en . 
#  --------------------------- Class  2------------------------- 
:BuisnessRules rdf:type owl:Class; 
               rdfs:label "BuisnessRules"@en . 
#  --------------------------- Class  3------------------------- 
:Relation rdf:type owl:Class; 
          rdfs:label "Relation"@en . 
#  --------------------------- Class  4------------------------- 
:ReportsTo rdf:type owl:Class; 
           rdfs:label "ReportsTo"@en . 
#  --------------------------- Class  5------------------------- 
:MemberOf rdf:type owl:Class; 
          rdfs:label "MemberOf"@en . 
#  --------------------------- Class  6------------------------- 
:HoldPost rdf:type owl:Class; 
          rdfs:label "HoldsPost"@en . 
#  --------------------------- Class  7------------------------- 
:HeadOf rdf:type owl:Class; 
        rdfs:label "HeadOf"@en . 
#  --------------------------- Class  8------------------------- 
:LocatesIn rdf:type owl:Class; 
           rdfs:label "LocatesIn"@en . 
#  --------------------------- Class  9------------------------- 
: rdf:type owl:Class; 
  rdfs:label "SubOrganization"@en . 
#  --------------------------- Class  10------------------------- 
:SubUnit rdf:type owl:Class; 
         rdfs:label "SubUnit"@en . 
#  --------------------------- Class  11------------------------- 
:Organization rdf:type owl:Class; 
              rdfs:label "Organization"@en . 
#  --------------------------- Class  12------------------------- 
:Department rdf:type owl:Class; 
            rdfs:label "Department"@en . 
#  --------------------------- Class  13------------------------- 
:Post rdf:type owl:Class; 
      rdfs:label "Post"@en . 
#  --------------------------- Class  14------------------------- 
:Person rdf:type owl:Class; 
        rdfs:label "Person"@en . 
#  --------------------------- Class  15------------------------- 
:Place rdf:type owl:Class; 
       rdfs:label "Place"@en . 
#  --------------------------- Class  16------------------------- 
:Coordinates rdf:type owl:Class; 
             rdfs:label "Coordinates"@en . 

您需要为 Relation 添加最多 1 个基数限制 class:

:Relation rdf:type owl:Class ;
      rdfs:subClassOf [ rdf:type owl:Restriction ;
                        owl:onProperty :hasType ;
                        owl:maxCardinality "1"^^xsd:nonNegativeInteger
                      ] ;
      rdfs:label "Relation"@en .

那么,如果你有以下几个人:

:relation rdf:type owl:NamedIndividual ,
               :Relation ;
      :hasType :relationType1 ,
               :relationType2 .


:relationType1 rdf:type owl:NamedIndividual ,
                    :HeadOf .

:relationType2 rdf:type owl:NamedIndividual ,
                    :MemberOf .

个人 relationType1relationType2 不同

[ rdf:type owl:AllDifferent ;
  owl:distinctMembers ( :relationType1
                    :relationType2
                  )
] .

如果你 运行 是这个 ontology 的推理者,你会得到一个不一致的结果,因为 relation 个人通过 relationType 被 link 编辑了两次属性.

评论中问题的回答

  1. 对象属性将 2 个个体相互关联,而不是 classes。如果你有:

    :hasType rdf:type owl:ObjectProperty ;
        rdfs:label "relationType"@en; 
        rdfs:domain :Relation;
        rdfs:range :MemberOf .
    

这意味着每当 2 个个体 ab 通过 hasType 被 link 编辑时,个体 a 的类型为 Relation个体 b 的类型为 MemberOf。这也意味着对于每个用域定义的 hasType 范围,将导致 a 成为域的类型,而 b 成为范围的类型。在您的示例中,a 将被推断为 Relation 类型,而 b 将被推断为 MemberOfHeadOfHolfPost 类型等等 此外,定义 Relation 类型的个体 relation 不会强制 relationMemberOf 类型的个体具有任何 hasType link .

  1. 是的,你的理解有误。 OWL/RDF 中的任何个人都可以通过任意多的谓词拥有任意多的 link。如果您想通过特定谓词限制 link 的数量,您必须定义个人所属的 class,这样它只允许有限数量的 link。我在我的博客 here, here and here.

    上写过这个
  2. ontology是否有生存权取决于它支持的用例。

  3. 推理是根据ontology中的公理推导出推论的过程。 ontology 具有数学逻辑意义,它基于 ontology 中的这些公理和断言可以应用基于逻辑的算法来推导。这称为推理,执行此操作的应用程序称为推理器。您可以在我的 dissertation.

    的第 3 章中阅读更多相关信息