Virtuoso 7.1中大型图表的计数不一致

时间:2016-09-04 18:36:18

标签: dbpedia virtuoso

我有一个运行Virtuoso 7.1的实例,并在此blog中清楚阐明了DBpedia的设置。现在我有一个非常基本的要求,即找到一些计数值。但是我对我的查询结果感到困惑:

select count(?s) 
where {?s ?p ?o . 
FILTER(strstarts(str(?s),"http://dbpedia.org/resource")) }

通过此查询,我想查看DBpedia中存在多少资源,这些资源的URI以"http://dbpedia.org/resource"开头。基本上我的希望是找到<http://dbpedia.org/resource/Hillary_Clinton><http://dbpedia.org/resource/Bill_Clinton>等类型的资源。

我的困惑在于,每次Virtuoso都会返回不同的结果。

现在我在两台不同的机器上尝试了它,一台本地机器和我们的服务器。在这两种情况下,我看到了截然不同的结果。通过疯狂,我只想让你采样大小。它们是110100036314328014292014

关于执行时间。我确实尝试将其从默认50000更改为8000。这并没有完全增加结果。

我知道DBpedia提供了转储的统计信息,但我想在Virtuoso中做到这一点。为什么这是异常?

此外,我也看到了this讨论,他们提到了可能相关的内容。我只想知道如何在Virtuoso中获得DBpedia的计数。如果不是Virtuoso还有其他图形商店,即Jena,rdf4j,Fuseki,它会做到这一点吗?

1 个答案:

答案 0 :(得分:0)

首先 - Virtuoso 7.1非常陈旧(2014-02-17发货)。我强烈建议更新到当前版本7.2.4(版本字符串07.20.3217)或更高版本,无论是Commercial还是Open Source

现在 - 您正在运行的查询必须做很多工作才能生成结果。它必须检查每个 ?s的字符串,然后将计数结束。这将需要(相对)非常长时间运行;究竟需要多长时间依赖于运行时环境和总数据库大小,以及其他重要因素。

HTML标头(具体来说,X-SQL-Message)将包含此类查询超时的通知,如此处所示 -

$ curl -LI "http://dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&query=SELECT+COUNT%28%3Fs%29+%0D%0AWHERE%0D%0A++%7B++%3Fs++%3Fp++%3Fo++.+%0D%0A+++++FILTER%28strstarts%28str%28%3Fs%29%2C%22http%3A%2F%2Fdbpedia.org%2Fresource%22%29%29+%0D%0A++%7D+&format=text%2Fhtml&CXML_redir_for_subjs=121&CXML_redir_for_hrefs=&timeout=3000000&debug=on"
HTTP/1.1 200 OK
Date: Tue, 06 Sep 2016 16:39:44 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 128
Connection: keep-alive
Server: Virtuoso/07.20.3217 (Linux) i686-generic-linux-glibc212-64  VDB
X-SPARQL-default-graph: http://dbpedia.org
X-SQL-State: S1TAT
X-SQL-Message: RC...: Returning incomplete results, query interrupted by result timeout.  Activity:  12.43M rnd  13.28M seq      0 same seg   8.023M same pg  3.369M same par      0 disk      0 spec disk      0B /      0 m
X-Exec-Milliseconds: 121040
X-Exec-DB-Activity: 12.43M rnd  13.28M seq      0 same seg   8.023M same pg  3.369M same par      0 disk      0 spec disk      0B /      0 messages      0 fork
Expires: Tue, 13 Sep 2016 16:39:44 GMT
Cache-Control: max-age=604800
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: HEAD, GET, POST, OPTIONS
Access-Control-Allow-Headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Accept-Encoding
Accept-Ranges: bytes

在您自己的实例中,您可以set larger or even infinite timeouts (e.g., MaxQueryExecutionTime)确保始终获得最完整的结果。