带有资源名称的sparql过滤器查询

时间:2014-09-24 20:36:52

标签: rdf sparql

我有一段被分成短语的段落。我需要过滤sparql查询以获取第一个和第二个短语的字符串。

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ns: <http://example.org/ns#>
SELECT ?string1 ?string2 
WHERE
{
  ?paragraph ns:phrase ?phrase1 ,
                       ?phrase2 .
  ?phrase1 rdfs:label ?string1 .
  ?phrase2 rdfs:label ?string2 .
}
LIMIT 100

我对短语的唯一顺序是在rdf资源<p23969797xX>中编码:

    @base <http://example.org/base/> .
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
    @prefix ns: <http://example.org/ns#> .

    <p23969797x1>   ns:phrase   <p23969797x2> .
    <p23969797x1>   ns:phrase   <p23969797x3> .
    <p23969797x1>   ns:phrase   <p23969797x4> .
    <p23969797x2>   rdfs:label  "string1" .
    <p23969797x3>   rdfs:label  "string2" .
    <p23969797x4>   rdfs:label  "string3" .

1 个答案:

答案 0 :(得分:2)

如果订单位于URI的名称中,您可以检查其字符串转换,并仅选择以“x1”和“x2”结尾的URI。

 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 PREFIX ns: <http://example.org/ns#>
 SELECT ?string1 ?string2 
 WHERE
 {
   ?paragraph ns:phrase ?phrase1 ,
                   ?phrase2 .
   ?phrase1 rdfs:label ?string1 .
   ?phrase2 rdfs:label ?string2 .
   FILTER(strEnds(str(?phrase1), "x1") && strEnds(str(?phrase1), "x2") )
 }
 LIMIT 100