我目前正在尝试找出他们想通过作物本体论告诉我什么含义,并在此过程中学习一些有关本体论和OWL的知识(我对这个主题还很陌生)。在那里,
owl:someValuesFrom
限制被大量使用,通过某种关系将术语链接在一起,例如method_of
,scale_of
。我不明白为什么他们不只是通过对象属性链接类。
作为一个具体的例子,我添加了水稻作物本体的摘录。请帮助我理解如果我只是通过对象属性链接所提到的类,我会传达什么样的含义。我在下面附上了我的研究尝试和水稻本体的摘录
OWL 帮助页面说明了这些限制:
换句话说,它定义了一类个体 x,其中至少有一个 y(类描述的实例或数据范围的值),使得 (x,y) 对是 P 的实例。
...我无法真正理解。在 Stack Overflow 上搜索“OWL sameValueAs 对象属性”没有产生任何结果。
在摘录中,Rice Ontology 大致定义了:
1 可能是从一小块地块的收获中根据其他产量参数进行计算/外推
和
kg_per_ha -[scale_of]-> Yield measurement -[method_of]-> Grain yield
GrYld_Comp_kgha -[variable_of]-> { Grain yield, Yield measurement, kg_per_ha }
初始定义
@prefix : <https://cropontology.org/rdf/> .
@prefix prl: <http://purl.org/dc/terms/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <https://cropontology.org/rdf/> .
:Method rdf:type owl:Class . ## <https://cropontology.org/rdf/Method>
:Computation rdf:type owl:Class ; ## <https://cropontology.org/rdf/Computation>
rdfs:subClassOf :Method .
:Scale rdf:type owl:Class . ## <https://cropontology.org/rdf/Scale>
:Numerical rdf:type owl:Class ; ## <https://cropontology.org/rdf/Numerical>
rdfs:subClassOf :Scale .
:Trait rdf:type owl:Class .
:Agronomic rdf:type owl:Class ;
rdfs:subClassOf :Trait .
:Variable rdf:type owl:Class . ## <https://cropontology.org/rdf/Variable>
:scale_of rdf:type owl:ObjectProperty . ## <https://cropontology.org/rdf/scale_of>
:variable_of rdf:type owl:ObjectProperty . ## <https://cropontology.org/rdf/variable_of>
:Grain_yield rdf:type owl:Class ; ## <https://cropontology.org/rdf/CO_320:0000073>
rdfs:subClassOf :Agronomic ;
skos:definition "Amount of grain (weight) produced per area"@en ;
使用限制定义 Grain_yield、Yield_measurement 和 GrYld_Comp_kgha
:Yield_measurement rdf:type owl:Class ; ## <https://cropontology.org/rdf/CO_320:0000469>
rdfs:subClassOf :Computation ,
[
rdf:type owl:Restriction ;
owl:onProperty :method_of ;
owl:someValuesFrom :Grain_yield
] ;
rdfs:label "Yield measurement"@en ;
skos:definition "Harvest grain from at least 5 m2/plot, discarding at least three border rows. Thresh, dry the rough (paddy) rice to 14% moisture content, and weigh."@en .
:kg_per_ha rdf:type owl:Class ; ### https://cropontology.org/rdf/CO_320:0000470
rdfs:subClassOf :Numerical ,
[
rdf:type owl:Restriction ;
owl:onProperty :scale_of ;
owl:someValuesFrom :Yield_measurement
] ;
rdfs:label "kg per ha"@en .
:GrYld_Comp_kgha rdf:type owl:Class ; ## <https://cropontology.org/rdf/CO_320:0000745>
rdfs:subClassOf :Variable ,
[ rdf:type owl:Restriction ;
owl:onProperty :variable_of ;
owl:someValuesFrom :Grain_yield .
] ,
[ rdf:type owl:Restriction ;
owl:onProperty :variable_of ;
owl:someValuesFrom :Yield_measurement
] ,
[ rdf:type owl:Restriction ;
owl:onProperty :variable_of ;
owl:someValuesFrom :kg_per_ha .
] ;
prl:contributor "IRRI" , "Jeffrey Detras" ;
rdfs:label "GrYld_Comp_kgha"@en ;
skos:altLabel "GrYld_Comp_kgha"@en .
为什么我不能这样做:
:Yield_measurement rdf:type owl:Class ;
rdfs:subClassOf :Computation ;
:method_of :Grain_yield;
skos:definition "Harvest grain from at least 5 m2/plot, discarding at least three border rows. Thresh, dry the rough (paddy) rice to 14% moisture content, and weigh."@en .
kg_per_ha rdf:type owl:Class ;
rdfs:subClassOf :Numerical ;
:scale_of :Yield_measurement;
rdfs:label "kg per ha"@en .
:GrYld_Comp_kgha rdf:type owl:Class ;
rdfs:subClassOf :Variable ,
:variable_of :Grain_yield,
:Yield_measurement,
:kg_per_ha ;
rdfs:label "GrYld_Comp_kgha"@en .
:产量测量 rdf:类型 owl:类;
rdfs:subClassOf :计算 ;
:method_of :Grain_yield;
在此示例中,您尝试以类图中表示的方式表示类。但 OWL 中的属性并不是这样工作的:在面向对象的视图中,属性不能独立于定义它们的类而使用,而在 OWL 中,属性可以在没有任何类的情况下存在。
owl:someValuesFrom 是一种存在性限制:它定义了一个类,其元素都至少有一个与其关联的属性实例,无论是否在本体中声明(开放世界假设在那里发挥作用)。面向对象视图中的 closes 是一个不能为 null 的属性,即使它的值当前未知。