运行Virtuoso Server时,在发出SPARQL-Select请求时错过了一些结果。我追踪它并发现一种非常奇怪的行为,我无法解释。
但要从头开始。
可以在http://creativeartefact.org/sparql
找到我查询的端点I)检查特定的三联:
ASK WHERE {
<http://creativeartefact.org/mbrainzImport/f18e677a-4051-486a-aa64-d9a3bfef90af>
<http://creativeartefact.org/ontology/represents>
<http://creativeartefact.org/mbrainzImport/35ed9f2a-6ce4-44ca-9c7a-967377b0e007>. }
查询返回 TRUE
II)现在变得更加不明确了:
ASK WHERE {
?s
<http://creativeartefact.org/ontology/represents>
<http://creativeartefact.org/mbrainzImport/35ed9f2a-6ce4-44ca-9c7a-967377b0e007>. }
如果第一个返回true,那么第二个也应该这样做,不应该吗?但事实并非如此。它返回 FALSE !
如果我用变量替换谓词或对象,它会按预期返回true。只有在为主题设置变量时,才会返回false。
可以通过运行查询
来测试三重存储中真正存在的数据SELECT * WHERE {
?s
?p
<http://creativeartefact.org/mbrainzImport/35ed9f2a-6ce4-44ca-9c7a-967377b0e007>. }
你会看到,两个结果都与p = http://creativeartefact.org/ontology/represents结合 - 这正是我在前一个查询中要求的谓词。
更令人奇怪的是,有三种具有上述格式的三元组会返回三元组:
select * {
?s
<http://creativeartefact.org/ontology/represents>
<http://creativeartefact.org/mbrainzImport/e4003568-5645-4ee1-abd0-2e8156272e59>. }
任何想法,这里发生了什么?
提前致谢,
弗兰克
答案 0 :(得分:0)
使用的Virtuoso是2013年的原始07.00.3203版本。
我建议升级到最新的Virtuoso 07.10.3211,open source或commercial,具体取决于此处使用的是什么,并查看问题是否仍然存在......