0

我正在运行此查询以从DBPedia 公共 SPARQL 端点获取所有化合物的列表。

SELECT * WHERE {
  ?y rdf:type dbpedia-owl:Drug.
  ?y rdfs:label ?Name .
  OPTIONAL {?y dbpedia-owl:iupacName ?iupacname} .
  OPTIONAL {?y dcterms:subject ?y1}
  FILTER (langMatches(lang(?Name),"en"))
}
LIMIT 50000

我正在使用offset参数分批下载 50000 个(2 个文件)。

不知何故,即使页面存在于

它具有我正在寻找的属性?

4

2 回答 2

0

也许在您使用的 LIMIT/OFFSET 组合中找不到它。除非您使用 ORDER BY,否则服务器没有义务每次都以相同的顺序回答查询,因此您拥有的切片实际上并不是所有结果。

也许 SPARQL 站点和 live.dbpedia 不同步。

尝试直接询问异丙醇。

于 2013-08-28T12:02:47.487 回答
0

这里有两个问题。首先是DBpedia Live和DBpedia的内容并不完全相同。根据DBpedia 现场网页

维基百科用户不断地修改维基百科的文章,几乎每秒都在更新。因此,存储在官方 DBpedia 端点中的数据很快就会过时,需要重新提取 Wikipedia 文章。DBpedia Live 实现了 DBpedia 和 Wikipedia 之间的这种持续同步。

该页面还列出了 DBpedia Live 的两个 SPARQL 端点:

但是,您会在这两个方面都遇到问题。异丙醇在 DBpedia 中,它的 URI 是

看那里,我们看到异丙醇没有rdf:type dbpedia-owl:Drug,而只有

因此您将无法通过 DBpedia 上的查询找到它,因为它没有类型 `dbpedia-owl:Drug. 现在,异丙醇也存在于 DBpedia live 中,其 URL 为

但它只有以下rdf:types:

因此,出于同样的原因,您在 DBpedia Live 上的查询不会找到它。

第二个问题是 AndyS指出的问题。即使查询将在 DBpedia 或 DBpedia Live 中选择 Isopropyl_alcohol,除非您提供排序约束,limit/offset否则无法保证组合返回它,因为没有排序约束,服务器可以合法地向您返回同一组 50000 个结果每次。

于 2013-08-28T13:45:21.517 回答