0

我的数据使用命名图进行分区。一张图包含我的本体和类的人类可读标签。数据又被分成许多图表,ex:data1, ex:data2, ... ex:data5000

现在我希望独立查询每个数据图,同时使用本体中的标签。首先,我认为这将是微不足道的,但后来我发现 SPARQL 中的范围界定可能有点令人困惑。举个简单的例子:

选择具有各自实例标签的所有实例。还从本体中检索与每个实例关联的可选类和类标签。

如果两个组的范围都class延伸,我希望以下查询可以解决问题:

SELECT ?instance ?instanceLabel ?class ?classLabel
WHERE {
  GRAPH ?data {
    ?instance rdfs:label ?instanceLabel .
    OPTIONAL { ?instance a ?class }
  }

  GRAPH <http://myontology> {
    OPTIONAL {
      ?class rdfs:label ?classLabel
    }
  }
}

如果类是绑定的,结果将是我想要的,因为这两个组是联合的;但是,由于作用域?class可以绑定到本体中的任何内容,如果它未绑定在第一组中。

我正在编写的查询有大约 15 个类似的可选字段(非常昂贵的连接......)。当我尝试用它重写时UNION,由于原始查询的大小,它很快变得非常笨拙。我也尝试过嵌套查询,但这给了我同样的范围问题。有没有人有一些我忽略的 SPARQL 技巧?任何有关如何解决此问题的建议将不胜感激。

4

0 回答 0