查询命名图,但从本体获取标签

时间:2017-06-09 14:18:57

标签: sparql named-graphs

我的数据使用命名图进行分区。一个图包含我的本体和类的人类可读标签。这些数据又分为多个图表,ex:data1ex: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技巧,我忽略了?任何有关如何处理此问题的建议将不胜感激。

0 个答案:

没有答案