【问题标题】:SPARQL construct/insert query and blank nodesSPARQL 构造/插入查询和空白节点
【发布时间】:2017-10-11 02:04:37
【问题描述】:

我正在尝试创建一个 SPARQL 查询来构建或插入图表,遵循 BIBFRAME 2.0 模型,使用包含大量数据的个人数据库。我想得到这样的结果:

Subject a bf:Topic, madsrdf:ComplexSubject ;
rdfs:label "Subject" ;
madsrdf:componentList [ a madsrdf:Topic ;
            madsrdf:authoritativeLabel "FirstSubject" ] ;

但我不知道如何在 SPARQL 中做到这一点。我尝试了这个查询,但我总是得到很多空白节点(就像我的数据库中有空“?主题”字段的寄存器一样多):

PREFIX bf: <http://id.loc.gov/ontologies/bibframe/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix madsrdf: <http://www.loc.gov/mads/rdf/v1#>

CONSTRUCT{

    ?subject a bf:Topic, madsrdf:ComplexSubject ;
        rdfs:label ?subject;
        madsrdf:componentList [ a madsrdf:Topic ;
                madsrdf:authoritativeLabel ?firstsubject ];

} where{ service <http://localhost:.......> {
        ?registerRow a <urn:Row> ;
        OPTIONAL{?registerRow <urn:col:Subject> ?subject ;}
        OPTIONAL{?registerRow <urn:col:FirstSubject> ?firstsubject ;}
                     }
}

【问题讨论】:

  • CONSTRUCT 查询的第一部分针对与 WHERE 部分中的模式匹配的每个 RDF 子图完成。可以肯定的是,它将为每一行完成。
  • 而在OPTIONAL部分中,您使用不同的变量?registroRow而不是?registerRow,因此它没有连接,因此,交叉产品有很多条目。
  • 对不起,他们都是?registerRow。问题一直存在。
  • 问题是什么意思?你能展示一些样本数据+相应的结果吗?这将使对问题的理解更容易 - 至少对我来说:D
  • 我在localhost:.. 有一个数据库,有很多列(其中两个是主题和第一主题)和 1200 行,但是在主题和第一主题中只有4 行有值和 1196 个空行(因此它们出现在 OPTIONAL 中)。当我在 SPARQL 中执行查询时,我得到了我想要的图表,相对于 4 行的值,但也有很多带有空行中的空白节点的图表。

标签: mysql sparql rdf graphdb blank-nodes


【解决方案1】:

@Wences,AKSW 回答了你,请仔细阅读。 您没有在 CONSTRUCT 部分使用?registerRow,这就是为什么它对每一行执行一次。

【讨论】:

    猜你喜欢
    • 2012-04-04
    • 2014-03-16
    • 2017-04-12
    • 2017-10-22
    • 2018-03-13
    • 2016-03-14
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    相关资源
    最近更新 更多