2015-05-26 3 views
1

Предполагая, что у нас есть набор данных, включающий в себя следующие три тройки RDF. Я хочу получить все эти три троек, используя запрос sparql.запрос RDF с использованием запроса SPARQL

http://test.com/11/META_C1-INST predicate1  http://test.com/NO_CONTEXT/META_C0059714-INST 
http://test.com/23/META_C1-INST predicate1  http://test.com/NO_CONTEXT/META_C0059714-INST 
http://test.com/43/META_C1-INST predicate1  http://test.com/NO_CONTEXT/META_C0142817-INST 

Вот запрос, я написал, но я знаю, что это не так:

prefix pred:<http://test.com/> 
      select distinct * 
      where {pred:META_C1-INST ?p ?o}; 

Как я должен сказать: «Посмотрите на любые троек с субъектом от http://test.com/??/ где ?? может быть что-нибудь подобное 11, 23, S23

ответ

3

вы можете преобразовать URI в строку, а затем фильтр на основе того, что она начинается с ключевым словом вы должны использовать это STRSTARTS:.

select distinct * 
where{ 
?s ?p ?o 
filter(STRSTARTS(str(?s), "http://test.com/")) 
} 

или вы можете использовать регулярные выражения с ^ знака:

select distinct * 
where{ 
?s ?p ?o 
FILTER regex(str(?s), "^http://test.com/") . 
} 
Смежные вопросы