Rdf 如何在OWL中声明属性必须具有一组有序值?

Rdf 如何在OWL中声明属性必须具有一组有序值?,rdf,ontology,owl,rdfs,Rdf,Ontology,Owl,Rdfs,如何在OWL中声明属性必须具有一组有序值 例如:一个节目必须有rdf:Seq系列,而一个系列必须有rdf:Seq系列 本体使用该属性 哪种方法更好?在OWL(和RDF)中很难表示序列,它更多的是关于无序的事物集。我发现最好的方法是通过属性分配一个数字,然后跟踪这个索引,并在需要时使用它进行迭代 表示您想要捕获的内容的OWL本体可能是这样的(使用曼彻斯特语法-您可以另存为.OWL文件并打开-是注释): 前缀:xsd: 前缀:owl: 前缀:: 前缀:xml: 前缀:rdf: 前缀:dc: 前缀:r

如何在OWL中声明属性必须具有一组有序值

例如:一个节目必须有rdf:Seq系列,而一个系列必须有rdf:Seq系列

本体使用该属性

哪种方法更好?

在OWL(和RDF)中很难表示序列,它更多的是关于无序的事物集。我发现最好的方法是通过属性分配一个数字,然后跟踪这个索引,并在需要时使用它进行迭代

表示您想要捕获的内容的OWL本体可能是这样的(使用曼彻斯特语法-您可以另存为.OWL文件并打开-
是注释):

前缀:xsd:
前缀:owl:
前缀::
前缀:xml:
前缀:rdf:
前缀:dc:
前缀:rdfs:
本体:
数据类型:xsd:int
ObjectProperty:has
特点:
及物的
#用于在序列中保存数字的属性
DataProperty:剧集编号
范围:
xsd:int
#程序的定义:至少作为一个系列的程序
类别:课程
子类:
有一些系列
类:猫头鹰:东西
#系列剧的定义:至少一集的系列剧
类别:系列
子类:
有一些插曲
班级:插曲
#插曲
个人:第1幕
类型:
插曲
#剧集号
事实:
第1集^^xsd:int
#第二集
个人:第2幕
类型:
插曲
事实:
第二集^^xsd:int
让我们假设,然后您希望迭代事件实例。这可以通过OWL查询
剧集和剧集编号值1
实现。你必须自己更新号码

如何在OWL中声明属性必须具有一组有序的 价值观例如:一个程序必须有一个系列的rdf:Seq和一个 系列剧必须有rdf:Seq的剧集

如果您使用的是OWL(DL),那么就不应该真正使用RDF集合。如果您可以具体化关系并包含位置号,这是很好的,但是您也可以在OWL中声明自己的列表结构,它类似于RDF列表(它只是单链接列表的RDF编码)。这样你就可以

:series hasEpisodeList [ ex:first :episodeA ;
                         ex:rest [ ex:first :episodeB ;
                                   ex:rest [ :episodeC ;
                                             ex:rest ex:nil ] ] ] .

但是,这种方法的缺点是数字信息只是隐式的,并且很难使用DL查询进行重构(尽管使用SPARQL并不太难)。这两种表示序列的方法在及其链接的其他问题和答案中都有更详细的描述。

我想你的意思是等价类而不是子类?这两种方法都可以接受,这取决于你想要捕获什么。这里是谨慎的建模,没有强有力的断言(
subassof
),但也可以使用
等价类
(对本体进行分类时会产生更强烈的后果)。
:series hasEpisodeList [ ex:first :episodeA ;
                         ex:rest [ ex:first :episodeB ;
                                   ex:rest [ :episodeC ;
                                             ex:rest ex:nil ] ] ] .