Sparql 确保word-1紧跟在word-2之前
我有一个短语,我把它切分成几个词。每个单词都有一个Sparql 确保word-1紧跟在word-2之前,sparql,Sparql,我有一个短语,我把它切分成几个词。每个单词都有一个ex:position属性,该属性在短语中标记其顺序,如下所示: "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
ex:position
属性,该属性在短语中标记其顺序,如下所示:
"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
之前
PREFIX ex: <http://www.w3.org/namespace/>
select ?word1 ?word2
{
?word1 ex:label ?label1 .
?word2 ex:label ?label2 .
}
但我得到:
未定义URI函数{position}
我想你差点就成功了。下面的查询将检索文本中位于给定单词前面的所有单词。第一个过滤器类似于您尝试的过滤器(单词2的位置减去单词1的位置是“right before”,通常意味着“right before”,但“is”在您的句子中出现了两次。您能否更准确地说明要求?我非常确定您想要的是可能的。我还有第二个问题:-然后请在单独的StackOverflow问题中提问。原因是您只能将一个答案标记为已接受,因此,如果您的每个子问题最好由不同的so答案回答,并且您仅将一个标记为已接受,则未来的访问者将不再清楚哪个答案实际解决了所述问题。我为了更加清晰,我提出了两个独立的问题(但实际上这是一个有2个需求的sparql查询)。这里我只想问一下如何确保word1紧跟在word2之前。您所说的“如何进行查询以确保ex:word-1紧跟在ex:word-2之前”是什么意思通过任何用于生成RDF的分段过程,根据定义,ex:word-2紧跟在ex:word-1之后。您想要回答的实际问题是什么?比如“单词”后面跟着“帮助”之类的问题,或者是“给我所有相邻单词对”之类的问题嗨,Daniel,谢谢你的回答。我尝试了你在1-Virtuoso中提出的两种查询过滤器,这会导致错误“sparql非数值参数到算术运算”在2-Allegrograph中,这给出了0个结果。你确定你的rdf已经验证了吗?我对你发布的内容有一些问题。例如,你没有使用xsd前缀来分配双值。我在将这个rdf转换为这个rdf时验证了这两个查询
FILTER(ex:position(?position1, ?position2) < 2)
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))
}
FILTER((?p2 - ?p1)=1)
select ?word1 ?word2
{
?word1 ex:precedes ?word2 .
?word2 ex:label "your label" .
}