Как отфильтровать результаты запроса по префиксу URL в SPARQL? - PullRequest
0 голосов
/ 06 июля 2019

Это мой запрос,

PREFIX dbr: <http://dbpedia.org/resource/>

SELECT ?p ?x
WHERE
{ 
  dbr:Australia ?p ?x 
}

Мне нужен только URI в результатах. x и p должны быть в формате http://dbpedia.org/resource/something и http://dbpedia.org/property/something. Пожалуйста, помогите мне пройти через это.

1 Ответ

0 голосов
/ 08 июля 2019

Это получит того, что вы просите -

PREFIX dbr: <http://dbpedia.org/resource/>

SELECT ?p ?x
WHERE
{ 
  dbr:Australia ?p ?x 
  FILTER ( STRSTARTS ( STR ( ?p ), "http://dbpedia.org/property/" ) )
  FILTER ( STRSTARTS ( STR ( ?x ), "http://dbpedia.org/resource/" ) )
}
ORDER BY ?p ?x

Результаты из следующие может быть лучше, хотя он не ограничивает все URI двумя желаемыми префиксами.Обратите внимание, что следующее обновление набора данных DBpedia (частично видимое теперь на конечной точке DBpedia-Live ) изменит большую часть данных, и http://dbpedia.org/property/ больше не будет префиксом для большинства атрибутов / предикатов Австралии-

PREFIX dbr: <http://dbpedia.org/resource/>

SELECT ?p ?x
WHERE
{ 
  dbr:Australia ?p ?x 
  FILTER ( ISURI ( ?p ) )
  FILTER ( ISURI ( ?x ) )
}
ORDER BY ?p ?x
...