关联数据和端点

时间:2010-06-02 09:37:28

标签: rdf sparql jena

为什么终点对查询的最终结果非常重要。

对于此查询:


SELECT ?episode,?chalkboard_gag WHERE {
  ?episode skos:subject 
    http://dbpedia.org/resource/Category:The_Simpsons_episodes%2C_season_12.
  ?episode dbpedia2:blackboard ?chalkboard_gag
}

端点“OpenLink Virtuoso SPARQL协议”返回1个结果 “http://dbpedia.org/snorql”(“http://dbpedia.org/sparql”,我正在使用jena)产生4个结果,这是正确的,因为只有4个剧集创建了黑板信息。

为什么会有差异?

1 个答案:

答案 0 :(得分:1)

对于第一个端点,您的意思是http://lod.openlinksw.com/sparql吗?我和http://dbpedia.org/sparql之间没有看到不同的结果。例如,这个扩展你的查询似乎从两个端点返回相同的东西(如果它们确实是不同的服务器;我无法分辨)。

prefix skos: <http://www.w3.org/2004/02/skos/core#>
prefix category: <http://dbpedia.org/resource/Category:>
prefix dbpedia2: <http://dbpedia.org/property/>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>

SELECT DISTINCT ?airdate ?chalkboard_gag ?episode
WHERE {
  ?episode skos:subject ?cat .
  ?cat skos:broader category:The_Simpsons_episodes .
  ?episode dbpedia2:airdate ?airdate .
  ?episode dbpedia2:blackboard ?chalkboard_gag .
  FILTER langMatches( lang(?chalkboard_gag), 'en') .
  FILTER xsd:dateTime(?airdate)
}
ORDER BY ?airdate

我知道的一件事会产生不同的结果,那就是查询超时。 Virtuoso可以在运行一段时间之后切断查询,并且当您尝试使用和/或配置不同的超时时,您的不同端点可能处于不同的负载下。



顺便提一下,我注意到如果这些数据在Needle中,并在Thread而不是SPARQL中查询,则此查询可以简单如下:

Episode:(.Subject:<~The Simpsons)^Airdate|Airdate,Blackboard

除了Needle之外,您可能实际上是为电视节目制作电视节目,而不是依赖于通用SKOS主题/更广泛的抽象级别,因此可能实际上有:

Show:=The Simpsons.Season.Episode|Airdate,Blackboard