gpt4 book ai didi

sparql - 首选组合 SPARQL

转载 作者:行者123 更新时间:2023-12-02 05:14:52 30 4
gpt4 key购买 nike

我正在尝试编写一个优雅的 SPARQL,为多个可能的查询提供一个解决方案。我有多个主语和多个谓词,我想接收一个对象。单一解决方案的存在非常不确定,因此我给出了多种选择。如果我没记错的话,这可以通过以下查询来完成:

SELECT ?object
WHERE {
:subjA|:subjB|:subjC :propA|:propB|:propC ?object.
}
LIMIT 1

真正的问题是我不想要任何解决方案。我想按 :subjA 排序,然后按 :propA 排序。说清楚;我想要以下组合列表中的第一个解决方案:

  • :subjA :propA
  • :subjA :propB
  • :subjA :propC
  • :subjB :propA
  • :subjB :propB
  • :subjB :propC
  • :subjC :propA
  • :subjC :propB
  • :subjC :propC

如何重写我的查询以获得第一个可能的解决方案?

最佳答案

这肯定不是有效的 SPARQL 查询。您只能使用 | 作为谓词,该谓词将被称为属性路径,但您将丢失变量绑定(bind)。

SPARQL 返回一组行,但您可以使用例如字典顺序。不确定,这是否是您想要的:

样本数据

@prefix : <http://ex.org/> .

:subjA :propA :o1 .
:subjA :propC :o1 .
:subjB :propB :o1 .
:subjC :propB :o1 .
:subjC :propA :o1 .
:subjA :propC :o2 .
:subjB :propB :o2 .
:subjB :propC :o2 .

查询

PREFIX : <http://ex.org/>
SELECT ?s ?p ?o
WHERE
{ VALUES ?s { :subjA :subjB :subjC }
VALUES ?p { :propA :propB :propC }
?s ?p ?o
}
ORDER BY ?s ?p

结果

-------------------------
| s | p | o |
=========================
| :subjA | :propA | :o1 |
| :subjA | :propC | :o1 |
| :subjA | :propC | :o2 |
| :subjB | :propB | :o1 |
| :subjB | :propB | :o2 |
| :subjB | :propC | :o2 |
| :subjC | :propA | :o1 |
| :subjC | :propB | :o1 |
-------------------------

更新

由于需要使用定义的顺序,因此可以使用实体索引作为解决方法(我分别更改了 :subjB:subjC 的顺序。:propB:propC 以显示与字典顺序相比的差异):

查询

PREFIX : <http://ex.org/>
SELECT ?s ?p ?o
WHERE
{ VALUES (?sid ?s) { (1 :subjA) (2 :subjC) (3 :subjB) }
VALUES (?pid ?p) { (1 :propA) (2 :propC) (3 :propB) }
?s ?p ?o
}
ORDER BY ?sid ?pid

结果

-------------------------
| s | p | o |
=========================
| :subjA | :propA | :o1 |
| :subjA | :propC | :o1 |
| :subjA | :propC | :o2 |
| :subjC | :propB | :o1 |
| :subjC | :propA | :o1 |
| :subjB | :propB | :o1 |
| :subjB | :propB | :o2 |
| :subjB | :propC | :o2 |
-------------------------

关于sparql - 首选组合 SPARQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43806439/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com