如何使 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 .
个人 relationType1
和 relationType2
不同
[ rdf:type owl:AllDifferent ;
owl:distinctMembers ( :relationType1
:relationType2
)
] .
如果你 运行 是这个 ontology 的推理者,你会得到一个不一致的结果,因为 relation
个人通过 relationType
被 link 编辑了两次属性.
评论中问题的回答
对象属性将 2 个个体相互关联,而不是 classes。如果你有:
:hasType rdf:type owl:ObjectProperty ;
rdfs:label "relationType"@en;
rdfs:domain :Relation;
rdfs:range :MemberOf .
这意味着每当 2 个个体 a
和 b
通过 hasType
被 link 编辑时,个体 a
的类型为 Relation
个体 b
的类型为 MemberOf
。这也意味着对于每个用域定义的 hasType
范围,将导致 a
成为域的类型,而 b
成为范围的类型。在您的示例中,a
将被推断为 Relation
类型,而 b
将被推断为 MemberOf
、HeadOf
、HolfPost
类型等等 此外,定义 Relation
类型的个体 relation
不会强制 relation
对 MemberOf
类型的个体具有任何 hasType
link .
是的,你的理解有误。 OWL/RDF 中的任何个人都可以通过任意多的谓词拥有任意多的 link。如果您想通过特定谓词限制 link 的数量,您必须定义个人所属的 class,这样它只允许有限数量的 link。我在我的博客 here, here and here.
上写过这个
ontology是否有生存权取决于它支持的用例。
推理是根据ontology中的公理推导出推论的过程。 ontology 具有数学逻辑意义,它基于 ontology 中的这些公理和断言可以应用基于逻辑的算法来推导。这称为推理,执行此操作的应用程序称为推理器。您可以在我的 dissertation.
的第 3 章中阅读更多相关信息
作为我学士论文的一部分,我正在尝试为组织创建一个通用的 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 .
个人 relationType1
和 relationType2
不同
[ rdf:type owl:AllDifferent ;
owl:distinctMembers ( :relationType1
:relationType2
)
] .
如果你 运行 是这个 ontology 的推理者,你会得到一个不一致的结果,因为 relation
个人通过 relationType
被 link 编辑了两次属性.
评论中问题的回答
对象属性将 2 个个体相互关联,而不是 classes。如果你有:
:hasType rdf:type owl:ObjectProperty ; rdfs:label "relationType"@en; rdfs:domain :Relation; rdfs:range :MemberOf .
这意味着每当 2 个个体 a
和 b
通过 hasType
被 link 编辑时,个体 a
的类型为 Relation
个体 b
的类型为 MemberOf
。这也意味着对于每个用域定义的 hasType
范围,将导致 a
成为域的类型,而 b
成为范围的类型。在您的示例中,a
将被推断为 Relation
类型,而 b
将被推断为 MemberOf
、HeadOf
、HolfPost
类型等等 此外,定义 Relation
类型的个体 relation
不会强制 relation
对 MemberOf
类型的个体具有任何 hasType
link .
是的,你的理解有误。 OWL/RDF 中的任何个人都可以通过任意多的谓词拥有任意多的 link。如果您想通过特定谓词限制 link 的数量,您必须定义个人所属的 class,这样它只允许有限数量的 link。我在我的博客 here, here and here.
上写过这个ontology是否有生存权取决于它支持的用例。
推理是根据ontology中的公理推导出推论的过程。 ontology 具有数学逻辑意义,它基于 ontology 中的这些公理和断言可以应用基于逻辑的算法来推导。这称为推理,执行此操作的应用程序称为推理器。您可以在我的 dissertation.
的第 3 章中阅读更多相关信息