第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

是否可以在SPARQL中的RDF集合中獲取元素的位置?

是否可以在SPARQL中的RDF集合中獲取元素的位置?

是否可以在SPARQL中的RDF集合中獲取元素的位置?假設(shè)我有以下Turtle聲明:@prefix : <http://example.org#> .:ls :list (:a :b :c)有沒(méi)有辦法獲得集合中元素的位置?例如,使用此查詢(xún):PREFIX :     <http://example.org#>PREFIX rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> SELECT ?elem WHERE { ?x :list ?ls . ?ls rdf:rest*/rdf:first ?elem .}我明白了:--------| elem |========| :a   || :b   || :c   |--------但我想要一個(gè)查詢(xún)來(lái)獲?。?-------------| elem | pos |==============| :a   |  0  || :b   |  1  || :c   |  2  |--------------可能嗎?
查看完整描述

3 回答

?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊

純SPARQL 1.1解決方案

我擴(kuò)展了數(shù)據(jù)以使問(wèn)題變得更難。讓我們?cè)诹斜碇刑砑右粋€(gè)重復(fù)元素,例如,:a最后添加一個(gè)元素:


@prefix : <http://example.org#> .


:ls :list (:a :b :c :a) .

然后我們可以使用這樣的查詢(xún)來(lái)提取每個(gè)列表節(jié)點(diǎn)(及其元素)以及列表中節(jié)點(diǎn)的位置。我們的想法是,我們可以匹配列表中的所有單個(gè)節(jié)點(diǎn)[] :list/rdf:rest* ?node。但是,每個(gè)節(jié)點(diǎn)的位置是列表頭部之間的中間節(jié)點(diǎn)的數(shù)量?node。我們可以通過(guò)將模式分解為來(lái)匹配每個(gè)中間節(jié)點(diǎn)


[] :list/rdf:rest* ?mid . ?mid rdf:rest* :node .

然后,如果我們分組?node,則不同?mid綁定的數(shù)量是?node列表中的位置。因此,我們可以使用以下查詢(xún)(它還抓取rdf:first與每個(gè)節(jié)點(diǎn)關(guān)聯(lián)的元素)來(lái)獲取列表中元素的位置:


prefix : <https://stackoverflow.com/q/17523804/1281433/>

prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>


select ?element (count(?mid)-1 as ?position) where { 

  [] :list/rdf:rest* ?mid . ?mid rdf:rest* ?node .

  ?node rdf:first ?element .

}

group by ?node ?element

----------------------

| element | position |

======================

| :a      | 0        |

| :b      | 1        |

| :c      | 2        |

| :a      | 3        |

----------------------

這是有效的,因?yàn)镽DF列表的結(jié)構(gòu)是這樣的鏈接列表(其中?head是列表的開(kāi)頭(對(duì)象:list),并且是?mid因?yàn)槟J降牧硪粋€(gè)綁定[] :list/rdf:rest* ?mid):


RDF列表的圖形表示


與Jena ARQ擴(kuò)展的比較

該問(wèn)題的提問(wèn)者還發(fā)布了一個(gè)使用Jena的ARQ擴(kuò)展來(lái)處理RDF列表的答案。該答案中公布的解決方案是


PREFIX :     <http://example.org#>

PREFIX rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

PREFIX list: <http://jena.hpl.hp.com/ARQ/list#>


SELECT ?elem ?pos WHERE {

 ?x :list ?ls .

 ?ls list:index (?pos ?elem).

}

這個(gè)答案取決于使用Jena的ARQ和啟用擴(kuò)展,但它更簡(jiǎn)潔和透明。不明顯的是一個(gè)人是否有明顯更好的表現(xiàn)。事實(shí)證明,對(duì)小名單,差別不是特別顯著,但對(duì)于大名單中,ARQ擴(kuò)展有很多更好的性能。純SPARQL查詢(xún)的運(yùn)行時(shí)間變得非常長(zhǎng),而使用ARQ擴(kuò)展的版本幾乎沒(méi)有差異。


-------------------------------------------

| num elements | pure SPARQL | list:index |

===========================================

|      50      |    1.1s     |    0.8s    |

|     100      |    1.5s     |    0.8s    |

|     150      |    2.5s     |    0.8s    |

|     200      |    4.8s     |    0.8s    |

|     250      |    9.7s     |    0.8s    |

-------------------------------------------

這些具體值明顯會(huì)因您的設(shè)置而異,但總體趨勢(shì)應(yīng)該可以在任何地方觀察到。由于將來(lái)可能會(huì)發(fā)生變化,這里是我正在使用的ARQ的特定版本:


$ arq --version

Jena:       VERSION: 2.10.0

Jena:       BUILD_DATE: 2013-02-20T12:04:26+0000

ARQ:        VERSION: 2.10.0

ARQ:        BUILD_DATE: 2013-02-20T12:04:26+0000

因此,如果我知道我必須處理非平凡大小的列表并且我有ARQ可用,我會(huì)使用擴(kuò)展名。


查看完整回答
反對(duì) 回復(fù) 2019-08-19
?
動(dòng)漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊

簡(jiǎn)短的回答

不是沒(méi)有超出標(biāo)準(zhǔn),除非你的名單長(zhǎng)度有限,那么你可以做一些像臟的事情:

{ ?x :list (:a) BIND(1 AS ?length) }UNION{ ?x :list ([], :a) BIND(2 AS ?length) }UNION{ ?x :list ([], [], :a) BIND(3 AS ?length) }...

等等

某些RDF查詢(xún)引擎具有可在RDF列表上運(yùn)行的非標(biāo)準(zhǔn)功能,但您必須查閱系統(tǒng)的文檔。

答案很長(zhǎng)

這是RDF列表的一個(gè)癥狀,具有可怕的結(jié)構(gòu)和定義。不知何故,我們最終得到了兩種表示列表的方式,這兩種方式都很難用!

如果您控制數(shù)據(jù),請(qǐng)使用更合理的表示,例如

<x> :member [
   rdf:value :a ;
   :ordinal 1 ;], [
   rdf:value :b ;
   :ordinal 2 ;], [
   rdf:value :c ;
   :ordinal 3 ;]...

然后你可以查詢(xún):

{ <x> :member [ rdf:value :a ; :ordinal ?position ] }


查看完整回答
反對(duì) 回復(fù) 2019-08-19
  • 3 回答
  • 0 關(guān)注
  • 569 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)