Борьба с 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.
}
Другие вопросы по тегам