我设置了 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 语法。
你有什么指针给我吗?结果,我如何从特定出版商那里获得所有标题?
非常感谢!