【发布时间】:2021-12-09 13:40:21
【问题描述】:
有没有办法在 GraphDB 中不区分大小写进行匹配? 测试数据集非常小。大约 8m 三倍。
SELECT ?s ?name
WHERE {
?s <http://www.sample.org.uk/data/schema/simplename/name> ?name.
?s <http://www.sample.org.uk/data/schema/provider> "nhle".
OPTIONAL {?s <http://www.sample.org.uk/data/schema/county/> "Essex"}
OPTIONAL {?s <http://www.sample.org.uk/data/schema/district/> "Epping Forest"}
OPTIONAL {?s <http://www.sample.org.uk/data/schema/parish/> "Buckhurst Hill"}
}
当然,我可以使用 FILTER - 但需要 7 秒才能返回,这太慢了。
SELECT ?s ?name ?county ?district ?parish
WHERE {
?s <http://www.sample.org.uk/data/schema/simplename/name> ?name.
?s <http://www.sample.org.uk/data/schema/provider> "nhle".
OPTIONAL {?s <http://www.sample.org.uk/data/schema/county/> ?county}
OPTIONAL {?s <http://www.sample.org.uk/data/schema/district/> ?district}
OPTIONAL {?s <http://www.sample.org.uk/data/schema/parish/> ?parish}
FILTER (lcase(?county)='essex'
&& lcase(?district)='epping forest'
&& lcase(?parish)='buckhurst hill'
)
}
【问题讨论】:
-
与 Jena 线程相同,您是否尝试将过滤器放入
OPTIONAL模式中?而且对于 GraphDB,还有一个全文索引支持的设置,它可能比扫描所有文字更好:graphdb.ontotext.com/documentation/9.8/free/…