Rdf 这个联合sparql查询会给出遗漏的结果,这有什么不对

Rdf 这个联合sparql查询会给出遗漏的结果,这有什么不对,rdf,sparql,triples,Rdf,Sparql,Triples,我有两个sparql查询,但它们没有返回正确的结果三元组 第一个返回正确的结果,但缺少一些三元组 第二个返回所有正确的三元组,但格式不正确,事实上我不想显示uri 1: 结果: 1 MM mismanage H 2 HC take T 3 HC be D 4 HC face P 1 http://5a0 mismanage H 2 http://6b1 take T

我有两个sparql查询,但它们没有返回正确的结果三元组 第一个返回正确的结果,但缺少一些三元组 第二个返回所有正确的三元组,但格式不正确,事实上我不想显示uri 1:

结果:

1   MM  mismanage   H
2   HC  take            T
3   HC  be          D
4   HC  face            P
 1  http://5a0  mismanage   H
2   http://6b1  take            T
3   http://6b1  be          D
4   http://6b1  face            P
5   http://5a0  make with   G
6   http://6b1  not make    TN
7   http://6b0  have            TL
2:

结果:

1   MM  mismanage   H
2   HC  take            T
3   HC  be          D
4   HC  face            P
 1  http://5a0  mismanage   H
2   http://6b1  take            T
3   http://6b1  be          D
4   http://6b1  face            P
5   http://5a0  make with   G
6   http://6b1  not make    TN
7   http://6b0  have            TL
托塞斯乌里http://5a0,http://5b1... 对应于对象MM,HC。。。在数据库中。 谁能告诉我这个问题吗? 我使用的是ARC triplestore,所以triples存储在mysql数据库中,我使用php语言执行我的查询。 您可以在此链接中找到包含数据的文件

我还尝试了此查询,但它没有提供所有记录:

SELECT  distinct  ?s ?v ?o  WHERE {
    {        ?s2 pred:relationsubject ?s_urii .
        ?s_urii pred:name ?s . 
        ?s2 pred:relationobject ?o .
        ?s2 pred:verb ?v . 

    }

bibi,您的问题并不完全清楚,从您的sparql查询的外观来看,我判断您对sparql绝对陌生,并且尝试了许多将您从?s到?s1到?s2到?s_urii的方法。。。我得说那是四个小时的捉迷藏。。没有浪费我相信你学到了一些东西;-顺便说一下,上面查询中的大括号是不平衡的,不能像上面那样运行

现在,rdf将rdf想象成一个包含三列的大表,一列用于主语,一列用于谓词,一列用于三元组的宾语,相应的查询语言sparql是两件非常简单的事情,您知道自己在做什么

首先运行以下查询并查看数据,这样您至少对主题、谓词和对象有一点熟悉

SELECT ?s ?p ?o WHERE { ?s ?p ?o } LIMIT 100
这可以翻译成人类语言:向我展示所有有三元组的地方。并将subject列中的值绑定到变量s,predicate列中的值绑定到p,object列中的值绑定到变量o

检查在执行以下操作时发生的情况:

SELECT ?s WHERE { ?s ?p ?o } LIMIT 100

SELECT ?p WHERE { ?s ?p ?o } LIMIT 100

SELECT ?o WHERE { ?s ?p ?o } LIMIT 100

SELECT DISTINCT ?s WHERE { ?s ?p ?o } LIMIT 100

SELECT DISTINCT ?p WHERE { ?s ?p ?o } LIMIT 100

SELECT DISTINCT ?o WHERE { ?s ?p ?o } LIMIT 100
也尝试

SELECT DISTINCT ?UNDEF WHERE { ?s ?p ?o } LIMIT 100 
请注意?s?p?o只是变量名,如果您愿意,也可以用?猫?狗?鸟替换它们。 还请注意,sparql select查询返回绑定,而不是三元组

如果第二个查询包含您要查找的绑定,并且您只想删除?s_urii,那么就不要选择它

SELECT  distinct ?v ?o  WHERE {
?s2 pred:relationobject ?o .
?s2 pred:verb ?v . 
}

现在还不清楚你在问什么或者你想得到什么结果,你还没有向我们展示数据。我们不知道您使用的是什么三元组,或者前缀是什么。我们没有足够的信息来重现您的问题。我能马上指出的唯一一件事是,在第一种情况下,你从s_Uri pred:name?s得到?s,而在第二种情况下,你得到的是s_Uri与s_Uri而不是?s的关系。也许在第一种情况下,一些s_urii绑定没有pred:name值?我想共享包含我的数据的.sql文件,但是如何共享呢?不,所有的s_urii绑定都有pred:name valuesA.sql文件?SPARQL用于查询RDF数据,根据存储格式的不同,它通常有一个后缀:.RDF、.owl、.nt、.n3、.ttl等。在任何情况下,如果看不到您查询的数据,也不了解您的设置,我们都无法提供更多帮助。请使用问题下的编辑链接将数据添加到问题中,并向我们显示您用于运行查询的代码。是否将查询提交到web界面?在程序中运行查询?还没有足够的信息。好的,我会编辑它,但是如何共享.sql文件。我使用的是ARC triplestore,所以triples存储在mysql数据库中。为什么不将一些内容复制并粘贴到问题中作为代码块呢?我是sparql的初学者,但我正在尽力。事实上,第二个查询返回正确数量的记录,但我不想显示uri,而是希望显示与第一个查询结果相同的名称。我也尝试了这个查询,但它没有给我所有的记录:SELECT distinct?s?v?o WHERE{{{s2 pred:relationsubject?s_urii。?s_urii pred:name?s。?s2 pred:relationobject?o。?s2 pred:verb?v。}尝试SELECT distinct?name?verb?relObj WHERE{?subject pred:relationobject?relObj。?subject pred:verb?verb.可选{?subject pred:relationsubject?relSubj。?relSubj pred:name?name.}显然不是所有的s2都有一个relationsubject?s_urii,它有一个名称注:我重命名了示例中的变量。好的,我会尝试一下并给您反馈。谢谢此查询不返回任何结果: