gpt4 book ai didi

sparql - 如何按名称一致地查询 dbpedia 中的编程语言?

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

似乎没有一致的方法可以根据名称查询编程语言。示例:

http://dbpedia.org/page/D_(programming_language)
rdfs:label "D (programming language)"@en
dbpprop:name "D programming language"
owl:sameAs freebase:"D (programming language)"
foaf:name "D programming language"

对比

http://dbpedia.org/page/C++
rdfs:label "C++"@en
dbpprop:name "C++"
owl:samwAs freebase:"C++"
foaf:name "C++"

由于对于“编程语言”、“(编程语言)”、“programming_language”、“(programming_language”)或“”是否是 dbpedia 中编程语言名称的一部分没有标准约定,我不知道如何始终如一地按名称搜索。

我想创建某种返回 http://dbpedia.org/page/D_(programming_language 的 SPARQL 查询) 对于“D”和 http://dbpedia.org/page/C++对于“C++”,但我不知道该怎么做。

除非编程语言的各种三元组中至少有一个使用一致的命名约定,否则我将不得不通过首先查询名称+“(编程语言)”,然后回退到名称+“(编程语言”)来破解它, name + "programming language"当没有找到结果时。但我想要一个更健壮的方法。

最佳答案

您当然可以只使用基本子字符串匹配或正则表达式进行匹配,例如像这样找到“C++”的匹配项:

SELECT DISTINCT ?pl ?label
WHERE {
?pl a dbpedia-owl:ProgrammingLanguage ;
rdfs:label ?label .
FILTER(langMatches(lang(?label), "en"))
FILTER(regex(str(?label), "C\\+\\+"))
}

当然,上面的代码对于像“D”这样的编程语言名称会有问题,因为您会得到几个匹配项(“D”、“Dylan”、“MAD”等)。在这些情况下,您可能希望对结果进行一些巧妙的后处理,例如标记返回的标签并查看您的输入字符串是否作为独立单词出现。

众所周知,SPARQL 中的正则表达式匹配非常昂贵(就评估时间而言),但由于您将其与特定类别的类型约束相结合,DBPedia 端点应该能够很好地处理此类查询。

关于sparql - 如何按名称一致地查询 dbpedia 中的编程语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13094536/

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