Есть ли способ использовать переменную, не возвращая ее с помощью SPARQL "select *"?

Есть ли способ использовать переменную-заполнитель с SPARQL, не возвращая ее при использовании SELECT *?

Например:

SELECT * WHERE { 
   ?s dcterms:title ?title; 
      foaf:person ?name. 
   ?s2 :inProject ?s. 
}

Где я не хотел бы вернуть ?s переменная, просто ?title, ?name, а также ?s2 переменные, оставляя SELECT *,

Я понимаю, что могу ограничить выбранные результаты, используя SELECT ?title ?name ..., но мне просто любопытно, есть ли какая-то запись для переменных-заполнителей или какой-то способ управления этим.


РЕДАКТИРОВАТЬ:

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

SELECT * WHERE { 
   _:s dcterms:title ?title; 
       foaf:person ?name. 
   ?s2 :inProject _:s. 
}

Однако разве это не вызывает проблем, поскольку пустые узлы не могут использоваться в основных графовых шаблонах? Например, это нарушается в случае:

SELECT * WHERE { 
   _:s dcterms:title ?title; 
       foaf:person ?name. 
   OPTIONAL { ?s2 :inProject _:s. }
}

Спасибо!

1 ответ

Решение

Для переменных, ограниченных одним шаблоном, да, используйте синтаксис пустой переменной узла, как вы продемонстрировали в своем вопросе

В общем случае нет, если вы используете переменную, то SELECT * вернет это.

Одним из возможных способов решения этой проблемы является использование подзапросов, в которых вы вносите список переменных и пропускаете переменные, которые вам не нужны, например

SELECT * WHERE
{ 
  {
    SELECT ?title ?name ?s2 WHERE 
    {
      ?s dcterms:title ?title; 
      foaf:person ?name. 
      OPTIONAL{ ?s2 :inProject ?s. }
    }
  }
}

Но потом я предполагаю, что это именно то, чего вы пытаетесь избежать, так как в конечном итоге вы в конечном итоге перечисляете переменные.

Другие вопросы по тегам