json - 使用 JSON API 查找 DBpedia gloss

标签 json sparql semantic-web dbpedia

是否有使用 DBpedia JSON API 快速轻松地在 DBpedia 中查找特定 URI 的 Wikipedia gloss 文本?

例如我可以通过下载 http://dbpedia.org/data/Cat.json 获得 DBpedia 关于猫的所有三元组,但我想要的只是带有 {"type": "literal"...} 的三元组。我可以在不下载和解析整个 JSON 输出的情况下得到这个吗? JSON API 似乎不支持任何类型的过滤,而且我找不到任何文档。

最佳答案

听起来您正在寻找的是 [dbpedia:Cat ?p ?o] 形式的所有三元组,其中 ?o 是文字。您可以通过针对 public DBpedia endpoint 的 SPARQL CONSTRUCT 查询获得那些并以 RDF/JSON 格式请求结果。

construct where {
  dbpedia:Cat ?p ?o
  filter isLiteral(?o)
}

SPARQL results

构造查询是 SPARQL 标准的一部分,在 16.2 CONSTRUCT 中有描述。 . 如果您使用 sparql-client for Python (虽然这个问题没有语言标签,所以没有理由假设一般读者会这样),请注意 its documentation说:

sparql-client is a SPARQL query library that performs SELECT and ASK queries against a SPARQL endpoint via HTTP.

由于此特定客户端不支持 CONSTRUCT 查询,因此您需要改用 SELECT 查询。您可以使用:

select ?p ?o { 
  dbpedia:Cat ?p ?o 
  filter isLiteral(?o)
}

SPARQL results

生成的 JSON 格式不完全相同,但它仍然很规则,您可以轻松处理它:

{ "head": { "link": [], "vars": ["p", "o"] },
  "results": { "distinct": false, "ordered": true, "bindings": [
    { "p": { "type": "uri", "value": "http://dbpedia.org/ontology/abstract" }   , "o": { "type": "literal", "xml:lang": "nl", "value": "De kat of huiskat (Felis catus) is een van de oudste huisdieren van de mens. De gedomesticeerde kat behoort tot de familie der katachtigen (Felidae). De oude soortnaam was Felis domesticus, tegenwoordig is deze vervangen door Felis catus. Eind 2009 waren in Nederland ongeveer 3,6 miljoen katten aanwezig." }},
    …
    { "p": { "type": "uri", "value": "http://dbpedia.org/ontology/conservationStatus" } , "o": { "type": "literal", "xml:lang": "en", "value": "DOM" }},
    { "p": { "type": "uri", "value": "http://dbpedia.org/ontology/synonym" }    , "o": { "type": "literal", "xml:lang": "en", "value": "Felis catus domestica (invalid junior synonym)" }},
    { "p": { "type": "uri", "value": "http://dbpedia.org/ontology/synonym" }    , "o": { "type": "literal", "xml:lang": "en", "value": "Felis silvestris catus (subjective synonym)" }},
    { "p": { "type": "uri", "value": "http://dbpedia.org/ontology/wikiPageID" } , "o": { "type": "typed-literal", "datatype": "http://www.w3.org/2001/XMLSchema#integer", "value": "6678" }},
    { "p": { "type": "uri", "value": "http://dbpedia.org/ontology/wikiPageRevisionID" } , "o": { "type": "typed-literal", "datatype": "http://www.w3.org/2001/XMLSchema#integer", "value": "547667240" }},
    { "p": { "type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label" } , "o": { "type": "literal", "xml:lang": "zh", "value": "\u732B" }},
    { "p": { "type": "uri", "value": "http://www.w3.org/2000/01/rdf-schema#label" } , "o": { "type": "literal", "xml:lang": "de", "value": "Hauskatze" }},
    …

关于json - 使用 JSON API 查找 DBpedia gloss,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25559605/

相关文章:

nlp - 如何实现知识图谱

php - 遍历 JSON NSDictionary

json - PostgreSQL-JSON

aggregate-functions - 将聚合函数的结果绑定(bind)到投影变量

scala - 比较模型的同一性,但与变量?用减号构造?

localization - 维基数据 SPARQL : how to include labels for grouped-by attributes

sparql - 通过耶拿发布时,COUNT 聚合在 DBPedia 上不起作用

rdf - 哪个 Triplestore 用于快速语义 Web 开发?

javascript - 如何显示来自 JsonRestStore 的数据

android - 在 flutter 中解析来自 WordPress 自定义帖子类型的 JSON 数据