Как отфильтровать простую тему в запросе SPARQL - PullRequest
0 голосов
/ 23 сентября 2018

Полагаю, я застрял в основах SPARQL.Может кто-нибудь помочь?

Я просто хочу отфильтровать все предметы, содержащие "Гору" базы данных RDS.

Prefix lgdr:<http://linkedgeodata.org/triplify/> Prefix lgdo:<http://linkedgeodata.org/ontology/> 
Select * where { 
?s ?p ?o . 
filter (contains(?s, "Mountain"))
} Limit 1000

Запрос приводит к ошибке:

Virtuoso 22023 Error SL001: The SPARQL 1.1 function CONTAINS() needs a string value as first argument

1 Ответ

0 голосов
/ 23 сентября 2018

Вы можете заставить его работать, используя:

Prefix lgdr:<http://linkedgeodata.org/triplify/> Prefix lgdo:<http://linkedgeodata.org/ontology/> 
Select * where { 
?s ?p ?o . 
filter (contains(str(?s), "Mountain"))
} Limit 1000

Обратите внимание на дополнительные str в запросе.

Однако, это приводит к

Virtuoso S1T00 Error SR171: Transaction timed out

и я не уверен, как с этим справиться.

Но в принципе в работах: когда вы используете

Limit 1

, вы получаете

s   p   o
http://linkedgeodata.org/ontology/MountainRescue    http://www.w3.org/1999/02/22-rdf-syntax-ns#type     http://www.w3.org/2002/07/owl#Class
...