2014-11-03 4 views
0

У меня есть список пользователей википедии и статьи, которые они редактировали.
Я пытаюсь создать иерархический профиль для каждого из них.Получить родительскую категорию для статей в википедии

Проблема в том, что я изо всех сил пытаюсь получить родительские категории для каждой статьи.
То, что я хочу, это, например, статья о пицце, чтобы получить «блюда» или «пищу».
Я использую Йене и Яго и простой SPARQL запрос, который выглядит следующим образом:

String sparqlQueryString = "BASE <http://yago-knowledge.org/resource/>" 
       + "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> " 
       + "SELECT ?supercat WHERE { " 
       + "<" + child + ">" + " rdf:type ?supercat . " 
       + "}"; 

(где ребенок здесь является статья)
Так я хотел бы спросить, если кто-нибудь знает, как получить правильный родитель категория из этого. А также, если это возможно, или у кого есть идеи о том, чтобы упорядочить все заголовки статей и их родителей в профиль интересов иерархических пользователей.

+0

Это не запрос SPARQL; это Java-код, который * может * построить запрос SPARQL или построить что-то еще, в зависимости от того, что такое значение 'child'. –

+0

Статья не является категорией, поэтому она не имеет родительской категории. Вы хотите сказать, что вам нужны категории, к которым принадлежит статья? –

+0

Да, это строка, строящая запрос SPARQL, но вы знаете, что я имел в виду.и да, я хочу получить родительскую категорию статьи, но я получаю много родительских категорий, и я хотел бы знать, можно ли получить лучшие результаты. Как просто для статьи, такой как пицца, получают «еду» или «блюда». Спасибо – paskun

ответ

1

Непонятно, что вы просите. Категория будет иметь super -categories и под -категории, а статья относится к категориям, но статья не содержит родителей категорий. Если вы посмотрите на HTML-рендеринг ресурса DBpedia, вы увидите, что его категории являются значениями dcterms: subject. Например, в dbpedia:Pizza, вы можете увидеть

  • dcterms: предметные
    • Категория: лепешек
    • категория: Greek_inventions
    • категория: Italian_cuisine
    • категория: Italian_inventions
    • категория: Mediterranean_cuisine
    • Категория: Пиццы
    • категория: World_cuisine

Таким образом, вы можете использовать запрос, чтобы это получить эти значения:

select ?category { dbpedia:Pizza dcterms:subject ?category } 

SPARQL results

Теперь, если вы имеют категорию, например, category:Flatbreads, и вы actua lly хотят его суперкатегории, вы можете видеть, что они связаны skos: более широким. Итак:

select ?supercategory { category:Flatbreads skos:broader ?supercategory } 

SPARQL results

+0

Спасибо. это немного помогает. Однако моя проблема заключается в том, что у меня много статей, и я хочу получить одну значимую суперкатегорию для каждого из них (автоматическим способом, который был бы замечательным), поэтому я могу построить что-то вроде иерархического дерева из всего этого. Я не знаю, достаточно ли я. Не стесняйтесь спрашивать, если нет. И большое спасибо за ваше время и вашу помощь – paskun

+0

Что вы подразумеваете под суперкатегорией? Статьи относятся к категориям, а категории могут иметь суперкатегории, но сами статьи не имеют суперкатегорий. Что здесь означает «значащий»? Stack Overflow - отличное место для конкретных технических вопросов, но не может помочь определить «значимый»; это больше связано с конкретным приложением. Если вы можете количественно определить «значимый», мы можем, вероятно, придумать запрос SPARQL для его получения. –

+0

@paskun Вы могли бы, например, получить категорию, которая имеет наибольшее количество статей, но является ли это обязательным? Может быть, но некоторые категории не все, что полезно (например, если бы были категории «статьи со словом« the », то к этой статье принадлежала бы только каждая статья *). –