Оптимизация запроса SPARQL - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь получить информацию об организации на основе официального сайта компании, используя приведенный ниже запрос.Время постоянно истекает.Мне требуются все поля ниже.Есть ли способ оптимизировать его?Я понимаю, что ДОПОЛНИТЕЛЬНО эквивалентно ВНУТРЕННОМУ СОЕДИНЕНИЮ и является причиной тайм-аутов, но есть ли другой способ получить эти поля?

Я использую API Python и установка тайм-аута 5 минут тоже не помогает.Значение тайм-аута не устанавливается.

SELECT distinct
          (GROUP_CONCAT( DISTINCT ?official_name; separator=";") AS ?official_name) 
          (GROUP_CONCAT( DISTINCT ?isin; separator=";") AS ?isin) 
          ?item 
          ?itemLabel
          ?stock_exchange 
          ?stock_exchangeLabel
          (GROUP_CONCAT( DISTINCT ?ticker; separator=";") AS ?ticker)
          (GROUP_CONCAT( DISTINCT ?other_name; separator=";") AS ?other_name)
          (GROUP_CONCAT(DISTINCT ?parent_orgLabel; SEPARATOR = ";") AS ?parent_orgLabel) 
          (GROUP_CONCAT(DISTINCT ?owned_byLabel; SEPARATOR = ";") AS ?owned_byLabel) 
          (GROUP_CONCAT(DISTINCT ?instance_of; SEPARATOR = ";") AS ?instance_of)
          (GROUP_CONCAT(DISTINCT ?instance_ofLabel; SEPARATOR = ";") AS ?instance_ofLabel)
          (GROUP_CONCAT(DISTINCT ?domains; SEPARATOR = ";") AS ?domains)
          (GROUP_CONCAT(DISTINCT ?subsidiaryLabel; SEPARATOR = ";") AS ?subsidiaryLabel)
          (GROUP_CONCAT(DISTINCT ?owner_ofLabel; SEPARATOR = ";") AS ?owner_ofLabel)
          (GROUP_CONCAT(DISTINCT ?part_ofLabel; SEPARATOR = ";") AS ?part_ofLabel)
        WHERE {
          SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
          {
                    { ?item p:P856 [ ps:P856 <https://www.amazon.com> ]}}
          OPTIONAL {  
            ?item p:P856 ?web_domains.
            ?web_domains ps:P856 ?domains . 
          }    
          OPTIONAL { ?item wdt:P1448 ?official_name. }
          OPTIONAL { ?item wdt:P946 ?isin. }  
          OPTIONAL {  
            ?item p:P414 ?SE . 
            ?SE ps:P414 ?stock_exchange . 
            ?SE pq:P249 ?ticker .
           } 
          OPTIONAL { ?item skos:altLabel ?other_name. FILTER (LANG (?other_name) = "en") }
          OPTIONAL {
            ?item wdt:P361 ?part_of.
            ?part_of rdfs:label ?part_ofLabel. 
            filter(lang(?part_ofLabel)="en")
          }

          OPTIONAL {
            ?item wdt:P749 ?parent_org.
            ?parent_org rdfs:label ?parent_orgLabel. 
            filter(lang(?parent_orgLabel)="en")
          }
          OPTIONAL {
            ?item wdt:P127 ?owned_by.
            ?owned_by rdfs:label ?owned_byLabel. 
            filter(lang(?owned_byLabel)="en")
          }        
          OPTIONAL {
            ?item wdt:P31 ?instance_of.
            ?instance_of rdfs:label ?instance_ofLabel. 
            filter(lang(?instance_ofLabel)="en")
          }
          OPTIONAL {
            ?item wdt:P355 ?subsidiary.
            ?subsidiary rdfs:label ?subsidiaryLabel. 
            filter(lang(?subsidiaryLabel)="en")
          }
          OPTIONAL {
            ?item wdt:P1830 ?owner_of.
            ?owner_of rdfs:label ?owner_ofLabel. 
            filter(lang(?owner_ofLabel)="en")
          }
        }
        GROUP BY ?item ?itemLabel ?stock_exchange ?stock_exchangeLabel
...