У меня есть список проверенных идентификаторов пользователей Twitter.
data['screen_name'] = [MOFAJapan_en, serenawilliams, JeffBezos ....]
data['twitter_ids'] = [303735625, 26589987, 15506669 ....]
и я хочу получить их соответствующие Q-ID из Викиданных. Для приведенных выше идентификаторов Twitter-username-ID это будет выглядеть примерно так:
q_id_list = [Q222241, Q11459, Q312556 ....]
Здесь я столкнулся с небольшой сложностью: если вы ищете MOFAJapan_en или MOFA of Japan, API Викиданных не сможет его распознать. Однако у MOFAJapan есть страница викиданных.
Я знаю, что свойство # для имени пользователя Twitter — P2002, но как мне запросить его, не зная Q-ID?
Заранее спасибо.
@Stefan-broxIT-Solutions любой из них подходит, но я прямо сейчас делаю вызов API, используя python-запросы. Я также нашел Q-id из API поиска Google, а затем получил страницу данных вики с этим Q-id, однако она не работает должным образом. Просто нужно искать Q-id на основе идентификатора имени пользователя Twitter.
Учитывая список имен Twitter (внутри VALUES
), этот запрос SPARQL найдет людей:
SELECT ?twitterName ?person
WHERE {
VALUES ?twitterName {
"MOFAJapan_en"
"serenawilliams"
"JeffBezos"
}
?person wdt:P2002 ?twitterName .
}
Он ничего не найдет для MOFAJapan_en
, так как правильное значение, похоже, MofaJapan_en
. Чтобы игнорировать регистр, вы можете использовать FILTER
с LCASE
, но это повысит производительность во время выполнения:
SELECT ?twitterName ?person
WHERE {
VALUES ?twitterName_anyCase {
"MOFAJapan_en"
"serenawilliams"
"JeffBezos"
}
FILTER( LCASE(?twitterName_anyCase) = LCASE(?twitterName) ) .
?person wdt:P2002 ?twitterName .
}
Спасибо @Stefan - Brox IT-Solutions. Это сработало отлично.
Поскольку вы добавили оба тега: вы используете конечную точку API или SPARQL? Можете ли вы отредактировать свой вопрос, включив в него то, что вы пробовали?