首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确保单词-1紧接单词-2之前。

确保单词-1紧接单词-2之前。
EN

Stack Overflow用户
提问于 2014-10-16 05:52:30
回答 1查看 102关注 0票数 1

我有一个短语,我把它分成几个词。每个单词都有一个ex:position属性,在短语中标记其顺序,如下所示:

代码语言:javascript
复制
 "Jack is painting and Mary is helping him"

 ex:phrase     ex:hasWord    ex:word-1 .
 ex:word-1     ex:label "Jack" .
 ex:word-1     ex:position "1"^^double .

 ex:phrase     ex:hasWord    ex:word-2 .
 ex:word-2     ex:label "is" .
 ex:word-2     :position "2"^^double .

 …

如何进行查询,以确保ex:word-1位于ex:word-2之前。

代码语言:javascript
复制
      PREFIX ex: <http://www.w3.org/namespace/>
      select ?word1 ?word2
    {
      ?word1  ex:label ?label1 .
      ?word2  ex:label ?label2 .
    }

为了限制ex:word-1ex:word-2之间的距离,我尝试了

代码语言:javascript
复制
FILTER(ex:position(?position1, ?position2) < 2) 

但我明白:

未定义URI函数{位置}。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-16 20:01:41

我想你差点就拿到了。下面的查询将检索文本中给定单词之前的所有单词。第一个过滤器与您尝试的类似(单词2的位置减去单词1的位置是<2),但是差异应该是正的(因此过滤器中的第二个条件):

代码语言:javascript
复制
PREFIX ex: <http://www.w3.org/namespace/>
      select ?word1 ?word2
    {
      ?word1  ex:label ?label1 .
      ?word1  ex:position ?p1 .
      ?word2  ex:label "label of the word you want" .
      ?word2  ex:position ?p2 .
      FILTER(((?p2 - ?p1)<2) && (?p2>?p1))
    }

我一直在用Twinkle做一些测试,以下也是允许的:

代码语言:javascript
复制
FILTER((?p2 - ?p1)=1) 

这就简化了一切。最后,既然您似乎在控制rdf中断言的内容,那么为什么不创建一个"ex:precedes“关系呢?这样你就可以通过这样的方式得到你的答案:

代码语言:javascript
复制
select ?word1 ?word2
    {
      ?word1  ex:precedes ?word2 .
      ?word2  ex:label "your label" .
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26397153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档