SPARQL: извлечение уникальных объектов из DBpedia - PullRequest
2 голосов
/ 25 декабря 2011

Рассмотрим следующий сценарий:

PREFIX category: <http://dbpedia.org/resource/Category:>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX dbpedia: <http://dbpedia.org/ontology/>

SELECT DISTINCT *
WHERE {
    ?s dcterms:subject category:Living_people .
    ?s foaf:name ?name
}
LIMIT 10000

При запуске я получаю что-то вроде этого:

Sir Alexander Chapman Ferguson
Sir Alex Ferguson

Хотя это разные записи, они определенно являются одними и теми же сущностями,Поэтому я хотел бы уменьшить вывод при обращении к конечной точке SPARQL, т.е. я бы хотел избежать редактирования выходных данных, поскольку в этом случае это может быть затруднительно.Не могли бы вы помочь мне с этим?Что должно быть исправлено в моем запросе?

1 Ответ

1 голос
/ 26 декабря 2011

Как вы видите, когда вы выполняете запрос, обе упомянутые вами строки ссылаются на один и тот же ресурс: <http://dbpedia.org/resource/Alex_Ferguson>. Тот факт, что в результате запроса вы получаете несколько строк, объясняется тем, что у этого человека есть несколько имен.

Поэтому, если вам просто нужно убедиться, что вы не получаете дубликаты в своем приложении, просто убедитесь, что ваше приложение обрабатывает каждое уникальное значение "s" в результате запроса как отдельное лицо.

С другой стороны, если ваша проблема заключается в том, что вы получаете несколько имен для человека, возможно, вы могли бы использовать некоторые другие свойства. Например, dbpedia: полное имя имеет только одну запись, также как и свойства dbpedia: фамилия и dbpedia: данное имя.

...