我想构建一个SPARQL查询,其中填充了值I&f; m设置为文字。
e.g。
SELECT 'A', 'B', attribute
FROM
TABLE
会返回一个可能如下所示的表:
A | B | attribute
-------|---------|--------------
A | B | Mary
A | B | has
A | B | a
A | B | little
A | B | lamb
我想要做的是运行这样的查询以获取三元组中的所有对象类型:
select distinct ?o ("class" as ?item_type)
where {
?s rdf:type ?o.
}
然后(理想情况下)使用第二个查询UNION,它会提取所有不同的谓词值:
select distinct ?p ("predicate" as ?item_type)
where {
?s ?p ?o.
}
结果可能如下:
item | item_type
-----------------|-----------------
a_thing | class
another_thing | class
a_relation | predicate
another_relation | predicate
但SPARQL中的UNION只链接一个额外的where子句,这意味着我无法指定我想要注入到我的结果集中的item_type文字。
答案 0 :(得分:4)
我认为以下内容可以为您提供所需内容:
SELECT DISTINCT ?item ?item_type
WHERE {
{ ?s a ?item .
BIND("class" AS ?item_type)
}
UNION
{ ?s ?item ?o
BIND("predicate" AS ?item_type)
}
}