【问题标题】:Import data from DBPedia into GraphDB将数据从 DBPedia 导入 GraphDB
【发布时间】:2018-11-02 16:59:48
【问题描述】:

我基本上希望使用 SPARQL 构造查询将数据从 DBPEdia 检索到本地版本的 GraphDB。构造查询应该能够映射到与音乐相关的尽可能多的关系和数据。我曾尝试在 GraphDB Workbench 中运行构造查询,但我不确定如何去做。

在 GraphDB 的在线教程中,他们总是使用文件或在线资源导入数据,我找不到任何使用构造查询直接在数据库中获取数据的示例。

对此的任何建议将不胜感激。感谢您抽出宝贵时间提供帮助。

【问题讨论】:

    标签: dbpedia graphdb


    【解决方案1】:

    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 规范而臭名昭著。该服务返回 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>
    ...
    

    解决这个问题的唯一方法是添加一个额外的过滤器,它会即时重写它们。

    【讨论】:

    • 感谢您抽出宝贵时间回答问题。我能够成功地在我的本地 GraphDB 实例中获取数据,我想知道在同一个数据库中扩展和聚合更多数据的最佳方法是什么。我正在做一个项目,作为其中的一部分,我需要一个本地数据库,其中包含大量与音乐相关的数据,我将使用该应用程序对其进行查询。
    • @MuhammadQasim 看看基于MusicBrainzLinkedBrainz。它有各种 RDF 格式的音乐数据。但它有一个滞后,最新的可用转储是从 12/2017 开始的。可用here 如果您对使用 RDF 不严格,您可以随时查看直接使用 MusicBrainz。有一个 API。
    猜你喜欢
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    相关资源
    最近更新 更多