不必添加属性的属性来建模此场景,尽管属性是一个对象(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 .
}