!a 在 SPARQL 中是什么意思?
What does !a mean in SPARQL?
我正在使用 SPARQL 构建查询并希望排除某些结果。
我知道 FILTER NOT EXISTS
可以用来完成任务。例如:
SELECT * {
?sub a ?type .
FILTER NOT EXISTS {?sub a :NotExpectedType.}
}
但在摸索中,无意中发现自己会写!a
。这是一个有效的 SPARQL 查询,但结果不同于 FILTER NOT EXISTS
。例如:
SELECT * {
?sub a ?type .
?sub !a :NotExpectedType .
}
那么 !a
是什么意思? (我知道 a
是 rdf:type
的快捷方式,但这并不能帮助我理解。)
!a
是一条属性路径,意思是“一条长度为1的路径,其中属性不是rdf:type
”。
SELECT ?x {
?x a ?type.
FILTER NOT EXISTS { ?x a :MyClass }
}
上面的查询将找到 ?x
,其中不存在三元组 ?x rdf:type :MyClass
。
SELECT ?x {
?x a ?type.
?x !a :MyClass.
}
此查询将查找 ?x
,其中 ?x ?property :MyClass
存在 ?property
而非 rdf:type
。
我正在使用 SPARQL 构建查询并希望排除某些结果。
我知道 FILTER NOT EXISTS
可以用来完成任务。例如:
SELECT * {
?sub a ?type .
FILTER NOT EXISTS {?sub a :NotExpectedType.}
}
但在摸索中,无意中发现自己会写!a
。这是一个有效的 SPARQL 查询,但结果不同于 FILTER NOT EXISTS
。例如:
SELECT * {
?sub a ?type .
?sub !a :NotExpectedType .
}
那么 !a
是什么意思? (我知道 a
是 rdf:type
的快捷方式,但这并不能帮助我理解。)
!a
是一条属性路径,意思是“一条长度为1的路径,其中属性不是rdf:type
”。
SELECT ?x {
?x a ?type.
FILTER NOT EXISTS { ?x a :MyClass }
}
上面的查询将找到 ?x
,其中不存在三元组 ?x rdf:type :MyClass
。
SELECT ?x {
?x a ?type.
?x !a :MyClass.
}
此查询将查找 ?x
,其中 ?x ?property :MyClass
存在 ?property
而非 rdf:type
。