MarkLogic 8-SPARQL-遵循同义词链

拿着拉面

假设我有很多带有同义词的本体。

<term>
  <word>cat</word>
  <synonyms>
    <synonym>feline</synonym>
  </synonyms>
</term>
<term>
  <word>feline></word>
  <synonyms>
    <synonym>kitty</synonym>
  <synonyms>
</term>

我该如何写一个SPARQL查询,以便给它一个单词cat,它将给我所有的同义词cat以及的所有同义词cat

我不知道是否有办法递归执行此操作,或者是否必须指定每个级别。

戴夫·卡塞尔(Dave Cassel)

要使用SPARQL,您需要将此数据表示为三元组。知道本体更好的人会提出更好的IRI,但是类似(如MarkLogic内部所示)的东西:

<triple>
  <subject>http://marklogic.com/scope#cat</subject>
  <predicate>http://marklogic.com/term</predicate>
  <object>cat</object>
</triple>
<triple>
  <subject>http://marklogic.com/scope#cat</subject>
  <predicate>http://marklogic.com/synonym</predicate>
  <object>feline</object>
</triple>
<triple>
  <subject>http://marklogic.com/scope#cat</subject>
  <predicate>http://marklogic.com/synonym</predicate>
  <object>kitty</object>
</triple>

请注意,我的三元组的含义与您的三元组不完全匹配,但希望足够接近以说明这一点。使用三元组,然后可以执行SPARQL查询,例如:

select ?term
where {
  <http://marklogic.com/scope#cat> <http://marklogic.com/synonym> ?term
}

其中应返回“猫科动物”和“小猫”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章