If statement Sparql绑定()不工作
我是Sparql的新手,我有一个从不同主题(比如parent和parentG)获取属性的查询 我试过使用If statement Sparql绑定()不工作,if-statement,bind,sparql,If Statement,Bind,Sparql,我是Sparql的新手,我有一个从不同主题(比如parent和parentG)获取属性的查询 我试过使用 PREFIX ac: <http://ac.com/ns/> PREFIX dcterms: <http://purl.org/dc/terms/> PREFIX rdf: <htp://www.w3.org/1999/02/22-rdf-syntax-ns#> CONSTRUCT { ?item dcterms:isPartOf ?parent
PREFIX ac: <http://ac.com/ns/>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX rdf: <htp://www.w3.org/1999/02/22-rdf-syntax-ns#>
CONSTRUCT
{
?item dcterms:isPartOf ?parent .
?parent dcterms:isPartOf ?parentG .
?item ac:scopedItem ?scopedItem .
}
WHERE
{
BIND ( <http://ac.com/content/Test1> as ?item ) .
?item dcterms:isPartOf ?parent .
?parent dcterms:isPartOf ?parentG .
OPTIONAL
{
OPTIONAL {?parent ac:htmlAdv ?advert .}
BIND ( IF (BOUND (?advert), ?parent, ?parentG ) as ?scopedItem ) .
}
}
前缀ac:
前缀dcterms:
前缀rdf:
构造
{
?项目术语:isPartOf?父项。
?父dcterms:isPartOf?parentG。
?ac项:scopedItem?scopedItem。
}
哪里
{
绑定(作为?项)。
?项目术语:isPartOf?父项。
?父dcterms:isPartOf?parentG。
可选的
{
可选{?父ac:htmlAdv?广告。}
绑定(如果(绑定(?广告),?父级,?父级)作为?scopedItem)。
}
}
如果
?广告
未从?父项
绑定,我想使用?父项
并将其设置为?scopedItem
。这是行不通的。我们正在使用Sparql 1.1您的问题是范围问题,Sparql是自下而上评估的,因此在您放置BIND
语句的地方,?parent
或?parentG
都不在范围内,因此无论?advert
是否绑定,您都不会返回任何内容
您需要在查询中将BIND
语句移出一个级别,然后它应该可以正常工作:
PREFIX ac: <http://ac.com/ns/>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX rdf: <htp://www.w3.org/1999/02/22-rdf-syntax-ns#>
CONSTRUCT
{
?item dcterms:isPartOf ?parent .
?parent dcterms:isPartOf ?parentG .
?item ac:scopedItem ?scopedItem .
}
WHERE
{
BIND ( <http://ac.com/content/Test1> as ?item ) .
?item dcterms:isPartOf ?parent .
?parent dcterms:isPartOf ?parentG .
OPTIONAL
{
?parent ac:htmlAdv ?advert .
}
BIND ( IF (BOUND (?advert), ?parent, ?parentG ) as ?scopedItem ) .
}
前缀ac:
前缀dcterms:
前缀rdf:
构造
{
?项目术语:isPartOf?父项。
?父dcterms:isPartOf?parentG。
?ac项:scopedItem?scopedItem。
}
哪里
{
绑定(作为?项)。
?项目术语:isPartOf?父项。
?父dcterms:isPartOf?parentG。
可选的
{
?父ac:htmlAdv?广告。
}
绑定(如果(绑定(?广告),?父级,?父级)作为?scopedItem)。
}
注意:这也使得使用两个
可选
子句变得不必要谢谢Rob.,这是及时且有用的。。我得到了我的要求工作。