SPARQL - поиск всех свойств из определенного пространства имен - PullRequest
1 голос
/ 01 апреля 2020

Я пытаюсь определить набор уникальных свойств, используемых в нашей БД, из определенного пространства имен. Например, если я хочу увидеть все свойства, которые мы используем из набора Dublin Core, я пытаюсь:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT DISTINCT
    ?pred   
WHERE 
    { 
    ?sub ?pred ?obj  . 
    FILTER regex(?pred, "purl.org/dc/elements") 
    } 
limit 1000

Я просматриваю все тройки, фильтруя с помощью регулярных выражений только тройки с D C пространство имен, а затем возвращает список различных предикатов. Когда я запускаю этот запрос, время ожидания истекает, поэтому я не уверен, что это из-за проверяемого тома или сам запрос неверен. Что мне действительно нужно, так это список предикатов, которые начинаются с пространства имен D C.

1 Ответ

1 голос
/ 02 апреля 2020
FILTER( STRSTART(str(?pred), str(dc:)) )

Это делает две вещи:

  1. Превращает URI в строки с str, потому что STRSTARTSREGEX) работают со строками.
  2. Использование dc: как сокращение для URL для предикатов. Парсер расширит его до полного http://purl.org/dc/elements/1.1/
...