Sparql запрос получает исключение тайм-аута - PullRequest
2 голосов
/ 27 марта 2019

Когда я использую этот запрос в Java, я получаю исключение HTTP 504, поскольку я получаю данные из Live.

Но если я удаляю influenced или influencedBy или Paradigm или кого-либо изих то нормально работает.Тогда я понял, что есть проблема во времени или в памяти, и еще одна проблема - теперь это слишком медленно.Я хочу их всех.Что я могу сделать сейчас?

SELECT  ?pl  ?pl_label ?abstract ?_thumbnail

           ( group_concat ( DISTINCT ?_influenced_label; separator="; " )   AS ?influenced )
           ( group_concat ( DISTINCT ?_influencedBy_label; separator="; " ) AS ?influencedBy ) 
           ( group_concat ( ?_sameAs; separator=", " ) AS ?sameAs )     
           ( group_concat ( ?_paradigm_label; separator=", " ) AS ?paradigm )

    WHERE
      { 

          ?pl   rdf:type    dbo:ProgrammingLanguage .

          OPTIONAL  { ?pl   dbo:abstract    ?abstract . 

          FILTER ( LANG ( ?abstract ) = 'en' ) . }

          ?pl   rdfs:label      ?pl_label

          FILTER ( LANG ( ?pl_label ) = 'en' ) .

          OPTIONAL      { ?pl   dbo:influenced  ?_influenced . 

          ?_influenced      rdfs:label      ?_influenced_label . 

          FILTER ( LANG ( ?_influenced_label ) = 'en' ) . }

          OPTIONAL  { ?pl   dbo:influencedBy    ?_influencedBy . 

          ?_influencedBy  rdfs:label         ?_influencedBy_label

          FILTER ( LANG ( ?_influencedBy_label ) = 'en' ) . }

          OPTIONAL { ?pl owl:sameAs ?_sameAs . } 

          OPTIONAL { ?pl dbp:paradigm ?_paradigm .

          ?_paradigm rdfs:label ?_paradigm_label . }

          OPTIONAL { ?pl dbo:thumbnail ?_thumbnail . }

      } 
    GROUP BY ?pl ?pl_label ?abstract ?_thumbnail

1 Ответ

1 голос
/ 27 марта 2019

В текущем http://live.dbpedia.org/sparql, существует проблема грязных данных, связанная с тем, что для некоторых предикатов (в том числе dbo:abstract, dbo:influenced, есть значения из нескольких загрузок (т. Е. Из нескольких изменений исходной страницы Википедии), и dbo:influencedBy), где должно быть только последнее введенное значение (т. е. последнее изменение). Это означает, что ваш набор результатов будет включать в себя что-то из декартового произведения - с некоторыми строками, которые являются дубликатами, за исключением предикатов, которые неправильно предоставляют несколько версий.

По модулю этой проблемы с данными, этот запрос (не только с дополнительным DISTINCT!) Доставит то, что, я полагаю, вам сейчас нужно -

SELECT  DISTINCT                                                             ?pl  
                                                                             ?pl_label 
                                                                             ?abstract 
                                                                             ?_thumbnail
        ( group_concat ( DISTINCT ?_influenced_label   ; separator="; " ) AS ?influenced )
        ( group_concat ( DISTINCT ?_influencedBy_label ; separator="; " ) AS ?influencedBy ) 
        ( group_concat ( DISTINCT ?_sameAs             ; separator=", " ) AS ?sameAs )     
        ( group_concat ( DISTINCT ?_paradigm_label     ; separator=", " ) AS ?paradigm )

WHERE
      { 
                      ?pl               rdf:type            dbo:ProgrammingLanguage ;
                                        rdfs:label          ?pl_label
                      FILTER ( LANG ( ?pl_label ) = 'en' ) .

          OPTIONAL  { ?pl               dbo:abstract        ?abstract . 
                      FILTER ( LANG ( ?abstract ) = 'en' ) . }

          OPTIONAL  { ?pl               dbo:influenced      ?_influenced . 
                      ?_influenced      rdfs:label          ?_influenced_label . 
                      FILTER ( LANG ( ?_influenced_label ) = 'en' ) . }

          OPTIONAL  { ?pl               dbo:influencedBy    ?_influencedBy . 
                      ?_influencedBy    rdfs:label          ?_influencedBy_label
                      FILTER ( LANG ( ?_influencedBy_label ) = 'en' ) . }

          OPTIONAL  { ?pl               owl:sameAs          ?_sameAs . } 

          OPTIONAL  { ?pl               dbp:paradigm        ?_paradigm .
                      ?_paradigm        rdfs:label          ?_paradigm_label 
                      FILTER ( LANG ( ?_paradigm_label ) = 'en' ) . }

          OPTIONAL { ?pl                dbo:thumbnail       ?_thumbnail . }

      } 

GROUP BY ?pl ?pl_label ?abstract ?_thumbnail
...