如果一个主语对同一个谓语有多个对象(值(,那么它们的顺序似乎是随机的。例如:
Punta Cana机场维基百科中的原始数据:
Location Punta Cana in La Altagracia Province, Dominican Republic
DBpedia中的数据(dbo:location(:
dbr:Dominican_Republic
dbr:Punta_Cana
dbr:La_Altagracia_Province
正如您所看到的,信息不再是从最详细到最一般的顺序。
起初我认为这会解决问题:
确定数据库资源是城市还是国家
基本上,所接受的答案建议检查位置的类型;dbo:结算;。这在某些时候效果很好,但在某些情况下,一个机场有两个这种类型的位置值,例如希思罗机场。另一方面,Gbado机场没有dbo:定居点,但有一个dbo:城市。
我认为与其处理所有不同的案件,不如有一种方法:
- 按原始顺序检索值或
- 检索原始的单个值;多米尼加共和国拉阿尔塔格拉西亚省的蓬塔卡纳
这两种可能吗?
在RDF和SQL模型的关系DBMS中,记录(在RDF中为a/k/a三元组(的返回顺序不是由规范定义的。当重新执行相同的查询时,为这两个模型服务的引擎往往会以相同的顺序返回结果,但这不是必需的!结果(a/k/a解决方案(可以是任何顺序,并且可以在每次执行查询时发生变化。
在维基百科(和DBpedia提取器(中能做的是说";蓬塔卡纳机场;处于";Punta Cana";其在";La Altagracia省;其在";多米尼加共和国";,并且可以编写查询来获得三元组的堆栈,这些堆栈可以是任何顺序,但可以由人工或代码处理,以将它们重新排序为有序堆栈。
请注意,DBpedia大多使用显式语句,而不是推断,因此可能会,如果不是现在,最终可能会有这样的数据——
PREFIX dbr: http://dbpedia.org/resource/
PREFIX dbo: http://dbpedia.org/ontology/
dbr:Punta_Cana_International_Airport
dbo:location dbr:Dominican_Republic ,
dbr:Punta_Cana ,
dbr:La_Altagracia_Province .
dbr:Punta_Cana
dbo:location dbr:Dominican_Republic ,
dbr:La_Altagracia_Province .
dbr:La_Altagracia_Province
dbo:location dbr:Dominican_Republic .
编写查询(或后处理器(以处理将嵌套减少到单个楼梯的问题,留给读者练习(或者至少是另一个问题(。