Sparql 如何从构造在图形上创建聚合

Sparql 如何从构造在图形上创建聚合,sparql,rdf,semantic-web,owl,ontology,Sparql,Rdf,Semantic Web,Owl,Ontology,这是我的疑问: PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX rs: <http://www.welovethesemanticweb.com/rs#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> construct { ?subject0 rs:similarityValue ?similairty0.

这是我的疑问:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rs: <http://www.welovethesemanticweb.com/rs#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    construct {
  ?subject0 rs:similarityValue ?similairty0.
    ?subject1 rs:similarityValue ?similairty1
}
WHERE {

  {
  ?subject0 ?predicate0 ?object0.
  rs:Impromptu_No._1 ?predicate0 ?object0.
    ?predicate0 rs:hasSimilarityValue ?similairty0Helper.
    BIND(?similairty0Helper * (4/9) AS ?similairty0)
    FILTER (?subject0 != rs:Impromptu_No)  
  }
  union {
    ?subject1 ?predicate ?object.
    ?object ?predicate1 ?object1.
    ?predicate1 rs:hasSimilarityValue ?similairty1Helper.
    rs:Impromptu_No._1 ?predicateHelper ?objectHelper.
    ?objectHelper ?predicate1 ?object1
      BIND(?similairty1Helper * (1/9) AS ?similairty1)
    FILTER (?subject1 != rs:Impromptu_No._1)
  }
}
如您所见,对于每个实例,都有许多值,我希望对它们进行聚合,并为每个实例求和。我会用SELECT来做,但用CONSTRUCT,我不知道如何应用聚合

阅读之后,我发现我们不能直接从构造中使用聚合,但我需要同时使用SELECT和CONSTRUCT,似乎我必须使用命名图,但即使我尝试过,我也不知道如何做到这一点

非常感谢你的帮助

非常感谢,致以最良好的祝愿

更新1 我尝试过的方法之一是:

construct {
  ?subject0 rs:similarityValue ?similairty0.
    ?subject1 rs:similarityValue ?similairty1
}
WHERE {
  GRAPH ?g  {?subject0 rs:similarityValue ?similairty0}.
  {
  ?subject0 ?predicate0 ?object0.
....

但是我得到了空结果

首先,最好确保您可以选择所有要检索的信息。看起来你的目标是这样的:

前缀rs: 选择不同的权重系数,其中{ -?x是特殊的兴趣值。这 -被拉出到值块中,仅用于 -方便;只有一个地方可以换 -rs:即兴表演,现在开始。 价值观?x{rs:即兴第1号} -找到离目标一步之遥的目标 -带有?x的公共属性/值,以及 -以4/9为?重量。 { ?s?p?o。 ?x?p?o。 bind4/9为?重量 } 协会 -找到离我们两步远的地方 -带有?x的公共属性/值,并取 -重量的1/9 { s?a?b?b?p?o。 x?c?d?d?p?o。 bind1/9为?重量 } -获取属性的相似性因子 -并确保?s与?x不同。 ?p rs:hasSimilarityValue?系数。 过滤器?s!=?x } 最后,由于您已经获得了所需的值,现在可以构建所需的三元组:

构造{ ?s rs:相似性值?相似性 } 在哪里{{ 选择不同的总权重*因子作为相似性,其中{ 价值观?x{rs:即兴第1号} { ?s?p?o。 ?x?p?o。 bind4/9为?重量 } 协会 { s?a?b?b?p?o。 x?c?d?d?p?o。 bind1/9为?重量 } ?p rs:hasSimilarityValue?系数。 过滤器?s!=?x } 分组 }}
可能的打字错误再次出现。相似性应该是相似性转换的“airty”和“arity”。也就是说,如果不查看您的数据和查询,我们真的帮不了什么忙。您的查询中有一些结构,如?s?p?o?p:hasSimilarityValue?r,虽然你当然可以在你的属性上有属性,但我想知道你的数据是否就是这样构造的。这会有点不寻常。@JoshuaTaylor我纠正了输入错误,但仍然没有结果,我会再次为您上传数据,这对您有好处吗?请注意,这肯定会有帮助,但我们也不知道查询实际应该做什么,这使得很难找出它为什么不起作用。查询中的一些解释性注释会有所帮助。在SPARQL中介绍一条评论。@JoshuaTaylor我现在更新了问题,并用前缀向您提供了完整的查询,我更正了结果,现在您拥有了我的一切:告诉我们何时可以购买您的书。感谢您的努力,很抱歉回答得太晚,这就是我想要的,虽然我认为最终的结果可能是一个表选择,而不是一个图构造,无论如何,我可以处理,但只有一个问题,我可以问你为什么在两个并集中使用相同的?p变量名,你是说它们是相同的吗?或者这并不重要,因为每个都在不同的范围内?@AniaDavid我只使用construct,因为这就是你问题中的示例查询所使用的。如果您只是想要tags表,那么倒数第二个查询应该可以,对吗?@AniaDavid我在联合的每个部分使用相同的p变量,原因与我也使用相同的s、o、因子、折扣和x变量相同;据我所知,这个查询的要点是,有两种选择或替代案例可以找到p和o,一种是一个,另一种是两个。但是在找到它们之后,你需要做同样的事情,得到相似性因子并乘以折扣。请注意,检索p的相似性因子发生在联合之外。请帮助我,我被困在那里了,我的解决方案不好,因为它的性能是一场灾难,我需要在多个级别的多个地方进行这两个聚合。
construct {
  ?subject0 rs:similarityValue ?similairty0.
    ?subject1 rs:similarityValue ?similairty1
}
WHERE {
  GRAPH ?g  {?subject0 rs:similarityValue ?similairty0}.
  {
  ?subject0 ?predicate0 ?object0.
....
-----------------------------------------------------------------------------------------------------------------------
| s                                   | weight                     | factor                                           |
=======================================================================================================================
| rs:5th_Symphony                     | 0.111111111111111111111111 | "0.1"^^<http://www.w3.org/2001/XMLSchema#double> |
| rs:Dies_Irae                        | 0.111111111111111111111111 | "0.1"^^<http://www.w3.org/2001/XMLSchema#double> |
| rs:Le_nozze_di_Figaro               | 0.111111111111111111111111 | "0.1"^^<http://www.w3.org/2001/XMLSchema#double> |
| rs:Piano_Concerto_No._24            | 0.111111111111111111111111 | "0.1"^^<http://www.w3.org/2001/XMLSchema#double> |
| rs:Piano_Sonata_No._31              | 0.111111111111111111111111 | "0.1"^^<http://www.w3.org/2001/XMLSchema#double> |
| rs:Piano_Sonata_No._31              | 0.444444444444444444444444 | "0.6"^^<http://www.w3.org/2001/XMLSchema#double> |
| rs:Polonaise_heroique               | 0.111111111111111111111111 | "0.1"^^<http://www.w3.org/2001/XMLSchema#double> |
| rs:Polonaise_heroique               | 0.444444444444444444444444 | "0.4"^^<http://www.w3.org/2001/XMLSchema#double> |
| rs:Polonaise_heroique               | 0.444444444444444444444444 | "0.6"^^<http://www.w3.org/2001/XMLSchema#double> |
| rs:Preludes                         | 0.111111111111111111111111 | "0.1"^^<http://www.w3.org/2001/XMLSchema#double> |
| rs:Preludes                         | 0.444444444444444444444444 | "0.4"^^<http://www.w3.org/2001/XMLSchema#double> |
| rs:Preludes                         | 0.444444444444444444444444 | "0.6"^^<http://www.w3.org/2001/XMLSchema#double> |
| rs:Requiem_Sequentia                | 0.111111111111111111111111 | "0.1"^^<http://www.w3.org/2001/XMLSchema#double> |
| rs:Sonata_Pathetique                | 0.111111111111111111111111 | "0.1"^^<http://www.w3.org/2001/XMLSchema#double> |
| rs:Symphony_No._29_in_A_major       | 0.111111111111111111111111 | "0.1"^^<http://www.w3.org/2001/XMLSchema#double> |
| rs:Violin_Concerto_No._5_in_A_major | 0.111111111111111111111111 | "0.1"^^<http://www.w3.org/2001/XMLSchema#double> |
-----------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------
| s                                   | similarity             |
================================================================
| rs:5th_Symphony                     | 0.044444444444444446e0 |
| rs:Piano_Concerto_No._24            | 0.044444444444444446e0 |
| rs:Requiem_Sequentia                | 0.044444444444444446e0 |
| rs:Dies_Irae                        | 0.044444444444444446e0 |
| rs:Piano_Sonata_No._31              | 0.31111111111111117e0  |
| rs:Symphony_No._29_in_A_major       | 0.044444444444444446e0 |
| rs:Le_nozze_di_Figaro               | 0.044444444444444446e0 |
| rs:Violin_Concerto_No._5_in_A_major | 0.044444444444444446e0 |
| rs:Sonata_Pathetique                | 0.044444444444444446e0 |
| rs:Preludes                         | 0.48888888888888893e0  |
| rs:Polonaise_heroique               | 0.48888888888888893e0  |
----------------------------------------------------------------
@prefix :      <http://www.semanticweb.org/rs#> .
@prefix rs:    <http://www.welovethesemanticweb.com/rs#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .

rs:5th_Symphony  rs:similarityValue  0.044444444444444446e0 .

rs:Polonaise_heroique
        rs:similarityValue  0.48888888888888893e0 .

rs:Preludes  rs:similarityValue  0.48888888888888893e0 .

rs:Requiem_Sequentia  rs:similarityValue
                0.044444444444444446e0 .

rs:Le_nozze_di_Figaro
        rs:similarityValue  0.044444444444444446e0 .

rs:Symphony_No._29_in_A_major
        rs:similarityValue  0.044444444444444446e0 .

rs:Piano_Concerto_No._24
        rs:similarityValue  0.044444444444444446e0 .

rs:Sonata_Pathetique  rs:similarityValue
                0.044444444444444446e0 .

rs:Dies_Irae  rs:similarityValue  0.044444444444444446e0 .

rs:Piano_Sonata_No._31
        rs:similarityValue  0.31111111111111117e0 .

rs:Violin_Concerto_No._5_in_A_major
        rs:similarityValue  0.044444444444444446e0 .