如何在 Protégé 中制作 属性 of 属性?
How to make property of property in Protégé?
我有以下问题要在 OWL 中使用 Protégé 建模:
多个 Song
可以在不同的 Performance
中执行。每个Song
可以由不同的Arranger
排列在不同的Performance
.
我已经知道如何使用对象 属性 将 Song
关联到 Performance
。现在,如何将 Song
-Performance
对映射到 Arranger
? (在关系数据库中,我将其称为多对多 Song
-Performance
关系的 "descriptive attribute")。
我知道我可以对对象使用注释 属性,但我希望能够从这个 属性 中推断出一些东西。 (例如:什么 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 .
}
我有以下问题要在 OWL 中使用 Protégé 建模:
多个 Song
可以在不同的 Performance
中执行。每个Song
可以由不同的Arranger
排列在不同的Performance
.
我已经知道如何使用对象 属性 将 Song
关联到 Performance
。现在,如何将 Song
-Performance
对映射到 Arranger
? (在关系数据库中,我将其称为多对多 Song
-Performance
关系的 "descriptive attribute")。
我知道我可以对对象使用注释 属性,但我希望能够从这个 属性 中推断出一些东西。 (例如:什么 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 .
}