如何在 Protégé 中创建财产?

Posted

技术标签:

【中文标题】如何在 Protégé 中创建财产?【英文标题】:How to make property of property in Protégé? 【发布时间】:2016-10-23 22:14:37 【问题描述】:

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

多个Songs 可以在不同的Performances 中执行。每个Song可以被不同的Arranger排列在不同的Performance中。

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

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

【问题讨论】:

在其他本体编辑器中,例如 TopBraid,您可以具体化三元组。这在 Protégé 中是不可能的,但您可以通过其他方式获得类似的结果,例如使用等效类。如果您提供有关数据的更多详细信息以及您想要实现的目标,那么提出解决方案会更容易。 此类问题的标准阅读材料:Defining N-ary Relations on the Semantic Web. 我会说这可以被认为是 How can I express additional information (time, probability) about a relation in RDF? 的复制品,它还包括 Protege 之外的更多可能性(例如,在 Triple 和 Quad-Stores 中)。 【参考方案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 .

【讨论】:

“声明的具体化也不是必需的。创建一个对象来保存有关歌曲和表演的信息。”该附加对象本质上是(隐式)更高层次关系表演(编曲,表演,歌曲)的具体化。但我同意,从概念上讲,将其视为具有大量属性的全新类型的对象可能会有所帮助。 “语句具体化”是一种特定类型的具体化,它是关于语句的语句,使用rdf:subjectrdf:predcaterdf:object。它通常被定义为rdf:Statement 的成员,因此称为“语句具体化”。我很清楚,与其中一个 cmets 不同,不需要这种具体化。 是的,具体化在 RDF 中具有更窄的特定技术用法,这在标准的 5.3 Reification Vocabulary 部分进行了描述。物化(例如,en.wikipedia.org/wiki/Reification_(computer_science) 和 en.wikipedia.org/wiki/Reification_(knowledge_representation))也是一个更广泛适用的术语,你不能直接谈论它的东西抽象成你可以谈论的东西。 我的意思是不管是否使用RDF Reification词汇,这里的方法仍然是reification(广义上):将一个语句(不能直接引用)变成某物那可以(一个可以做出陈述的对象)。 明白。或者可以说它是对象属性(关系)的正常函数,它引用封装数据的对象。

以上是关于如何在 Protégé 中创建财产?的主要内容,如果未能解决你的问题,请参考以下文章

SPARQL 查询检索由 Protégé 中某个类的另一个个体拥有的子类的个体?

如何用 Protégé 中的其他标准本体扩展本体?

买了瓶红酒,酒标上的“pays d'oc” “Indication Géographique Protégée”是啥意思?

如何在 python 中使用 sparql、rdflib 询问本体

将重音字符 é 插入 Symfony2 中的表单时,如何在 mysql 数据库中将重音字符 é 保存为 é?

Java - é 变成 é - 如何修复它 [重复]