Борьба с SPARQL-запросом по DBpedia
Моя цель: иметь список смартфонов из DBpedia, связанных с производителями.
Пример:
Iphone 6 | яблоко
Samsung Galaxy S6 | Samsung
Iphone 5 | яблоко
Sony Xperia Z5 | Sony
Что я сделал: я думаю, что это будет запрос на объединение. Итак, в качестве первого шага я попытался получить весь список смартфонов, и мне удалось использовать этот запрос:
SELECT ?phone
where {?phone <http://dbpedia.org/property/type> <http://dbpedia.org/resource/Smartphone>}
Однако мне не удалось получить список производителей. Я попробовал этот запрос, чтобы получить производителя Iphone 6. Но он не работал.
SELECT ?Manufacturer
where {?Manufacturer <http://dbpedia.org/property/manufacturer> <http://dbpedia.org/resource/Smartphone>}
1 ответ
?phone dbp:type dbr:Smartphone
Эта тройка примерно означает: type
из ?phone
является Smartphone
"Это имеет смысл, поэтому вы получаете то, что хотите.
?manufacturer dbp:manufacturer dbr:Smartphone
Эта тройка означает: manufacturer
из ?manufacturer
является Smartphone
". Это не имеет никакого смысла, Smartphone
это не то, что может быть производителем. Вот почему вы не получаете результатов.
То, что вы хотите, это:
type
из?phone
являетсяSmartphone
manufacturer
из?phone
является?manufacturer
В SPARQL:
SELECT *
WHERE {
?phone dbp:type dbr:Smartphone.
?phone dbp:manufacturer ?manufacturer.
}