首页 > 解决方案 > 来自 OWL 文件的 SPARQL 查询中的条件错误

问题描述

在 sparql 查询中,我想列出 35 岁以上的人。但我收到以下错误。原因是什么?

(即使我这样做,结果也不会改变?yas > 35。我仍然得到错误。)

询问:

PREFIX uni:<http://muratkilinc.com/~ontologies/izmir.owl#>
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX un: <http://www.w3.org/2007/ont/unit#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?adi ?soyadi ?yas
WHERE
{
    ?turistler uni:yas ?yas > "35" .
    ?turistler uni:yas ?yas.
    ?turistler uni:adi ?adi.
    ?turistler uni:soyadi ?soyadi.      
}

错误:

Error 400: Parse error: 
Encountered " ">" "> "" at line 9, column 33.
Was expecting one of:
    "values" ...
    "graph" ...
    "optional" ...
    "minus" ...
    "bind" ...
    "service" ...
    "let" ...
    "exists" ...
    "not" ...
    "filter" ...
    "{" ...
    "}" ...
    ";" ...
    "," ...
    "." ...

标签: sparqlowlsemantic-web

解决方案


要将这些布尔条件放入 SPARQL 查询中,您必须使用FILTER约束。像这样:

PREFIX uni:<http://muratkilinc.com/~ontologies/izmir.owl#>
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX un: <http://www.w3.org/2007/ont/unit#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?adi ?soyadi ?yas
WHERE
{
    ?turistler uni:yas .
    ?turistler uni:yas ?yas.
    ?turistler uni:adi ?adi.
    ?turistler uni:soyadi ?soyadi.
    FILTER(?yas > 35)      
}

SPARQL W3C 文档是一个很好的资源,可以帮助您了解可以使用哪些类型的过滤器表达式,以及如何使用不同的值数据类型(字符串、整数、日期等)。


推荐阅读