Я использую сервис запросов SPARQL https://query.wikidata.org для выполнения довольно тяжелых запросов к нему. Например, следующий запрос возвращает список всех химических соединений (экземпляры Q11173 или его подклассов):
SELECT ?item ?boiling_point ?melting_point ?decomp_point ?mass ?smiles
(GROUP_CONCAT(DISTINCT ?chemFormula; SEPARATOR=", ") AS ?chemFormulae)
(GROUP_CONCAT(DISTINCT ?chemStructure; SEPARATOR=", ") AS ?chemStructures)
WHERE {
?item wd:P31/wdt:P279*|wdt:P279* wd:Q11173.
OPTIONAL { ?item wdt:P2102 ?boiling_point. }
OPTIONAL { ?item wdt:P2101 ?melting_point. }
OPTIONAL { ?item wdt:P2107 ?decomp_point. }
OPTIONAL { ?item wdt:P2067 ?mass. }
OPTIONAL { ?item wdt:P274 ?chemFormula. }
OPTIONAL { ?item wdt:P117 ?chemStructure. }
OPTIONAL { ?item wdt:P233 ?smiles. }
}
GROUP BY ?item ?boiling_point ?melting_point ?decomp_point ?mass ?smiles
Вот прямая ссылка .
Так как тамболее миллиона экземпляров, этот запрос сбивает время ожидания в одну минуту, и я не вижу возможности оптимизировать запрос, потому что даже без свойств и с LIMIT
из 10 записей запрос выполняется ввремя ожидания:
SELECT ?item
WHERE {
?item wd:P31/wdt:P279*|wdt:P279* wd:Q11173.
}
Прямая ссылка .
Я мог бы запросить подклассы индивидуально, написав сценарии «разделяй и властвуй», но прежде чем я это сделал, я хотелпроверьте более простую возможность:
Могу ли я установить программное обеспечение, используемое для этой конечной точки SPARQL, локально и выполнить те же самые запросы локально с увеличенным временем ожидания? Для меня не имеет значения, если запросзанимает несколько часов.
К сожалению, я не могу найти описание программного стека, используемого query.wikidata.org. Если возможно, я бы хотел использовать один и тот же программный стек, чтобы запросы давали одинаковые результаты. Это позволило бы мне повторно использовать большинство инструментов и сценариев, которые я уже использую.