如何在 Protégé 中创建财产?
Posted
技术标签:
【中文标题】如何在 Protégé 中创建财产?【英文标题】:How to make property of property in Protégé? 【发布时间】:2016-10-23 22:14:37 【问题描述】:我在使用 Protégé 在 OWL 中建模时遇到以下问题:
多个Song
s 可以在不同的Performance
s 中执行。每个Song
可以被不同的Arranger
排列在不同的Performance
中。
我已经知道如何使用对象属性将Song
与Performance
关联起来。现在,如何将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:subject
、rdf:predcate
和rdf: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é 中某个类的另一个个体拥有的子类的个体?
买了瓶红酒,酒标上的“pays d'oc” “Indication Géographique Protégée”是啥意思?
如何在 python 中使用 sparql、rdflib 询问本体