在SPARQL中选择文字?

时间:2016-05-12 14:03:24

标签: sparql

我想构建一个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文字。

1 个答案:

答案 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)
   }

}