我正在使用DBpedia公共端点http://dbpedia.org/sparql,但我怀疑它对返回的结果数量设置了限制。我不确定,只是想确认一下。例如,对于这两个查询:
Public Function NewOrder()
Dim product As List(Of Product) = New List(Of Product)
Dim orders As List(Of PurchaseOrder) = New List(Of PurchaseOrder)
For Each p As Product In product
If p.Remaining < p.PurchaseLevel Then
PurchaseOrder.totalToOrder = (p.PurchaseLevel - p.Remaining) * 2
orders.Add(PurchaseOrder)
End If
Next
Return orders
End Function
我希望第二个返回比第一个更多的结果,因为虽然它们都要求“Person”的属性,但第二个检索模式中不明确的属性。但奇怪的是,第二个只返回一个结果。我想知道端点是否对其返回的结果设置了限制,以及如何更改此限制。如果我想检索完整的信息,是否真的需要设置我的本地DBpeida实例?
答案 0 :(得分:0)
有一个限制,但这不是您在第二个查询中获得意外结果的原因(来自dbpedia.org/sparql):
live.dbpedia.org
上工作正常,所以目前dbpedia.org端点一定有问题(正在加载新版本?)关于DBPedia结果限制及其解决方法:How to get all companies from DBPedia?。
更新:如果查询的一部分在OPTIONAL子句中,则第二个查询从dbpedia.org/sparql返回了更多结果:
select distinct ?property
where {
?instance a <http://dbpedia.org/ontology/Person> .
OPTIONAL {?instance ?property ?obj . }
}
答案 1 :(得分:0)
您是否正在使用Virtuoso SPARQL查询编辑器获取这些结果?很奇怪。我也得到一个结果,rdf:使用该服务输入。但是如果我使用不同的工具(在我的情况下是TopBraid Composer)和下面的SERVICE关键字,我会看到明智的结果,例如身高,别名,孩子等。
select distinct ?property
where {
SERVICE <http://dbpedia.org/sparql> {
?instance a <http://dbpedia.org/ontology/Person> .
?instance ?property ?obj .
}
}
很可能是Virtuoso SPARQL查询编辑器的问题。