sparql中ASK查询的绑定结果

sparql中ASK查询的绑定结果,sparql,Sparql,我正在学习sparql,目前正在处理一个select查询,希望将ASK查询的结果绑定到对象变量 ASK查询本身正在工作,但在另一个查询中使用该查询时遇到问题 这是ASK查询: PREFIX schema: <http://domain.com/app/schema/> ASK { GRAPH <http://domain.com/app/data/something> { ?s schema:code "ANS"^^<http://www.w3.org

我正在学习sparql,目前正在处理一个select查询,希望将ASK查询的结果绑定到对象变量

ASK查询本身正在工作,但在另一个查询中使用该查询时遇到问题

这是ASK查询:

PREFIX schema: <http://domain.com/app/schema/>

ASK { GRAPH <http://domain.com/app/data/something> {

     ?s schema:code "ANS"^^<http://www.w3.org/2001/XMLSchema#string> ;
     schema:someid "12345678"^^<http://www.w3.org/2001/XMLSchema#string> ;
     schema:startdate ?startdate .

     OPTIONAL { ?s schema:enddate ?enddate }
     BIND(IF(BOUND(?enddate), ?enddate, now()) AS ?resultdate)
     FILTER(?resultdate >= now() && ?startdate < now())
     }
}
我做了一些尝试,但无法生成具有有效语法的查询:

PREFIX schema2: <http://domain.com/app2/schema/>
PREFIX schema: <http://domain.com/app/schema/>

select ?s ?p ?o 
where 
{ GRAPH <http://http://domain.com/app2/data/something>
{?s ?p ?o } .

BIND() {
    ASK { GRAPH <http://domain.com/app/data/something> {

    ?s schema:code "ANS"^^<http://www.w3.org/2001/XMLSchema#string> ;
    schema:someid "12345678"^^<http://www.w3.org/2001/XMLSchema#string> ;
    schema:startdate ?startdate .

    OPTIONAL { ?s schema:enddate ?enddate }
    BIND(IF(BOUND(?enddate), ?enddate, now()) AS ?resultdate)
    FILTER(?resultdate >= now() && ?startdate < now())
    }
}
}

FILTER(?s = <http://domain.com/app2/data/something/100024>)
}
前缀模式2:
前缀架构:
选择s?p?o
哪里
{图
{?s?p?o}。
绑定(){
ASK{图{
?s模式:代码“ANS”^^;
模式:someid“12345678”^^;
模式:startdate?startdate。
可选{s架构:enddate?enddate}
绑定(如果(绑定(?enddate),?enddate,now())为?resultdate)
筛选器(?resultdate>=now()&?startdate

如何实现这一点的任何建议/示例?

您可以将
BIND
与表达式一起使用,但不能与查询表单一起使用(
SELECT
ASK
,等等)

您可以做的是用
exists
模式替换
ASK
。像这样的

PREFIX schema2: <http://domain.com/app2/schema/>
PREFIX schema: <http://domain.com/app/schema/>

select ?id ?status
where 
{ 
   GRAPH <http://http://domain.com/app2/data/something>
   { 
      ?s schema:someid ?id ;
   }

   BIND( exists 
   {
      GRAPH <http://domain.com/app/data/something> 
      {
         ?s schema:code "ANS"^^<http://www.w3.org/2001/XMLSchema#string> ;
            schema:startdate ?startdate .

         OPTIONAL { ?s schema:enddate ?enddate }
         BIND(IF(BOUND(?enddate), ?enddate, now()) AS ?resultdate)
         FILTER(?resultdate >= now() && ?startdate < now())
      }
   } as ?status)
}
前缀模式2:
前缀架构:
选择?id?状态
哪里
{ 
图表
{ 
?s模式:someid?id;
}
绑定(存在)
{
图表
{
?s模式:代码“ANS”^^;
模式:startdate?startdate。
可选{s架构:enddate?enddate}
绑定(如果(绑定(?enddate),?enddate,now())为?resultdate)
筛选器(?resultdate>=now()&?startdate
这太棒了!不知道EXISTS操作符。谢谢
PREFIX schema2: <http://domain.com/app2/schema/>
PREFIX schema: <http://domain.com/app/schema/>

select ?id ?status
where 
{ 
   GRAPH <http://http://domain.com/app2/data/something>
   { 
      ?s schema:someid ?id ;
   }

   BIND( exists 
   {
      GRAPH <http://domain.com/app/data/something> 
      {
         ?s schema:code "ANS"^^<http://www.w3.org/2001/XMLSchema#string> ;
            schema:startdate ?startdate .

         OPTIONAL { ?s schema:enddate ?enddate }
         BIND(IF(BOUND(?enddate), ?enddate, now()) AS ?resultdate)
         FILTER(?resultdate >= now() && ?startdate < now())
      }
   } as ?status)
}