我的本体有2个分类。类别food
和类别foodSource
。 我想获得的数据的食品用SPARQL过滤器正则表达式和联合
SELECT ?food ?foodSource ?foodSource2
WHERE {
{
?foodSource mpasi:data_memerlukanBahan ?memerlukanBahan.
?food ?memerlukanBahan ?value.
FILTER regex(str(?foodSource),"carrot")
}
UNION
{
?foodSource2 mpasi:data_memerlukanBahan ?memerlukanBahan.
?food ?memerlukanBahan ?value.
FILTER regex(str(?foodSource2),"tomato")
}
}
order by ?food
2种foodSource的我得到正确的结果。但是,我想避免一些食物来源。那么,如何在没有食物来源的情况下获得食物?例如我有3种食物: - kedelai粥 - 苹果碎 - 番茄汤 然后我想要没有苹果的食物在里面。所以,我自然会得到kedelai粥和番茄汤。 我可以使用它!正则表达式?
FILTER (!regex(str(?foodSource),"apple")).
正则表达式支持工会和否定这是可能比通过SPARQL联合和MINUS编写更高效。 – AKSW