Sparql более точно идентифицирует электростанции - PullRequest
0 голосов
/ 02 октября 2018

Я хотел бы получить все электростанции, а также тип электростанции (Ядерная, Вода, Уголь и т. Д.) Из DBpedia.

Я признал, что нет конкретных типов электростанций, поэтому язапросить все электростанции и попытаться выяснить тип электростанции по названию.(Я не поймаю их всех, но достаточно много).

Мой запрос пока:

PREFIX dbpedia: <http://dbpedia.org/resource/>
PREFIX dbp-ont: <http://dbpedia.org/ontology/>
#PREFIX georss: <http://www.georss.org/georss/>

select distinct *
{
?name rdf:type dbp-ont:PowerStation .
?name geo:lat ?lat .
?name geo:long ?long
OPTIONAL { ?name  dbo:installedCapacity ?installedCapacity }
OPTIONAL { ?name  dbo:openingDate ?openingDate }
OPTIONAL { ?name  dbo:closingDate ?closingDate }
} limit 100 

Есть ли способ получить новое поле с именем 'nuclear', которое имеетзначение «1», если его имя содержит «ядерный»?

1 Ответ

0 голосов
/ 02 октября 2018

Прежде всего следует помнить, что DBpedia данные являются движущейся целью, точно так же, как данные из Википедии, из которых они получены.Обновления Википедии в конечном итоге (как правило, через 3-9 месяцев) будут частью DBpedia.Более быстро (обычно через несколько часов, если не минут или секунд; иногда дни по разным причинам), они станут частью DBpedia-Live .

Долгосрочного решениядля того, чтобы придать каждой электростанции желаемый тип, нужно отредактировать Википедию.

Для вашего конкретного немедленного решения, обратите внимание, что большое количество OPTIONAL предложений может сделать ваш запрос намного более длительным, и поэтому в конечном итоге может означать, чтоэта DBpedia не будет возвращать данные, которые вы хотите.Возможно, вам придется развернуть свое собственное зеркало (например, DBpedia или DBpedia-Live в облаке Amazon EC2).

Наконец, как отметил @AKSW в комментарияхстрока ниже должна поставить вашу переменную ?nuclear с 1, если эта строка появилась в ?name.Просто поставьте его после OPTIONAL строк.

BIND ( IF ( CONTAINS ( LCASE ( STR ( ?name ) ), "nuclear" ), 1, 0 ) AS ?nuclear )
...