优化SPARQL查询从Dbnary提取多词性法语词汇及其同义词
问题原因
你之前直接追加lexinfo:partOfSpeech lexinfo:verb的写法,会要求同一个词汇条目同时属于名词和动词两类词性,既不符合你的查询需求,也很难匹配到符合条件的结果,所以查询无返回。
优化后可直接运行的查询语句
SELECT DISTINCT * where { VALUES ?pos { lexinfo:noun lexinfo:verb lexinfo:adjective lexinfo:adverb } ?l a ontolex:LexicalEntry; lime:language "fr"; ontolex:canonicalForm ?f ; lexinfo:partOfSpeech ?pos ; ontolex:sense ?s . ?f ontolex:writtenRep ?w . OPTIONAL { ?l dbnary:synonym ?syn ; rdfs:label ?synonyme .} } LIMIT 100
如果你需要明确区分每条结果的词性,也可以把SELECT DISTINCT *替换为SELECT DISTINCT ?w ?pos ?syn ?synonyme,减少冗余字段的返回。
核心修改点
- 用
VALUES关键词批量指定你需要查询的4类词性范围,一次性完成匹配,无需拆分4次查询 - 将固定的词性匹配改为变量
?pos,查询结果会自动携带每个词条对应的词性,方便你后续做分类处理 - 完全保留原查询的同义词匹配逻辑,原有可用的查询结果不会受影响
内容的提问来源于stack exchange,提问作者emma
相关产品推荐
相关产品推荐

