DBpedia Spotlight: получить связанный контент
Мне нужно получить список "токенов", которые семантически связаны с определенным запросом: поле "dcterms:subject" на странице DBpedia было бы идеально (см., Например, http://dbpedia.org/page/Michelle_Obama). Я могу правильно получить URL dbpedia, связанный с моим запросом, используя HTTP-запрос CURL http. Этот запрос
"text=Michelle%20Obama.&confidence=0.2&support=20";
возвращает этот объект:
{ "@text": "Michelle Obama.", "@confidence": "0.2", "@support": "20", "@types": "", "@sparql": "", "@policy": "whitelist", "Resources": [ { "@URI": "http://dbpedia.org/resource/Michelle_Obama", "@support": "321", "@types": "DBpedia:OfficeHolder,DBpedia:Person,Schema:Person,Freebase:/award/ranked_item,Freebase:/award,Freebase:/organization/organization_member,Freebase:/organization,Freebase:/book/book_subject,Freebase:/book,Freebase:/celebrities/celebrity,Freebase:/celebrities,Freebase:/people/person,Freebase:/people,Freebase:/tv/tv_actor,Freebase:/tv,Freebase:/education/honorary_degree_recipient,Freebase:/education", "@surfaceForm": "Michelle Obama", "@offset": "0", "@similarityScore": "0.20646192133426666", "@percentageOfSecondRank": "-1.0" }] }
На данный момент я использую этот объект только для получения URL-адреса и использую URL-адрес для получения всего HTML-содержимого страницы DBpedia, а затем ищу то, что мне нужно (абзац "dcterms:subject"), но я думаю, что есть более эффективный способ сделать это, может быть, прямо из центра внимания. Как я могу настроить свой запрос, чтобы получить этот список (или что-то похожее) только с одним постом? Мне даже не нужны ссылки, просто список токенов.
1 ответ
Если вам нужен dcterms:subject для ресурса DBpedia, вы можете просто запросить его с помощью запроса SPARQL:
select ?subject { dbpedia:Michelle_Obama dcterms:subject ?subject }
Вы можете выполнить этот запрос в конечной точке DBpedia SPARQL, и нетрудно понять, как можно создать соответствующий URL-адрес запроса. Есть также несколько разных форматов результатов, так что вы можете поэкспериментировать с тем, что лучше всего подходит для вас.
Если под токенами вы просто подразумеваете названия этих категорий, то вы можете запросить и об этом напрямую. Следующее должно работать, но я не могу проверить это в настоящее время; DBpedia, кажется, не работает.
select ?subject {
dbpedia:Michelle_Obama dcterms:subject/rdfs:label ?subject
}