Sparql 使用带有构造的LIMIT时出现意外结果
使用Sparql 使用带有构造的LIMIT时出现意外结果,sparql,Sparql,使用LIMIT在这个构造查询中发生了一些奇怪的事情。我希望分别为限制1和限制2收到1或2个解决方案,即一个或两个图,但我总是得到两个图,有11或12个三元组 CONSTRUCT { ex:sceneResource skos:related ?newSceneSubject. ?newSceneSubject a lcx:Scene ; dcterms:subject ?type ; lcx:hasTitle
LIMIT
在这个构造
查询中发生了一些奇怪的事情。我希望分别为限制1
和限制2
收到1或2个解决方案,即一个或两个图,但我总是得到两个图,有11或12个三元组
CONSTRUCT {
ex:sceneResource skos:related ?newSceneSubject.
?newSceneSubject a lcx:Scene ;
dcterms:subject ?type ;
lcx:hasTitle ?title ;
lcx:describedBy ?thumbNail ;
lcx:motto ?motto ;
lcx:freebaseID ?freebaseID
}
WHERE {
{ ?newSceneSubject a ex:interestType1 }
UNION
{ ?newSceneSubject a ex:interestType2 }
?newSceneSubject lcx:hasTitle ?title ;
a ?type .
lcx:freebaseID ?freebaseID .
OPTIONAL { ?newSceneSubject lcx:motto ?motto }
OPTIONAL { ?newSceneSubject lcx:describedBy ?thumbNail }
}
LIMIT 2
我是否误解了
CONSTRUCT
中的限制
,或者Jena API中存在缺陷?您的问题对于您期望的内容和实际得到的内容有点不清楚,但我还是会尝试回答
LIMIT
适用于查询的WHERE
部分,在中有一个将LIMIT
与构造一起使用的示例,它说明了以下内容:
构造模板的输出图形仅由两个图形组成
图模式匹配的求解方法
i、 e.它从WHERE
子句中最多取两行,并将它们馈送到构造
模板
由于模板可能会生成多个三元组,因此实际的最大结果数是限制乘以模板中三元组模式的数量。由于模板中的单个模式可能会生成无效的三元组(并且这些三元组会根据被丢弃),因此实际获得的三元组数量可能会更低:
如果任何这样的实例化产生一个包含未绑定
变量或非法的RDF构造,例如subject或
谓词位置,则该三元组不包括在输出RDF中
图表
因此,根据您的描述和规范,Jena的行为完全正确。谢谢Rob。我会澄清我的忧虑。查询构造{skos:related?newSceneSubject.}其中{newSceneSubject rdf:type}UNION{newSceneSubject rdf:type}UNION{newSceneSubject rdf:type}.“?newSceneSubject rdf:type?type.}LIMIT 3”返回一个单三重图,同一查询(限制为30)返回四个单三重图。也就是说,WHERE部分至少有4个解决方案,但当我设置限制3时,只返回一个。@user2498899完全不可读,请使用“编辑”按钮编辑您的问题并添加其他详细信息。另外,我不明白返回多个图是什么意思,构造
返回一个RDF图,因此您也应该真正解释问题的这一部分-最好显示预期结果与实际结果