SPARQL如何在中接收非空的?s:选择?s?p?o,其中{<;http://subject.url>?p?o}

SPARQL如何在中接收非空的?s:选择?s?p?o,其中{<;http://subject.url>?p?o},sparql,Sparql,所以,当我在WHERE子句中指定主语的值时,我不会得到它。但我需要它,怎么做 例如,当我有一个查询时: SELECT ?s ?p ?o WHERE{ <http://subject.url/title> ?p ?o . } 选择s?p?o 在哪里{ ?p?o。 } 因此,我将只包含?p和?o列,但包含空的?s。如果我想把整个三人组都放在s栏里怎么办 选择s?p?o SELECT ?s ?p ?o WHERE { BIND (<http://subject.url/

所以,当我在WHERE子句中指定主语的值时,我不会得到它。但我需要它,怎么做

例如,当我有一个查询时:

SELECT ?s ?p ?o
WHERE{
  <http://subject.url/title> ?p ?o .
 }
选择s?p?o
在哪里{
?p?o。
}
因此,我将只包含?p和?o列,但包含空的?s。如果我想把整个三人组都放在s栏里怎么办

选择s?p?o
SELECT ?s ?p ?o
WHERE {
  BIND (<http://subject.url/title> as ?s)
  ?s ?p ?o .
}
在哪里{ 绑定(如?s) ?s?p?o。 }

资料来源:

这是个好地方用于指定一个(或多个)变量以及这些变量应绑定到的任意数量的值。虽然您可以使用bind来处理一个值的简单情况,values(在我看来)更好,因为:(i)它的输入更少;(ii)如果以后需要一些?s值,它更易于扩展

选择s?p?o{
值?s{}
?s?p?o
}
如果以后需要有关?s的两个值的信息,可以轻松地执行此操作:

选择s?p?o{
值?s{
}
?s?p?o
}

SELECT?sp?o其中{s?p?o.FILTER(?s=)}
甚至更好
SELECT?s?p?o{values?s{}s?p?o}