是否有可能以最多包含所请求数据的方式过滤图表?

时间:2015-05-29 11:20:14

标签: sparql

让我先从一个示例查询开始解释我的问题:

SELECT ?g ?s ?p ?o WHERE
{
  {GRAPH ?g
    {   ?s ?p ?o.
        OPTIONAL{ ?s
          ab:temperature ?temperature.}
      FILTER (?temperature = 20)
      FILTER NOT EXISTS {?s ab:person ?person}
    }
  }
}

此查询为我提供了所有图表(在这种情况下代表上下文数据),这些图表的温度为20但不会有人关联。我的问题是我想查询某些可选属性的图形,但它们不应该有任何其他属性。在查询时我只知道可选部分,但我不知道可能存在哪些附加属性。有没有一种简单的方法可以使用SPARQL执行此操作,或者在收到图形并将其转换为我可以使用我的程序处理的对象后更容易检查?

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,那么您正在搜索的图表只包含具有某些属性但不包含其他属性的主题。在那种情况下,我会运行这样的事情:

SELECT ?g ?s ?p ?o WHERE {
 GRAPH ?g {
  ?s ?p ?o.
  FILTER NOT EXISTS {
   ?s ?bad [] .
   FILTER (?bad NOT IN ( ab:temperature, ... ) )
  }
 }
}