我正在尝试构建一个 SPARQL 查询来搜索一个类型的所有属性。例如,我想搜索 Person 类型 ( http://topbraid.org/examples/kennedys#Person ) 并返回其属性与输入字符串“ken”匹配的 Person 实例。这是我正在使用的当前查询:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ui: <http://uispin.org/ui#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT *
WHERE {
GRAPH <http://topbraid.org/examples/kennedys> {
?subject a <http://topbraid.org/examples/kennedys#Person>;
?property ?value .
FILTER EXISTS {
?subject ?anyProperty ?anyValue .
FILTER (isLiteral(?anyValue) && regex(xsd:string(?anyValue), "1956", "i")) .
} .
}
}
上面的查询返回给我这个:
这在匹配属性birthYear 并返回3 个实例时是正确的。但是当我搜索“男性”并想要返回与男性匹配的所有 Person 实例时,我没有得到我的预期。
询问
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ui: <http://uispin.org/ui#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT *
WHERE {
GRAPH <http://topbraid.org/examples/kennedys> {
?subject a <http://topbraid.org/examples/kennedys#Person>;
?property ?value .
FILTER EXISTS {
?subject ?anyProperty ?anyValue .
FILTER (isLiteral(?anyValue) && regex(xsd:string(?anyValue), "male", "i")) .
} .
}
}
我的查询有什么问题吗?