Как отфильтровать простую тему в запросе SPARQL
Я думаю, что я застрял в основах с 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 ответ
Решение
Вы можете заставить его работать, используя:
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