如何在Protégé建造房产?

时间:2016-06-22 06:23:06

标签: semantic-web owl protege object-property

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

可以在不同的Song s中执行多个Performance。每个Song可以由不同Arranger的不同Performance排列。

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

我知道我可以对对象属性使用注释,但我希望能够从该属性推断出某些东西。 (例如:Song排列了ArrangerPerformance是什么?)据我所知,我无法从注释中进行推理。

1 个答案:

答案 0 :(得分: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 .
}