首页 > 解决方案 > DBpedia 所需的 SPARQL 查询帮助所有编程语言详细信息

问题描述

这是我正在运行以获取所有编程语言的这些详细信息的查询。每种编程语言都有一些影响其他语言或受其他语言影响。所以可能有很多语言受到影响或影响。现在的问题是,当它打印所有值时,它会在行中分别打印每个值。你可以看图。我希望所有受其影响或影响的编程语言都在一行中。查询如下。

SELECT ?pl ?abstract ?influenced ?influencedBy
    WHERE { 
        ?pl dbo:abstract ?abstract .
            ?pl dbo:influenced ?influenced .
            ?pl dbo:influencedBy ?influencedBy .
            ?pl rdf:type dbo:ProgrammingLanguage .
            FILTER (LANG(?abstract) = 'en') .
          }

我的结果的屏幕截图 我的结果的屏幕截图

您可以看到,这种语言有两个受影响的值,并将它们打印在单独的行中。

网站数据示例 网站数据示例

标签: sparqldbpedia

解决方案


正如@AKSW 所说,类似——

SELECT                                                      ?pl 
                                                            ?abstract
       ( group_concat ( ?_influenced; separator="; " )   AS ?influenced )
       ( group_concat ( ?_influencedBy; separator="; " ) AS ?influencedBy ) 
WHERE
  { ?pl  dbo:abstract      ?abstract . 
    ?pl  dbo:influenced    ?_influenced . 
    ?pl  dbo:influencedBy  ?_influencedBy . 
    ?pl  rdf:type          dbo:ProgrammingLanguage . 
    FILTER ( LANG ( ?abstract ) = 'en' ) . 
  } 
GROUP BY ?pl ?abstract

编辑添加

为了得到?pl_label(我猜是?_influenced_labeland ?_influencedBy_label)你现在说你想要的,你需要(和/或想要)稍微调整一下......

SELECT                                                            ?pl 
                                                                  ?pl_label
       ( group_concat ( DISTINCT ?_influenced_label; separator="; " )   AS ?influenced )
       ( group_concat ( DISTINCT ?_influencedBy_label; separator="; " ) AS ?influencedBy ) 
                                                                  ?abstract
WHERE
  { ?pl             rdf:type          dbo:ProgrammingLanguage .
    ?pl             dbo:abstract      ?abstract . 
                    FILTER ( LANG ( ?abstract ) = 'en' ) 
    ?pl             rdfs:label         ?pl_label
                    FILTER ( LANG ( ?pl_label ) = 'en' ) .
    ?pl             dbo:influenced    ?_influenced . 
    ?_influenced    rdfs:label         ?_influenced_label
                    FILTER ( LANG ( ?_influenced_label ) = 'en' ) .
    ?pl             dbo:influencedBy  ?_influencedBy . 
    ?_influencedBy  rdfs:label         ?_influencedBy_label
                    FILTER ( LANG ( ?_influencedBy_label ) = 'en' ) .
          } 
GROUP BY ?pl ?pl_label ?abstract

推荐阅读