Количество троек конкретных групповых экземпляров? - PullRequest
0 голосов
/ 12 октября 2018

Я обнаружил еще одну проблему в SPARQLing dbpedia.Я пытаюсь получить количество троек для конкретной группы экземпляров классов.

Количество троек класса Политик:

 SELECT * WHERE {?s ?p ?o FILTER (?s = dbo:Politician OR ?o = dbo:Politician)} 

Но как насчет суммарного числа всех троек для определенной группы политиков?Например, число троек немецкого политика.Как можно получить?

Спасибо за помощь!

1 Ответ

0 голосов
/ 12 октября 2018

пересмотренный ответ

При этом будет получено количество лиц, которые описаны как политики из Германии -

SELECT COUNT(*) 
  { ?s a               dbo:Politician . 
    ?s dbo:nationality dbr:Germany . 
  }

- и получится получитьколичество всех записей, в которых те лица, которые описаны как политики из Германии, отображаются как субъект -

SELECT COUNT(*) 
  { ?s a               dbo:Politician . 
    ?s dbo:nationality dbr:Germany . 
    ?s ?p              ?o .
  }

Возможно, вы ищете немного больше информации, до включите все записи, в которых лица, которые описываются как политики из Германии, отображаются как субъект или объект (не только как субъект) -

SELECT COUNT(*) 
  { { ?s a               dbo:Politician . 
      ?s dbo:nationality dbr:Germany . 
      ?s ?p              ?o . 
    }
  UNION
    { ?o a               dbo:Politician . 
      ?o dbo:nationality dbr:Germany . 
      ?s ?p              ?o . 
    }
  }

оригинальный ответ

Я думаю , что вы в настоящее время стремитесь к этому , который подсчитывает все тройки с dbo:Politician как субъект или объект (который в настоящее время 41105, без тайм-аута), но учтите, что этот запрос нене считайте «сущностей, которые являются политиками», что (я думаю) то, что вы действительно ищете!

SELECT ( COUNT ( * ) AS ?NumberOfTriples ) 
WHERE
  { { dbo:Politician ?p ?o }
    UNION
    { ?s ?p dbo:Politician } 
  }

Если вы хотите посчитать количество «сущностей, которые являются политиками» (то есть, rdf:type dbo:Politician)(в настоящее время 41078), вам нужен другой запрос, например this -

SELECT ( COUNT ( DISTINCT ?s ) AS ?NumberOfPoliticians ) 
WHERE
  { ?s rdf:type dbo:Politician } 

Это должно быть разъяснено при взгляде на { dbo:Politician ?p ?o } triples --

SELECT *
WHERE
  { dbo:Politician ?p ?o }
...