2014-08-28 2 views
3

Есть ли быстрый и простой в обращении Текст в словаре Википедии в DBpedia для конкретного URI с API JDON DBpedia?Lookup DBpedia gloss с использованием JSON API

например. Я могу получить все троек DBpedia на котах, загрузив http://dbpedia.org/data/Cat.json, но все, что я хочу, это тройки с {"type" : "literal" ...}. Могу ли я получить это без загрузки и анализа всего вывода JSON? API JSON не поддерживает какой-либо тип фильтрации, и я не могу найти никаких документов.

ответ

5

Похоже, что все, что вы ищете, это все тройки формы [dbpedia: Cat? P? O], где? O - буквальный. Вы можете получить те, у которых есть запрос SPARQL CONSTRUCT, на public DBpedia endpoint и запросить результаты в 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 библиотека запросов SPARQL, что выполняет SELECT и ASK запросов к конечной точке SPARQL через 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" }}, 
    … 
+0

Как ни странно, я получаю «sparql.SparqlException», когда я пытаюсь выполнить ваш запрос с Python [sparql client] (https://pypi.python.org/pypi/sparql-client/). Является ли команда «construct» нестандартной Sparql? – Cerin

+0

@Cerin CONSTRUCT является стандартным, но ваш клиент не поддерживает весь стандарт. Я обновил свой ответ. Вы действительно должны рассмотреть вопрос о добавлении тега [tag: python] к вопросу, если вам нужны решения для определенного языка. –

Смежные вопросы