是否可以以最多包含请求数据的方式过滤图形?

Is it possible to Filter Graphs in a way that they at most contain requested Data?

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

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 但没有关联人员的所有图表(在本例中代表上下文数据)。我的问题是我想查询某些可选属性的图表,但它们不应该有任何其他属性。在查询时我只知道 OPTIONAL 部分,但我不知道还有哪些 属性 可能在那里。有没有一种简单的方法可以用 SPARQL 做到这一点,或者在我收到图表并将其转换为我可以用我的程序处理的对象后更容易检查的东西?

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

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