gpt4 book ai didi

用于检索个人的 SPARQL 查询

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

请帮助我进行 SPARQL 查询。我有一个本体,其中“Building”类是 owl:Thing 的子类。 “建筑”有自己的子类,例如:教堂、医疗、商店。这些子类中的每一个都有自己的标签(seeAlso)。例如:Shop 有 supermarket、bakery、market 等标签。Church 有 Chapel、Cathedral 等标签。

enter image description here

个人看起来像这样:

enter image description here

我需要做一个 SPARQL 查询,它将根据标签检索个人。因此,假设我想获得该子类的所有个体,这些个体具有 seeAlso “面包店”类型的标签。在这种情况下,我希望得到 bakery1 和 supermarket1

我已经试过了,但这个查询似乎是错误的:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?individual ?class ?label
WHERE {
?individual rdf:type owl:NamedIndividual .
?class rdf:type owl:Class .
FILTER(?label="bakery")
}

如果我删除带有 FILTER 的行,我只会得到个人和类,但不会像它们应该的那样相互关联。 Protege 只是返回我所有可能的连接类 - 个人

最佳答案

鉴于对答案的评论,其目的是建立同义词,而不是单独的实例。有几种方法可以做到这一点,但是 SKOS专门为这种词汇关系设计的。属性 skos:prefLabel 用于显示标签,同义词可以由 skos:altLabel 定义。您拥有的层次结构可以保留,只需使用 skos:altLabel 而不是“rdf:seeAlso”(通常用于本体的引用链接)。

因此数据在 Turtle 文本序列化中看起来像:

:Shop rdfs:subClassOf :Building .
:Shop skos:prefLabel "Shop"^^xsd:string .
:Shop skos:altLabel "supermarket"^^xsd:string .
:Shop skos:altLabel "bakery"^^xsd:string .
:Shop skos:altLabel "market"^^xsd:string .

对于查询,OP 表示要匹配字符串 - 在这种情况下为 preflabel:

SELECT ?individual ?label
WHERE {
?individual skos:prefLabel "Shop"^^xsd:string .
?individual skos:altLabel ?label
}

关于用于检索个人的 SPARQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37727156/

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