在 SPARQL 查询中列出每个类旁边的实例

问题描述

我想编写一个 SPARQL 查询,它会给我一个列表,其中包含特定类的所有子类和每个子类的所有实例。例如,如果我有类 Animal 和子类 Dog 和 Cat 以及 Dog 的实例:Fido、Bowser 和 Cat:Fluffy、Whiskers 我希望输出看起来像:

Dog  Fido Bowser

Cat  Fluffy Whiskers

我有一个查询获取每个子类的所有实例:

SELECT ?class_label ?instance_label
WHERE {?anmlclass rdfs:subClassOf ex:Animal;
                 rdfs:label ?class_label.
        ?anml a ?anmlclass;
               rdfs:label ?instance_label.}

但这给出了如下输出

Dog Fido

Dog Bowser

有没有办法格式化结果,以便所有实例都显示在与相关类相同的行中?

解决方法

来自a commentUninformedUser

SELECT ?class_label (group_concat(?instance_label; separator=",") as ?instances)
WHERE {
  ?anmlclass
      rdfs:subClassOf ex:Animal ;
      rdfs:label      ?class_label .         

  ?anml
      a          ?anmlclass ;               
      rdfs:label ?instance_label 
}
GROUP BY ?anmlclass

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...