我有以下问题可以在猫头鹰中使用Protégé建模:
可以在不同的Performance
s中执行多个Song
s。每个Song
可以由不同的Performance
中的不同Arranger
安排。
我已经知道如何使用对象属性将Song
与Performance
相关联。现在,如何将Song
-Performance
对映射到Arranger
?(在关系数据库中,我将其称为多对多Song
-Performance
关系的"描述性属性"。
我知道我可以使用对对象属性的注释,但是我希望能够从该属性中推断出某些内容。(例如:哪个Song
已安排了Arranger
,在哪个Performance
?)据我所知,我无法从注释中进行推断。
不必添加属性的属性来建模此方案,尽管属性是对象(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 .
}