Sparql加入问题

时间:2015-01-31 16:45:04

标签: join rdf sparql

我对SPARQL和RDF有点新意,虽然我喜欢它,但我被卡住了!

因此,我的应用创建了一个带有标签'test6'的东西,一个唯一的ID,并自动创建一个与'test6'相关联的默认章节,带有ID和标签'Overview'。我希望所有章节标签与标签为“test6”的东西相关联,即“概述”

所以存在以下三元组(注意,我必须修剪谓词,因为stackoverflow限制了帖子中的链接):

local:qUak8jXvdkw someOntology:label test6

local:qUak8jXvdkw someOntology:hasChapter qUak8jXvdkwOverview

local:qUak8jXvdkwOverview someOntology:label Overview

当我运行此查询时:

PREFIX someOntology: <http://www.w3.org/2000/01/rdf-schema#> 
SELECT ?id, ?chapterId, ?chapterLabel 
WHERE 
{ 
    ?id someOntology:label 'test6' . 
    ?id someOntology:hasChapter ?chapterId . 
    ?chapterId someOntology:label ?chapterLabel .  
} 

它返回一个空集。

我明白我可以使用三元组的对象作为另一个的主题来加入它们是正确的吗?

如果我使用可选{},那么:

PREFIX someOntology: <http://www.w3.org/2000/01/rdf-schema#> 
SELECT ?id, ?chapterId, ?chapterLabel 
WHERE 
{ 
    ?id someOntology:label 'test6' . 
    ?id someOntology:hasChapter ?chapterId . 
    OPTIONAL{?chapterId someOntology:label ?chapterLabel} .  
}

它返回以下内容:

<[{
"id":{"type":"uri","value":"local:qUak8jXvdkw"},
"chapterId":{"type":"literal","value":"qUak8jXvdkwOverview"},
"chapterLabel":{}
}]>

如果有任何用途,我正在使用4store。

提前感谢任何指示..

1 个答案:

答案 0 :(得分:3)

数据中文字和URI之间的混淆。

数据有:

local:qUak8jXvdkw someOntology:hasChapter qUak8jXvdkwOverview
local:qUak8jXvdkwOverview someOntology:label Overview

(上面引用的第一行是松散的&#34;&#34;在qUak8jXvdkwOverview上 - 结果表明它有)

这部分

?id someOntology:hasChapter ?chapterId .

导致结果:

"chapterId":{"type":"literal","value":"qUak8jXvdkwOverview"},

所以?chapterId这里是文字"qUak8jXvdkwOverview"

但是查询有:

?chapterId someOntology:label ?chapterLabel . 

所以?chapterId这里是URI local:qUak8jXvdkwOverview(文字无论如何都不能成为主题)。