我的SPARQL请求似乎已关闭。建议需要

时间:2013-05-12 21:36:43

标签: sparql

作为last question的后续内容,我想提供一些建议。

那里提出的解决方案需要1.1端点,这不是我所拥有的。另外,除了值分组之外,我完全不确定我对计数聚合的处理是否是最佳的。

我想要检索的信息是,对于列表的每个ID:

  • 通过altLabel谓词
  • 的同义词
  • 它的孩子通过narrowerTransitive谓词,除非id有超过40个孩子,在这种情况下我不认为它是一个信息概念,并且只想返回计数

如下所示,我的解决方案在联合的每个部分使用了联合和过滤器。为了处理孩子和孩子的数量,我有两个单独的子请求。所有这些对我来说都是非常不利的,我想知道它是否真的如何进行。

PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX umls: <http://linkedlifedata.com/resource/umls/id/>
SELECT ?id ?childrenCount ?synonym ?child
WHERE
{
  {
    ?id   skos:altLabel           ?synonym .
    FILTER ( langMatches( lang ( ?synonym ) , "EN" ) )
    FILTER ( ?id IN (
      umls:C0013227,
      umls:C0013227,
      ...
    ) )
  }
  UNION
  {
    SELECT ?id ( COUNT ( ?childID ) AS ?childrenCount )
    WHERE
    {
      ?id skos:narrowerTransitive ?childID .
      FILTER ( ?id IN (
        umls:C3244316,
        umls:C0344315,
        ...
      ) )
    }
    GROUP BY ?id
  }
  UNION
  {
    SELECT ?id ?child
    WHERE
    {
      ?id skos:narrowerTransitive ?childID .
      ?childID      skos:prefLabel          ?child   .
      FILTER ( langMatches ( lang ( ?child ) , "EN" ) )
      FILTER ( ?id IN (
        umls:C3244316,
        umls:C0344315,
        ...
      ) )
    }
    LIMIT 40
  }
}
ORDER BY DESC ( ?id ) DESC ( ?childrenCount ) DESC ( ?synonym )
顺便说一句,我已经重复了三次FILTER,因为它似乎在子请求中被优化了,但在全局级别没有。

0 个答案:

没有答案