在一些FILTER我最终得到2套之后,让我们说A1和A2,我想SELECT只在A1中那些没有出现在A2中的元素.我试图使用MINUS但没有成功.
当我们有类似的东西:
MINUS { ?s foaf:givenName "Bob" }
Run Code Online (Sandbox Code Playgroud)
我们需要事先知道我们想要减去什么.在我的情况下,我不知道任何属性如`foaf:givenName1,除了它们属于集合A2.(这是一个财产思想).
我很迷惑.有任何想法吗?
使用CLARITY示例编辑:
SELECT DISTINCT ?x ?y WHERE {
?x swrc:listAuthor ?y.
?x swrc:author ?w.
FILTER (!regex(?y, " and ")).
?a swrc:listAuthor ?b.
?a swrc:author ?c.
FILTER regex(?b, " and ").
FILTER(?c != ?w).}
Run Code Online (Sandbox Code Playgroud)
所以我想对此做的是以下内容.使用listAuthor,我可以在"John Doe和John Nipper"这样的字符串中获取作者.利用这种格式,我希望让作者单独写一篇论文(在他们的作者列表中没有"和").前3行足够了.但也有一些作者撰写了2篇论文,其中1篇是论文,1篇是共同作者.我尝试以某种方式从第一个中减去它们.有任何想法吗?
sparql ×1