如何在jena sparql中使用过滤器子查询?

时间:2014-07-02 10:36:25

标签: rdf sparql jena tdb

我正在尝试在Jena Sparql的过滤器中应用子查询。这是可能的。如果是,如何?例如:

SELECT ?x WHERE(?y <xyz:> ?z . ?y <abc:> ?x .FILTER regex(?z,subquery,"i")}

我的意思是我想在jena中使用一些子查询来过滤表达式。我该怎么做?如果不是它的替换?

1 个答案:

答案 0 :(得分:1)

您不能将子查询放在过滤器表达式中,因为子查询不是带有值的表达式。但是,您可以使用子查询来提供在过滤器表达式中使用的值。例如,

# Find persons whose names are also the names of flowers (Rose, Daisy, etc.) by
# performing a subquery to find all the flower names, and then finding people 
# whose names match those names.
select ?person where {
  ?person a :Person ;
          :name ?name .
  filter regex(?name,?flowerName, "i" )

  { select ?flowerName { ?flower a :Flower ; :name ?flowerName } }
}