0

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

多个Songs 可以在不同Performance的 s 中执行。每个Song都可以按不同Arranger的方式排列Performance

我已经知道如何将 aSongPerformanceusing 对象属性相关联。现在,如何将 a -pair 映射SongPerformancea Arranger?(在关系数据库中,我将其称为多对多关系的“描述性属性” SongPerformance

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

4

1 回答 1

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 .
}
于 2016-06-22T17:02:51.620 回答