我想要 RDFising 数据,我需要使用 SPARQL 查询(我使用 SPIN)构造一个具有两个属性(Title 和 Author)的对象(Book)。所有书籍都有“标题”,但有时候没有“作者”。
当发生这种情况时,它不会创建这个“书”,我想用“标题”创建它。
我正在使用 GraphDB,这是查询:
prefix spif: <http://spinrdf.org/spif#>
prefix pres: <http://example.com/pruebardf/>
CONSTRUCT {
?rdfIRI a pres:Book ;
pres:Author ?author .
}
WHERE {
SERVICE <http://localhost:7200/rdf-bridge/1683716393221> {
?bookRow a <urn:Row> ;
<urn:col:Author> ?author ;
<urn:col:Title> ?title .
}
BIND(IRI(CONCAT("http://example.com/", spif:encodeURL(?title))) AS ?rdfIRI)
}
有解决方案吗?我可以使用其他 SPARQL 语法。
1 回答
使用
SERVICE
部分中的OPTIONAL
可以在缺少<urn:col:Author>
时使图案不失败。然后
CONSTRUCT
将不会放入?rdfIRI pres:Author ?author
三元组,但会包含?rdfIRI a pres:Book
。如果要在数据中缺少作者时设置?作者,请查看使用
COALESCE
。