【问题标题】:How to list all all graphs in Virtuoso?如何列出 Virtuoso 中的所有图表?
【发布时间】:2023-03-31 12:45:01
【问题描述】:

当我转到http://localhost:8890/sparql/ 时,有两个字段:Default Data Set Name (Graph IRI)query。如何列出我的数据库中可用的所有图表(在前一个字段中)?该字段不是强制性的,我可以对所有命名空间运行查询。但我想知道如何列出可用的图表。

我能够运行的唯一非空图是http://localhost:8890/sparql

例如,在关系数据库环境中,我相信可以从系统表中检索到这种信息。

【问题讨论】:

  • 命名空间不是 RDF 或三重存储的一部分。你的意思是图表。图可以包含具有不同命名空间的 IRI 的资源。所以问题是“列出三重商店中的所有图表”。这会导致类似select distinct ?g {graph ?g {?s ?p ?o}}
  • select * {graph ?g {}} 应该可以工作。
  • @AndyS,返回_star_fake: 1
  • OP 已更正

标签: sparql virtuoso


【解决方案1】:

如 cmets 中所述,this query 将为您提供目标存储中所有命名图的列表(也如上所述,与“命名空间”不同)-

  SELECT  DISTINCT ?g 
   WHERE  { GRAPH ?g {?s ?p ?o} } 
ORDER BY  ?g

您可以在DBpedia endpoint(如您所料,这是一个非常短的列表)和URIBurner(一个更长、更多样化的列表)上查看实时结果(此处限制为 100 个图表名称)。

【讨论】:

  • 哇...您超链接到的查询需要 10 秒才能执行。 Virtuoso 不以性能着称,我在必须使用的实现中也注意到了这一点
  • 我链接到的公共端点对世界开放,并且通常不会一次只回答一个查询,因此 other 查询可能会影响 的性能您的 查询。 Virtuoso 以出色的性能而闻名,但这确实需要proper tuning to its environmentproperly built benchmarks 以及其他考虑因素。我猜你自己的部署需要一些调整才能开始。
  • 该查询似乎有效。但是,我创建了一个新图表 (sparql { CREATE GRAPH <http://blah.blah/allTriples.ttl> }),重新运行查询,但图表没有显示在结果中。是因为我没有插入任何数据吗?
  • 我想我只是通过插入一些数据来回答我自己的问题,答案是肯定的
【解决方案2】:

我知道这是一个老问题,但我也面临同样的问题,并认为其他人可能会从我找到的解决方案中受益。

我试图执行此查询以列出所有图表,并且需要大约 5 分钟才能返回结果:

SELECT DISTINCT ?g 
WHERE { 
  GRAPH ?g {?s ?p ?o}
} 

相反,您应该尝试this documentation from Virtuoso 中建议的以下查询:

SELECT DISTINCT ?g 
WHERE { 
  GRAPH ?g {?s a ?o}
} 

此查询在不到 1 秒的时间内完成,并返回了商店中的图表列表。当然,这个查询只会返回至少有一个带有谓词 rdf:type 的三元组的图,但它仍然比 TallTed 建议的有很大改进。

【讨论】:

猜你喜欢
  • 2010-12-07
  • 2011-07-31
  • 2018-08-08
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
  • 2011-07-11
相关资源
最近更新 更多