我有一个图形数据库,它只实现模型结构中关系的一侧。例如,所有更广泛的关系都映射为skos:broader
. 所有较窄的关系都被映射为^skos:broader
(无论出于何种原因他们选择这样做,我都无法控制。)
我正在尝试编写一个 SPARQL 查询来提供类似的东西
查询给定 IRI 的所有关系及其关联值。目标是制作所有内容的 JSON 或 XML 表示。
这是我的工作。
PREFIX skosxl: <http://www.w3.org/2008/05/skos-xl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select ?relation ?value
where
{
<CONCEPT_URI> ?r ?c
OPTIONAL {
?r rdfs:label|skosxl:prefLabel ?l
}
OPTIONAL {
?c skosxl:prefLabel/skosxl:literalForm|skosxl:literalForm ?d .
}
BIND ( if (bound(?d), ?d, ?c) as ?value )
BIND ( if (bound(?l), ?l, strafter(?r, '#')) as ?relation )
}
这可以给我所有的概念关系(IE:Broader),但它没有给我更窄的项目(IE:^broader)。
无论如何,我是否可以扩展这个通用查询以产生它找到的任何关系的逆?我尝试简单地将 the 添加^
到子句?r
中,where
但它在语法上不喜欢那样。
谢谢,