我是 SPARQL 的新手,我正在尝试以 SQL 连接方式从三元组中获取一些结果。
例如,我正在查找某个图像所属的对象的 ID,以及该对象的作者的 ID,等等。
RDF 关系定义如下:
<image> <isResourceOf> <object>
<person> <isAuthorOf> <object>
我试过这个:
SELECT ?o ?a from <#ri>
WHERE {
{<myns:myImageID> <myns:isResourceOf> ?o}
UNION
{?a <myns:isAuthorOf> ?o}
}
但这会吸引所有作者,因为这两个?o
变量没有绑定。
我如何才能仅匹配第一个匹配集的作者?
谢谢
通用汽车
编辑:
更完整的例子:
PREFIX aic: <http://mydomain.org/definitions/1.0/fedora/3#>
SELECT *
WHERE {
<info:fedora/AICTEST:DOResImg-G38562> aic:isResourceOf ?o .
?a aic:isAuthorOf ?o .
}
没有结果。
SELECT *
WHERE {
<info:fedora/AICTEST:DOResImg-G38562> aic:isResourceOf ?o .
}
结果(CSV):
"o"
AICTEST:DOArtObj-1946.479
有了这个:
SELECT *
WHERE {
?a aic:isAuthorOf ?o .
}
结果:
"a","o"
info:fedora/AICTEST:DOAgent-35729,info:fedora/AICTEST:DOArtObj-1946.479
info:fedora/AICTEST:DOAgent-35729,AICTEST:DOObjSet-1946.494