Rdf SPARQL图的比较

Rdf SPARQL图的比较,rdf,sparql,Rdf,Sparql,如何将两个RDF图与SPARQL进行比较?如果我有图:a和:b,我想找出:a出现在:b中的所有时间。我可以查询:a的所有主题、谓词和对象,然后以编程方式构建一个模式查询,该查询将匹配:b中的:a的模式。有没有一种方法可以构建一个:一个模式查询,全部在SPARQL中,没有编程构造?我用两个命名图设置了一个Jena Fuseki端点,http://a和http://b,我们称之为a和b。a包含一个三元组,b包含两个三元组。A、 (查看)作为一组三元组,是B的子集,下面的查询确认了这一点: selec

如何将两个RDF图与SPARQL进行比较?如果我有图:a和:b,我想找出:a出现在:b中的所有时间。我可以查询:a的所有主题、谓词和对象,然后以编程方式构建一个模式查询,该查询将匹配:b中的:a的模式。有没有一种方法可以构建一个:一个模式查询,全部在SPARQL中,没有编程构造?

我用两个命名图设置了一个Jena Fuseki端点,
http://a
http://b
,我们称之为a和b。a包含一个三元组,b包含两个三元组。A、 (查看)作为一组三元组,是B的子集,下面的查询确认了这一点:

select * where { 
  graph ?g { ?s ?p ?o }
}

-----------------------------------------------------------
| s            | p            | o            | g          |
===========================================================
| <urn:uuid:b> | <urn:uuid:p> | <urn:uuid:b> | <http://b> |
| <urn:uuid:a> | <urn:uuid:p> | <urn:uuid:b> | <http://b> |
| <urn:uuid:a> | <urn:uuid:p> | <urn:uuid:b> | <http://a> |
-----------------------------------------------------------
因为没有这样的三元组。然而,因为我们试图问A是否是B的子图,这是由它们不是三元组表示的,所以我们需要在这里反转真值。因此,我们使用:

ask { 
  NOT EXISTS {
    graph <http://a> { ?s ?p ?o }
    NOT EXISTS { graph <http://b> { ?s ?p ?o } }
  }
}

yes

这是您提到的第二个问题“SPARQL图”。没有这样的事情;SPARQL是RDF图(即三元组集)的查询语言。如果你有一个RDF图A,那么它要么是B的子图,要么不是;没有一种感觉可以让它多次出现。[有一个RDF蕴涵的概念,其中空白节点是可以实例化的变量,因此可能是一个图通过多次替换蕴涵另一个图,但我认为这几乎肯定不是您要问的。]谢谢,更正。我打算在:b中找到:a的结构的多个实例。你如何得到这些图?您提到您不希望以编程方式执行此操作,但这些图形在哪里?它们是SPARQL端点中的命名图吗?磁盘上某处的文件?如果这两个图是端点上的命名图,您可能可以执行某些操作。它们是命名图。很抱歉,不够清晰。我对SPARQL和RDF有些陌生。不必抱歉,只要提供更详细的信息,就更容易提供更详细的答案。因为这些图在SPARQL中是命名图,所以我们可以使用SPARQL查询来查询它们,这是我提供的答案的关键。
select * where { 
  graph <http://b> { ?s ?p ?o }
  FILTER NOT EXISTS { graph <http://a> { ?s ?p ?o } }
}

----------------------------------------------
| s            | p            | o            |
==============================================
| <urn:uuid:b> | <urn:uuid:p> | <urn:uuid:b> |
----------------------------------------------
ask { 
  graph <http://a> { ?s ?p ?o }
  NOT EXISTS { graph <http://b> { ?s ?p ?o } }
}

no
ask { 
  NOT EXISTS {
    graph <http://a> { ?s ?p ?o }
    NOT EXISTS { graph <http://b> { ?s ?p ?o } }
  }
}

yes
ask { 
  NOT EXISTS {
    graph <http://b> { ?s ?p ?o }
    NOT EXISTS { graph <http://a> { ?s ?p ?o } }
  }
}

no