Требуется помощь по запросу SPARQL для DBpedia со всеми подробностями языка программирования - PullRequest
0 голосов
/ 21 марта 2019

Это запрос, который я выполняю, чтобы получить подробную информацию о всех языках программирования. Каждый язык программирования влияет на другие языки или зависит от другого языка.Так что может быть много языков под влиянием или под влиянием.Теперь проблема в том, что когда он печатает все значения, он печатает каждое значение отдельно в строках.Вы можете посмотреть на картинку.Я хочу, чтобы все его языки программирования находились под влиянием или влиянием в одной строке.Запрос ниже.

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') .
          }

Снимок экрана с моим результатом Screen shot of my result

Вы можете видеть, что у этого языка есть два значения influencedBy, и он печатает их в отдельныхстроки.

Пример данных сайта Website data example

1 Ответ

0 голосов
/ 21 марта 2019

Как сказал @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_label и ?_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
...