SPARQL的成对比较

SPARQL的成对比较,sparql,linked-data,Sparql,Linked Data,我想对给定相似性度量的对象集合进行两两比较。将明确定义该度量,以便某些属性非常精确地匹配,而另一些属性只能彼此如此不同(即,比较浮动:它们之间的差异不超过50%) 我将如何构建这样一个查询?理想情况下,输出是一个Nx2表,其中每行包含两个可比较对象的IRI。重复项(即,1==2是匹配项,2==1)是可以接受的,但如果我们可以避免它们,那也会很好 我想用一个查询在所有对上运行它。我可能能够找出如何为给定对象执行此操作,但当同时跨所有对象查询时,此问题变得更加困难 是否有人对如何执行此操作有见解?想

我想对给定相似性度量的对象集合进行两两比较。将明确定义该度量,以便某些属性非常精确地匹配,而另一些属性只能彼此如此不同(即,比较浮动:它们之间的差异不超过50%)

我将如何构建这样一个查询?理想情况下,输出是一个Nx2表,其中每行包含两个可比较对象的IRI。重复项(即,1==2是匹配项,2==1)是可以接受的,但如果我们可以避免它们,那也会很好

我想用一个查询在所有对上运行它。我可能能够找出如何为给定对象执行此操作,但当同时跨所有对象查询时,此问题变得更加困难

是否有人对如何执行此操作有见解?

想法如下:

前缀ex:
选择不同的?主题1?主题2
在哪里{
?主题1 ex:属于ex:公共类别。
?主题2 ex:属于ex:公共类别。
?主体1 ex:exactProperty?e。
?主体2 ex:exactProperty?e。
?受试者1 ex:approxProperty?a1。
?受试者2 ex:approxProperty?a2。
过滤器(?主题1>?主题2)。
过滤器((abs(?a1-?a2)/(abs(?a1)+abs(?a2)))<0.5)
}
例如,在DBpedia上:

前缀rdf:
前缀xsd:
前缀dbo:
前缀umbel-rc:
选择不同的?主题1?主题2
在哪里{
?受试者1 rdf:类型umbel rc:参与者。
?受试者2 rdf:伞形花序类型rc:演员。
?受试者1 dbo:配偶?配偶1。
?受试者2 dbo:配偶?配偶2。
?主题1 dbo:wikiPageID?ID1。
?主题2 dbo:wikiPageID?ID2。
过滤器(?主题1>?主题2)。
过滤器(?喷嘴1=?喷嘴2)。
过滤器(abs(?ID1-?ID2)/xsd:float(?ID1+?ID2)<0.05)
}
因此,可能和是同一个人。
他们都是自己的配偶,而且他们的wikiPageID彼此没有太大的不同

一些解释:

  • ?subject1>?subject2
    子句删除“重复排列”
  • 关于
    xsd:float的用法,请参见

SMAPE不是对称的…@StanislavKralin对不起?它是。它就在名称(和定义)中。这绝对是对称的。是的,你是对的,对不起!