пересмотренный ответ
При этом будет получено количество лиц, которые описаны как политики из Германии -
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 }