从 DBPedia 导入数据到 GraphDB
Import data from DBPedia into GraphDB
我基本上希望使用 SPARQL 构造查询将数据从 DBPEdia 检索到本地版本的 GraphDB。构造查询应该能够映射到与音乐相关的尽可能多的关系和数据。我已经尝试 运行 在 GraphDB Workbench 中构建查询,但我不确定如何去做。
在GraphDB的在线教程中,他们总是使用文件或在线资源导入数据,我找不到任何使用构造查询直接在数据库中获取数据的示例。
如有任何相关建议,我们将不胜感激。感谢您花时间提供帮助。
GraphDB支持导入已转换为RDF数据格式的数据。从 DBPedia 等外部端点导入数据的最简单方法是使用 SPARQL 联合。这是一个示例查询,它从远程端点获取数据并将其导入当前选择的 GraphDB 存储库:
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
INSERT {
?s ?p ?o2
}
WHERE {
# Execute the query against DBPedia's endpoint
SERVICE <http://dbpedia.org/sparql> {
SELECT ?s ?p ?o2
{
# Select all triples for Madonna
?s ?p ?o
FILTER (?s = <http://dbpedia.org/resource/Madonna_(entertainer)>)
# Hacky function to rewrite all Literals of type rdf:langStrings without a language tag
BIND (
IF (
(isLiteral(?o) && datatype(?o) = rdf:langString && lang(?o) = ""),
(STRDT(STR(?o), xsd:string)),
?o
)
AS ?o2
)
}
}
}
不幸的是,DBPedia 和底层数据库引擎因不严格遵守 SPARQL 1.1 和 RDF 1.1 规范而臭名昭著。 returns 类型 rdf:langString 的 RDF 文字服务没有适当的语言标签:
...
<result>
<binding name="s"><uri>http://dbpedia.org/resource/Madonna_(entertainer)</uri></binding>
<binding name="p"><uri>http://dbpedia.org/property/d</uri></binding>
<binding name="o"><literal datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString">Q1744</literal></binding>
</result>
...
克服这个问题的唯一方法是添加一个额外的过滤器,动态重写它们。
我基本上希望使用 SPARQL 构造查询将数据从 DBPEdia 检索到本地版本的 GraphDB。构造查询应该能够映射到与音乐相关的尽可能多的关系和数据。我已经尝试 运行 在 GraphDB Workbench 中构建查询,但我不确定如何去做。
在GraphDB的在线教程中,他们总是使用文件或在线资源导入数据,我找不到任何使用构造查询直接在数据库中获取数据的示例。
如有任何相关建议,我们将不胜感激。感谢您花时间提供帮助。
GraphDB支持导入已转换为RDF数据格式的数据。从 DBPedia 等外部端点导入数据的最简单方法是使用 SPARQL 联合。这是一个示例查询,它从远程端点获取数据并将其导入当前选择的 GraphDB 存储库:
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
INSERT {
?s ?p ?o2
}
WHERE {
# Execute the query against DBPedia's endpoint
SERVICE <http://dbpedia.org/sparql> {
SELECT ?s ?p ?o2
{
# Select all triples for Madonna
?s ?p ?o
FILTER (?s = <http://dbpedia.org/resource/Madonna_(entertainer)>)
# Hacky function to rewrite all Literals of type rdf:langStrings without a language tag
BIND (
IF (
(isLiteral(?o) && datatype(?o) = rdf:langString && lang(?o) = ""),
(STRDT(STR(?o), xsd:string)),
?o
)
AS ?o2
)
}
}
}
不幸的是,DBPedia 和底层数据库引擎因不严格遵守 SPARQL 1.1 和 RDF 1.1 规范而臭名昭著。 returns 类型 rdf:langString 的 RDF 文字服务没有适当的语言标签:
...
<result>
<binding name="s"><uri>http://dbpedia.org/resource/Madonna_(entertainer)</uri></binding>
<binding name="p"><uri>http://dbpedia.org/property/d</uri></binding>
<binding name="o"><literal datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString">Q1744</literal></binding>
</result>
...
克服这个问题的唯一方法是添加一个额外的过滤器,动态重写它们。