聚合SPARQL结果

聚合SPARQL结果,sparql,owl,Sparql,Owl,我已经在我自己的本体上编写了一个SPARQL查询,它提供了记录的重复,为此我还使用了group_concat,我的查询是 SELECT ?Movie (str(?y) as ?Rating) (group_concat (?z;separator=",") as ?Director) { ?Movie :rating ?y; :directedBy ?z FILTER regex(str(?Movie),'Fantastic_Four') } GROUP BY ?y ?

我已经在我自己的本体上编写了一个SPARQL查询,它提供了记录的重复,为此我还使用了group_concat,我的查询是

SELECT ?Movie (str(?y) as ?Rating) (group_concat (?z;separator=",") as ?Director) 
{ ?Movie :rating ?y;
         :directedBy ?z
 FILTER regex(str(?Movie),'Fantastic_Four') }
  GROUP BY ?y ?Movie
此查询为我提供了所需的结果,但Director的输出如下所示:

http://www.semanticweb.org/administrator/ontologies/2017/2/Ontology-Schema_Movie#Josh_Trank,http://www.semanticweb.org/administrator/ontologies/2017/2/Ontology-Schema_Movie#Joshua_Trank

我想知道为什么会出现整个URI,如何删除它并在我的结果中只打印Josh_Trank,Joshua_Trank?

RDF资源由URI标识,这就是URI列表被连接的原因。如果你需要一些人类可读的名字

您可以使用一些字符串函数resp。URI上的REGEX请参见 前缀: 选择电影情节作为分级 集团公司?董事?姓名;分隔符=,as?控制器{ ?电影:评级?y; :由?z指导 过滤regexstr?电影《神奇四侠》 BINDstrafterstr?z,str:as?director_name } 团体电影 我确实建议使用rdfs:label或类似的东西(如果存在)作为URI的人类可读名称 1.顺便说一下,组_concatdistinct?z…这是一个相当合法的解释。2.虽然AKSW答案的变体2当然更可取,但您可能对afn:localname或afn:localname本身感兴趣。