gpt4 book ai didi

rdf - 在 SPARQL 查询中使用条件

转载 作者:行者123 更新时间:2023-12-04 02:07:34 25 4
gpt4 key购买 nike

我有一个像这样的 SPARQL 查询-

SELECT ?informationPath ?businessEntitylabel ?path ?sourced ?mastered ?delivered
WHERE {
?businessEntity dd:hasPropertyPath ?informationPath .
?businessEntity rdfs:label ?businessEntitylabel .
?informationPath dd:hasPath ?path .
OPTIONAL {
?informationPath a dd:SourcedData .
BIND("Yes" as ?sourced)
}
OPTIONAL {
?informationPath a dd:MasteredData .
BIND("Yes" as ?mastered)
}
OPTIONAL {
?informationPath a dd:DeliveredData .
BIND("Yes" as ?delivered)
}
} ORDER BY ?businessEntitylabel ?path

现在我只想要一列而不是?so​​urced?mastered?delivered 并且名称是?traceability。该列将显示 ?informationPath 是掌握数据还是来源数据或交付数据,因此我想绑定(bind)(“来源数据”作为 ?traceability)或(“掌握数据”作为 ?traceability)或(“交付数据”作为?可追溯性)

我是 SPARQL 的新手,我想知道 SPARQL 中是否有任何“if”语句可以用作-

if(?informationPath a dd:SourcedData)
BIND("SourcedData" as ?traceability)

任何帮助将不胜感激。

最佳答案

使用bindif

我认为这是 Binding a variable to one of two values with IF? 的副本,并且我已将其标记为这样,但可能不是很明显 if 中的 conditions 应该是什么,因此我将此示例添加为答案.假设您有以下形式的数据:

@prefix : <https://stackoverflow.com/q/22985157/1281433/> .

:x1 a :A .
:x2 a :B .
:x3 a :C .
:x4 a :D .

然后您可以使用如下查询来获得一些结果:

prefix : <https://stackoverflow.com/q/22985157/1281433/>

select ?x ?typename where {
?x a [] .
bind( if ( exists { ?x a :A },
"type A" ,
if ( exists { ?x a :B },
"type B",
if ( exists { ?x a :C },
"type C",
"unknown type" )))
as ?typename )
}
------------------------
| x | typename |
========================
| :x1 | "type A" |
| :x2 | "type B" |
| :x3 | "type C" |
| :x4 | "unknown type" |
------------------------

使用

它使用 ifexists 构造来检查各种值。现在,在您的案例中,如果您有特定数量的案例要检查,您实际上可以使用 values 来模拟一种 case 语句。要做到这一点,你会做这样的事情,虽然这不会给你一个“未知”的案例。

prefix : <https://stackoverflow.com/q/22985157/1281433/>

select ?x ?typename where {
values (?type ?typename) {
(:A "type A")
(:B "type B")
(:C "type C")
}
?x a ?type
}
------------------
| x | typename |
==================
| :x1 | "type A" |
| :x2 | "type B" |
| :x3 | "type C" |
------------------

关于rdf - 在 SPARQL 查询中使用条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22985157/

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