我刚刚进入知识图谱/本体领域,有一个问题需要查询。
知识图谱/本体是用RDF构建的,RDF上的查询是通过SPARQL语言完成的。例如,“查找具有给定对象属性的所有主题”
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX bc: <http://www.base22.com/ontologies/2010/5/bc.owl#>
SELECT ?subject
WHERE { ?subject bc:hasEmployer <http://www.base22.com/ontologies/2010/5/my-contacts.owl#IBM> } LIMIT 100
我想在此示例中的最终应用程序中,用户会查询“谁在 IBM 工作”?如何将这样的 NL 查询转换为 SPARQL 查询?
在Google的知识图谱查询API中,给出了一个例子:
https://kgsearch.googleapis.com/v1/entities:search?query=taylor+swift&key=API_KEY&limit=1&indent=True
此查询返回 Swift Taylor 的详细信息。我不确定 Google Knowledge 是否也存储为 RDF 三元组,因此需要 SPARQL 转换。另外,它没有给出如何查询属性限制(关系)的示例,这似乎是更典型的 RDF 数据查询类型。
一般来说,如何由最终用户而不是系统开发人员使用自然语言查询 RDF 数据?
您的问题属于非常活跃的研究领域,称为知识图问答(QAKG),它利用自然语言处理(NLP)方法和技术来实现这一目标。
这是一个非常庞大的研究领域,但简单地重新分级你的问题,为了将 NL 转换为 SPAQRL 查询,你需要让机器理解问题,首先标记每个单词识别实体和关系(使用 NLP 任务,如 NER、NED问题中的词性标记等)并将它们映射到 KG/本体使用的词汇。然后根据问题类型生成SPARQL查询。