【问题标题】:How to make property of property in Protégé?如何在 Protégé 中创建财产?
【发布时间】:2016-10-23 22:14:37
【问题描述】:

我在使用 Protégé 在 OWL 中建模时遇到以下问题:

多个Songs 可以在不同的Performances 中执行。每个Song可以被不同的Arranger排列在不同的Performance中。

我已经知道如何使用对象属性将SongPerformance 关联起来。现在,如何将Song-Performance 对映射到Arranger? (在关系数据库中,我将其称为多对多Song-Performance 关系的“描述性属性”。

我知道我可以对对象属性使用注释,但我希望能够从该属性中推断出一些东西。 (例如:Song 有一个Arranger 排列在哪个Performance 中?)据我所知,我无法从注释中进行推断。

【问题讨论】:

标签: semantic-web owl protege object-property


【解决方案1】:

没有必要添加属性的属性来建模这个场景,尽管属性是一个对象(uri),因此可以包含任何属性,而不仅仅是注释属性。 rdfs:subPropertyOf 就是一个很好的例子。也不需要声明具体化。这是创建一个包含歌曲和表演信息的对象的问题。

这是一个代表编曲与歌曲表演关系的模型:

ex:SongPerformance a owl:Class .
ex:Arranger a owl:Class .
ex:arranged rdfs:domain ex:Arranger ;
    rdfs:range ex:SongPerformance .
ex:songPerformed rdfs:domain ex:SongPerformance ;
    rdfs:range ex:Arranger .
ex:performedIn rdfs:domain ex:SongPerformance ;
    rdfs:range ex:Arranger .

给定这个列表,一个例子是:

ex:Arranger-1 ex:arranged ex:SP1 .
ex:SP1 ex:performedIn ex:Performance_1 ;
    ex:songPerformed ex:Song1 .

然后您可以通过以下 SPARQl 查询找到哪些歌曲在给定的表演中安排了编曲:

SELECT ?arranger ?song ?performance
WHERE {
   ?arranger a ex:Arranger ;
       ex:arranged ?sp .
   ?sp ex:songPerformed ?song ;
      ex:performedIn ?performance .
}

【讨论】:

  • “声明的具体化也不是必需的。创建一个对象来保存有关歌曲和表演的信息。”该附加对象本质上是(隐式)更高层次关系表演(编曲,表演,歌曲)的具体化。但我同意,从概念上讲,将其视为具有大量属性的全新类型的对象可能会有所帮助。
  • “语句具体化”是一种特定类型的具体化,它是关于语句的语句,使用rdf:subjectrdf:predcaterdf:object。它通常被定义为rdf:Statement 的成员,因此称为“语句具体化”。我很清楚,与其中一个 cmets 不同,不需要这种具体化。
  • 是的,具体化在 RDF 中具有更窄的特定技术用法,这在标准的 5.3 Reification Vocabulary 部分进行了描述。物化(例如,en.wikipedia.org/wiki/Reification_(computer_science)en.wikipedia.org/wiki/Reification_(knowledge_representation))也是一个更广泛适用的术语,你不能直接谈论它的东西抽象成你可以谈论的东西。
  • 我的意思是不管是否使用RDF Reification词汇,这里的方法仍然是reification(广义上):将一个语句(不能直接引用)变成某物那可以(一个可以做出陈述的对象)。
  • 明白。或者可以说它是对象属性(关系)的正常函数,它引用封装数据的对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
相关资源
最近更新 更多