【问题标题】:MarkLogic 8 - SPARQL - Follow synonym chainMarkLogic 8 - SPARQL - 遵循同义词链
【发布时间】:2015-08-23 01:52:31
【问题描述】:

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

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

我如何编写一个 SPARQL 查询,以便我可以给它单词 cat,它会给出 cat 的所有同义词以及 cat 同义词的所有同义词

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

【问题讨论】:

    标签: sparql semantics marklogic


    【解决方案1】:

    要使用 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
    }
    

    应该返回“feline”和“kitty”。

    【讨论】:

    • 啊,这实际上是有道理的。我们必须从现有的三元组中进行一些推断,然后它大大简化了我们的 SPARQL 查询。非常好。
    猜你喜欢
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多