gpt4 book ai didi

Sparql 键与不同的值

转载 作者:行者123 更新时间:2023-12-04 09:32:10 26 4
gpt4 key购买 nike

我有一个返回重复项的 sparql 查询,我希望它仅根据其中一个值(subjectID)清理它们。与 DISTINCT 不同,DISTINCT 似乎为所选值的组合找到唯一值,而不是仅为其中一个参数。
我看到这里有人提议 group by,但这似乎只适用于我在 group by 之后列出所有参数(我的 sparql 端点提示,例如 SELECT 中的非组关键变量:?occupation)。
我尝试运行内部选择,但它似乎不适用于此特定查询。所以可能是查询本身的问题(liveIn 可选的值似乎导致重复)?

虽然在 SPARQL 学习曲线的早期对关系数据库感到满意,但请随时为不熟悉的人解释显而易见的事情! :)

select distinct  
?subjectID ?englishName ?sex ?locatedIn15Name
?dob ?dod ?dom ?bornLocationName ?occupation
where {
?person a hc:Person ;
hc:englishName ?englishName ;
hc:sex ?sex;
hc:subjectID ?subjectID;
optional { ?person hc:livedIn11 ?livedIn11 .
?livedIn11 hc:englishName ?lived11LocationName .
?livedIn11 hc:locatedIn11 ?locatedIn11 .
?locatedIn11 hc:englishName ?locatedIn11Name .
?locatedIn11 hc:locatedIn15 ?locatedIn15 .
?locatedIn15 hc:englishName ?locatedIn15Name .
} .
optional {?person hc:born ?dob } .
optional {?person hc:dateOfDeath ?dod } .
optional {?person hc:dateOfMarriage ?dom } .
optional { ?person hc:bornIn ?bornIn .
?bornIn hc:englishName ?bornLocationName .
?bornIn hc:easting ?easting .
?bornIn hc:northing ?northing } .
optional { ?person hc:occupation ?occupation }
FILTER regex(?englishName, "^FirstName LastName")
}
GROUP BY
?subjectID ?englishName ?sex
?locatedIn15Name ?dob ?dod ?dom
?bornLocationName ?occupation

最佳答案

重新错误信息:

Non-group key variable in SELECT: ?occupation



您可以通过使用 SAMPLE() 来避免这种情况。聚合 - 这将允许您仅在 ?subjectID 上分组但仍然为其余变量选择值,前提是您只关心为其他变量获取一个值。

这是一个简单的例子:
SELECT ?subjectID (SAMPLE(?dob) AS ?dateOfBirth)
WHERE
{
?person a hc:Person ;
hc:subjectID ?subjectID .
OPTIONAL { ?person hc:born ?dob }
}
GROUP BY ?subjectID

关于Sparql 键与不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11419800/

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