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

将SPARQL变量设置为基于另一个变量值的值

  •  1
  • hayfreed  · 技术社区  · 7 年前

    我正在尝试在SPARQL中做一些我怀疑可能不可能的事情,但我还是想让社区看看。

    :a :b :c
    :d :b :e
    :f :b :g
    

    SPARQL INSERT

    INSERT {
        ?subject :h ?var .
        ?var a :type1 .
    }
    WHERE {
        ?subject :b ?object .
    }
    

    插入 语句将不起作用,因为变量 ?var 变量的 ?subject ,理想情况下 UUID

    插入

    :a :h :123abc
    :123abc a type1
    :d :h :456cde
    :456cde a type1
    :f :h :789def
    :789def :a type1
    

    • 的价值 ?主题 因为要插入多个三元组,它们需要使用相同的值(在这种情况下,将类型设置为 type1 )
    • 使用 BIND WHERE 块可能不起作用,因为这将为 这适用于整个图形模式,而不管 ?主题
    1 回复  |  直到 7 年前
        1
  •  4
  •   AndyS    7 年前

    BIND (UUID() AS ?var) WHERE 条款

    UUID

    在查询示例中,还可以使用空白节点。

    INSERT { ?subject :h [ a :type1 ]. } WHERE 每次实例化模板时,都会有一个新的空白节点,即WHERE子句中的每一行。

    BNODE() 它执行相同的操作-为其所调用的每个解决方案行创建新的空白节点。

    这个 哪里