首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SPARQL的重复输出结果

SPARQL的重复输出结果
EN

Stack Overflow用户
提问于 2013-08-23 15:56:32
回答 1查看 657关注 0票数 3

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

代码语言:javascript
复制
<Announce rdf:ID="Ann1" ...>
  <...>
  <...>
  <requiredTechnologies>
    <Technology rdfs:resource="tech1"/>
  </requiredTechnologies>
  <requiredTechnologies>
    <Technology rdfs:resource="tech2"/>
  </requiredTechnologies>
</Announce>
...

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

代码语言:javascript
复制
=====================================
| "Ann1"      | ... | ... | "tech1" |
| "Ann1"      | ... | ... | "tech2" |
| "Ann2"      | ... | ... | "tech3" |
| "Ann3"      | ... | ... | "tech4" |
| "Ann3"      | ... | ... | "tech5" |
| "Ann3"      | ... | ... | "tech6" |
| ...         | ... | ... | ...     |
=====================================

多个"requiredTechnologies“属性存在的记录不止一次出现。我的问题是如何在一行中获得属于某个人的所有技术(如下所示):

代码语言:javascript
复制
===================================================
| "Ann1"      | ... | ... | "tech1, tech2"        |
| "Ann2"      | ... | ... | "tech2"               |
| "Ann3"      | ... | ... | "tech4, tech5, tech6" |
| ...         | ... | ... | ...                   |
===================================================

SPARQL中有获得列表中的多个属性的方法吗?或者其他的解决办法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-23 16:30:54

是的,将GROUP BY子句与GROUP_CONCAT聚合结合使用。

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

代码语言:javascript
复制
SELECT ?s (GROUP_CONCAT(?value ; SEPARATOR = ",") AS ?values)
WHERE
{
  ?s <http://somePredicate> ?value .
}
GROUP BY ?s
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18407080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档