代码之家  ›  专栏  ›  技术社区  ›  cupakob

筛选SPARQL结果

  •  0
  • cupakob  · 技术社区  · 15 年前

    我有下面的示例三元组

    r1 -> property -> resourceA
    r1 -> property -> resourceB
    r1 -> property -> resourceC
    resourceA -> name -> word1
    resourceB -> name -> word2
    resourceC -> name -> word4
    
    r2 -> property -> resourceD
    r2 -> property -> resourceE
    r2 -> property -> resourceF
    resourceD -> name -> word1
    resourceE -> name -> word2
    resourceF -> name -> word3
    
    r3 -> property -> resourceG
    r3 -> property -> resourceH
    r3 -> property -> resourceI
    resourceG -> name -> word5
    resourceH -> name -> word6
    resourceI -> name -> word7
    

    作为参数,我使用word1和word2。我想得到所有单词,包括word1和word2,它们和word1和word2一起出现。

    此示例的结果必须是:

    word1
    word2
    word3
    word4
    

    我真的不知道该怎么做:(

    1 回复  |  直到 15 年前
        1
  •  2
  •   laalto    15 年前

    name 对所有人来说都是一样的 word 名称 谓语:

    SELECT DISTINCT ?w {
      ?s <name> ?w
    }
    ORDER BY ?w
    

    SELECT DISTINCT ?w {  # select each word only once
    
      # match three properties under the same resource
      ?r <property> ?p1, ?p2, ?p3.
    
      # two of the properties must have names "word1" and "word2"
      ?p1 <name> "word1" .
      ?p2 <name> "word2" .
    
      # third property name may be anything, including "word1" and "word2"
      ?p3 <name> ?w .
    }
    ORDER BY ?w  # return words in sorted order