如何过滤xsd:dateTime类型的时间?SPARQL查询技术求助
解决方案:筛选早上出发航班对应的乘客
要过滤下午1点前出发的航班,你可以用SPARQL的时间处理函数提取xsd:dateTime里的时间部分,完全不用关心日期。这里有两种简单的实现方式:
方法一:提取小时数直接判断
利用HOURS()函数从日期时间中提取小时数(24小时制),判断是否小于13即可:
SELECT ?person WHERE { ?person myns:bookTicket ?ticket. ?ticket myns:hasFlight ?flight. # 修正拼写错误:hasFligth → hasFlight ?flight myns:hasDepartureTime ?time. FILTER (HOURS(?time) < 13) }
方法二:提取时间部分进行比较
用xsd:time()函数把xsd:dateTime转换为纯时间类型,再和13点的时间直接对比:
SELECT ?person WHERE { ?person myns:bookTicket ?ticket. ?ticket myns:hasFlight ?flight. ?flight myns:hasDepartureTime ?time. FILTER (xsd:time(?time) < xsd:time("13:00:00")) }
两种方法都能精准筛选出下午1点前出发的航班,进而找到对应的乘客。另外注意修正了原查询里的拼写错误(hasFligth改为hasFlight),避免因语法问题导致查询失败。
内容的提问来源于stack exchange,提问作者Looser
相关产品推荐
相关产品推荐

