使用SPARQL复制输出结果

使用SPARQL复制输出结果,sparql,semantic-web,owl,Sparql,Semantic Web,Owl,我不熟悉语义网的概念,我有一份基于语义网的文凭工作。在我的OWL本体中,我以以下方式定义了个人: ... 基本上,对于给定的个人,有些属性只出现一次,但是属性“必需的技术”可以在一个记录中多次使用(对于一个人)。因此,当我运行SPARQL查询,选择所有数据(我使用Jena)时,我得到以下输出: ===================================== |“Ann1”|……|……|“技术1”| |“Ann1”|……|……|“技术2”| |“Ann2”|……|……|“技术3”|

我不熟悉语义网的概念,我有一份基于语义网的文凭工作。在我的OWL本体中,我以以下方式定义了个人:


...
基本上,对于给定的个人,有些属性只出现一次,但是属性“必需的技术”可以在一个记录中多次使用(对于一个人)。因此,当我运行SPARQL查询,选择所有数据(我使用Jena)时,我得到以下输出:

=====================================
|“Ann1”|……|……|“技术1”|
|“Ann1”|……|……|“技术2”|
|“Ann2”|……|……|“技术3”|
|“Ann3”|……|……|“技术4”|
|“Ann3”|……|……|“技术5”|
|“Ann3”|……|……|“技术6”|
| ...         | ... | ... | ...     |
=====================================
存在多个“requiredTechnologies”属性的记录会多次出现。我的问题是如何在一行中获得属于给定个人的所有技术(如下所示):

===================================================
|“Ann1”|……|……|技术1,技术2|
|“Ann2”|……|……|“技术2”|
|“Ann3”|……|……|tech4、tech5、tech6|
| ...         | ... | ... | ...                   |
===================================================

SPARQL中是否有方法获取列表中的多属性?或任何其他解决方法?

是,将
GROUP BY
子句与
GROUP CONCAT
集合一起使用

下面是一个通用示例,您应该能够轻松地适应您的数据模型:

SELECT ?s (GROUP_CONCAT(?value ; SEPARATOR = ",") AS ?values)
WHERE
{
  ?s <http://somePredicate> ?value .
}
GROUP BY ?s
选择s(组集合(?value;SEPARATOR=“,”)作为值)
哪里
{
?s?值。
}
分组

可能存在的重复项。今天上午还提出了另一个类似的问题(但寻找JSON输出):没问题;这是一个好问题,在你知道答案之前很难知道要搜索什么。非常感谢@RobV,它像魔术一样工作,这就是我需要的!!!我很感激,这很有帮助。。。干杯