动态SPARQL查询以获取表示为维恩图的类之间的数据

时间:2014-01-02 09:35:11

标签: rdf sparql

我正在构建一个语义应用程序,其中包含我的RDF存储库中可用的所有类和子类的列表。然后,用户将类或子类拖到绘图区域以形成维恩图。假设我有两个类,A类和B类,用户拖动它们,我需要触发SPARQL查询以获取这两个类是否有任何关系,如果是这样,我需要获取这两个类之间通用的数据。假设用户添加了另一个类,比如C类,那么我需要获取实现和这些类之间存在的数据。

我需要SPARQL查询以下内容:
             1. SPARQL查询以检查类A,B和C之间是否存在关系。我在这里的关系是,这三个类之间是否存在任何共同数据,如果没有哪个类有关系。
             2. SPARQL查询以获取这些类之间的公共数据,例如,AnB或BnC或AnBnC或AU(BnC)(如维恩图中的术语)

请帮助我这方面,因为我是SPARQL查询的新手。

1 个答案:

答案 0 :(得分:1)

我不知道“关系”是什么意思。我猜AnB你的意思是“A和B的实例数”等。你可以得到如下计数:

  • AnB:select (count(distinct ?x) as ?c) {?x a <A>. ?x a <B>}
  • AuB:select (count(distinct ?x) as ?c) {{?x a <A>} union {?x a <B>}}
  • A-B:select (count(distinct ?x) as ?c) {?x a <A> filter not exists {?x a <B>}}