Как сделать запрос SPARQL, который считает уникальные узлы в предложении OPTIONAL - PullRequest
0 голосов
/ 21 февраля 2020

Я хотел бы сделать SPARQL-запрос, который подсчитывает уникальные узлы в предложении OPTIONAL и без него следующим образом:

SELECT (count(?o) AS ?numA) (count(DISTINCT ?o) AS ?numD) (count(?r) AS ?numO) ?UniqueCountOf_o_within_the_OPTIONAL_clause
WHERE {
  ?i ex:predicate ?o.
  OPTIONAL {
    ?o rdf:type ?r.
  }
}

Значения numA, numD и numO можно получить правильно, но я не У нас нет идеи получения уникального числа? o в предложении OPTIONAL. Есть ли способ сделать запрос, или я должен разделить его на два запроса?

Спасибо.

1 Ответ

0 голосов
/ 21 февраля 2020

Вы можете скопировать значения? O в предложении OPTIONAL в новую переменную? O2, а затем посчитать количество различных значений в? O2.

SELECT (count(?o) AS ?numA) (count(DISTINCT ?o) AS ?numD) (count(?r) AS ?numO) (count(DISTINCT ?o2) AS ?numX) WHERE {
  ?i ex:predicate ?o.
  OPTIONAL {
    ?o rdf:type ?r.
    BIND (?o AS ?o2)
  }
}
...