gpt4 book ai didi

sparql - 如何使用 SPARQL 从维基词典中获取某种语言的所有名词

转载 作者:行者123 更新时间:2023-12-03 23:31:39 25 4
gpt4 key购买 nike

我正在尝试使用 SPARQL 查询维基词典以获取 的所有术语。名词 某某语言 (例如德语)
并作为输出:

  • 名词串
  • 语法性别(属):男、女、中性

  • 我正在使用 SPARQL 端点: http://wiktionary.dbpedia.org/sparql我找到了一个例子,但我没有弄清楚
    如何调整它以获得我想要的信息。
    PREFIX terms:<http://wiktionary.dbpedia.org/terms/>
    PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
    PREFIX dc:<http://purl.org/dc/elements/1.1/>
    SELECT ?sword ?slang ?spos ?ssense ?twordRes ?tword ?tlang
    FROM <http://wiktionary.dbpedia.org>
    WHERE {
    ?swordRes terms:hasTranslation ?twordRes .
    ?swordRes rdfs:label ?sword .
    ?swordRes dc:language ?slang .
    ?swordRes terms:hasPoS ?spos .
    OPTIONAL { ?swordRes terms:hasMeaning ?ssense . }
    OPTIONAL {
    ?twordBaseRes terms:hasLangUsage ?twordRes .
    ?twordBaseRes rdfs:label ?tword .
    }
    OPTIONAL { ?twordRes dc:language ?tlang . }
    }

    最佳答案

    首先,您要选择所有作为名词的词义。在示例查询的查询结果中可以看到,该信息由 terms:hasPoS 捕获。关系。因此,要专门查询所有名词,我们可以这样做:

    PREFIX terms: <http://wiktionary.dbpedia.org/terms/>
    SELECT ?term
    WHERE {
    ?term terms:hasPoS terms:Noun .
    }
    LIMIT 100

    Result

    接下来你想要的只是某种语言的名词。这似乎被 dc:language覆盖了关系,因此我们对该关系添加了额外的约束。假设我们想要所有英语名词:
    PREFIX terms: <http://wiktionary.dbpedia.org/terms/>
    PREFIX dc: <http://purl.org/dc/elements/1.1/>

    SELECT ?term
    WHERE {
    ?term terms:hasPoS terms:Noun ;
    dc:language terms:English .
    }
    LIMIT 100

    Result

    所以,我们现在正在选择你想要的,但我们还没有你想要的格式的输出,因为上面的查询只返回术语意义的标识符,而不是实际术语的字符串值。正如我们在示例查询的输出中所见,字符串值由 rdfs:label 捕获。属性,所以我们添加:
    PREFIX terms: <http://wiktionary.dbpedia.org/terms/>
    PREFIX dc: <http://purl.org/dc/elements/1.1/>
    PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>

    SELECT ?term ?termLabel
    WHERE {
    ?term terms:hasPoS terms:Noun ;
    dc:language terms:English ;
    rdfs:label ?termLabel .
    }
    LIMIT 100

    Result

    如果您现在查看此查询的结果,您会发现所使用的语言有些奇怪:尽管我们认为我们选择了英语,但我们也返回了具有不同语言标签的标签(例如,'@ru ')。为了删除这些结果,我们可以进一步限制我们的查询,并说我们只想要英文的标签:
    PREFIX terms: <http://wiktionary.dbpedia.org/terms/>
    PREFIX dc: <http://purl.org/dc/elements/1.1/>
    PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>

    SELECT ?term ?termLabel
    WHERE {
    ?term terms:hasPoS terms:Noun ;
    dc:language terms:English ;
    rdfs:label ?termLabel .
    FILTER(langMatches(lang(?termLabel), "en"))
    }
    LIMIT 100

    Result

    最后,性别/属。在这里我不太确定。查看维基词典数据中的一些示例资源(例如, entry for dog )我会说这些信息实际上并不存在于数据中。

    关于sparql - 如何使用 SPARQL 从维基词典中获取某种语言的所有名词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30895925/

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