Во-первых, я собирался выразить запрос, например COUNT(?sub) AS ?sub_exists
, и проверить, равен ли ?sub_exists
0 или нет, с помощью счетного числа.Однако этот запрос занимает слишком много времени, поэтому иногда он занимает больше времени ожидания.Поэтому я во-вторых попытался изменить функцию, как показано ниже.Но это также занимает все время, считая ?sub
и, что еще хуже, значения ?sub_exists
не назначаются.
Есть ли альтернативный способ выразить запрос на , просто отметив тройной ?sub wdt:P31/wdt:P279* ?s
или нет, и получить его флаг соответственно без двух больших затрат времени?
SELECT ?s ?sub_exists
WHERE {
VALUES ?s {wd:Q5}
?sub wdt:P31/wdt:P279* ?s
BIND(IF(COUNT(?sub) > 0,1,0) AS ?sub_exists)
}
GROUP BY ?s ?sub_exists