1

我设置了 Sesame (openrdf.org) 服务器并尝试通过 Java API 访问它。

出于测试目的,我使用了来自 Wikipedia 的一个非常简单的示例:

<?xml version="1.0" encoding="UTF-8" ?>
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:dc="http://purl.org/dc/elements/1.1/">
  <rdf:Description rdf:about="http://de.wikipedia.org/wiki/Resource_Description_Framework">
 <dc:title>Resource Description Framework</dc:title>
 <dc:publisher>Wikipedia - Die freie Enzyklopädie</dc:publisher>
</rdf:Description>
</rdf:RDF> 

<?xml version="1.0" encoding="UTF-8" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/">
  <rdf:Description rdf:about="http://de.wikipedia.org/wiki/Resource_Description_Framework">
    <dc:title>Resource Description Framework 2</dc:title>
    <dc:publisher>Wikipedia - Die freie Enzyklopädie</dc:publisher>
  </rdf:Description>
</rdf:RDF>

Sesame 工作台上的 SPARQL 查询按预期工作:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?title
WHERE{
?res dc:publisher ?pub .
?res dc:title ?title

FILTER (
sameTerm(?pub, "Wikipedia - Die freie Enzyklopädie")
)
}

返回出版商“Wikipedia - Die freie Enzyklopädie”的所有标题。

现在对于 Java API,我尝试将这个示例转换为 SERQL。

我尝试了以下查询:

SELECT title 
FROM {title} dc:publisher {"Wikipedia - Die freie Enzyklopädie"}
USING NAMESPACE
rdf = <http://www.w3.org/1999/02/22-rdf-syntax-ns#>,
dc = <http://purl.org/dc/elements/1.1/>

但这会返回所有数据而不是标题,而是来自 rdf:about 的 URL。我还尝试了不同的变体,例如“dc:title”而不是“title”,但我根本没有得到任何结果。

我已经在网上搜索并阅读了很多文档。但不知何故,我并没有真正了解 SERQL 语法。

你有什么指针给我吗?结果,我如何从特定出版商那里获得所有标题?

非常感谢!

4

1 回答 1

0

首先,芝麻用户文档中有一个完整的SeRQL 手册,这应该可以帮助您理解 SeRQL 的语法。

至于您的特定查询,问题在于您的 SeRQL 查询与您之前提供的 SPARQL 查询不同。我不会在这里详细介绍,但您的 SPARQL 查询的 SeRQL 等效项将是:

SELECT title 
FROM {res} dc:publisher {"Wikipedia - Die freie Enzyklopädie"}; 
           dc:title {title}
USING NAMESPACE
rdf = <http://www.w3.org/1999/02/22-rdf-syntax-ns#>,
dc = <http://purl.org/dc/elements/1.1/>

SeRQL 表示形式为 的三重模式{subject} predicate {object}

于 2011-07-07T23:43:31.623 回答