我希望在过滤器中同时匹配两个术语,但是&&运算符没有返回任何结果,而实际上应该有两个结果。我正在寻找关键字"industrie“和"omzet”一起出现在一个数据集。
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dcat: <http://www.w3.org/ns/dcat#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?dataset ?dataset_name ?keyword
WHERE {
?dataset rdf:type dcat:Dataset .
?dataset dct:title ?dataset_name .
?dataset dcat:keyword ?term .
?term skos:prefLabel ?keyword .
FILTER (STRSTARTS(?keyword,"industrie") && STRSTARTS(?keyword,"omzet"))
}
ORDER BY ?dataset_name我使用||运算符检查了结果,它的工作方式与预期一致,并给出了368个结果。在结果中有两个数据集,其中包含两个想要的关键字。就像这样。
dataset dataset_name keyword
1 "ab" "omzet"
1 "ab" "industrie"
2 "xy" "omzet"
2 "xy" "industrie" 发布于 2020-12-03 06:46:41
查询的问题是在两个语句中使用相同的变量?keyword。字符串不能同时以"industrie“和"omzet”开头。
相反,您需要做的是:
SELECT ?dataset ?dataset_name ?keyword1 ?keyword2
WHERE {
?dataset rdf:type dcat:Dataset .
?dataset dct:title ?dataset_name .
?dataset dcat:keyword ?term .
?term skos:prefLabel ?keyword1, ?keyword2 .
FILTER (STRSTARTS(?keyword1,"industrie") && STRSTARTS(?keyword2,"omzet"))
}
ORDER BY ?dataset_name发布于 2020-12-03 22:06:28
SELECT ?dataset ?dataset_name ?keyword1 ?keyword2
WHERE {
?dataset rdf:type dcat:Dataset .
?dataset dct:title ?dataset_name .
?dataset dcat:keyword ?term1,?term2 .
?term1 skos:prefLabel ?keyword1 .
?term2 skos:prefLabel ?keyword2 .
FILTER (STRSTARTS(?keyword1,"industrie") && STRSTARTS(?keyword2,"omzet"))
}
ORDER BY ASC(?dataset_name)https://stackoverflow.com/questions/65117156
复制相似问题