2013-05-06 68 views
0

有關對象的SPARQL查詢發現鑑於此RDF另一個對象

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE rdf:RDF [<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'> 
<!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'> 
<!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>]> 
<rdf:RDF xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
     xml:base="http://www.example.org/" 
     xmlns:dnr="http://www.dotnetrdf.org/configuration#" 
     xmlns:nss="http://www.example.org/startTime" 
     xmlns:nse="http://www.example.org/endTime#" 
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
> 
    <rdf:Description rdf:about="Fadi"> 
    <ns2914:be xmlns:ns2914="http://example.org/">May</ns2914:be> 
    <nss:startTime>00:00:13</nss:startTime> 
    <nse:endTime>00:00:16</nse:endTime> 
    </rdf:Description> 
    <rdf:Description rdf:about="Fadi"> 
    <ns194:not xmlns:ns194="http://example.org/">Good</ns194:not> 
    <nss:startTime>00:00:19</nss:startTime> 
    <nse:endTime>00:00:21</nse:endTime> 
    </rdf:Description> 
    <rdf:Description rdf:about="She"> 
    <ns195:be xmlns:ns195="http://example.org/">Good</ns195:be> 
    <nss:startTime>00:00:21</nss:startTime> 
    <nse:endTime>00:00:24</nse:endTime> 
    </rdf:Description> 
</rdf:RDF> 

如何讓startTime和結束時間與有關對象的查詢? 我試着使用:

PREFIX nss: <http://www.example.org/startTime> 
PREFIX nse: <http://www.example.org/endTime#> 
SELECT * 
WHERE 
{ 
    ?s ?p ?o . 
    FILTER(REGEX(?o, 'Good', 'i')) 
    ?s nss:startTime ?startTime ; 
     nse:endTime ?endTime . 
} 

但它只是給我的第一?startTime?endTime爲它找到對象Good的主題。

我所需要的答案如下:

?s,?p,?o,?startTime,?endTime 
Fadi,not,Good,00:00:19,00:00:21 
She,be,Good,00:00:21,00:00:24 
+2

@Hassan Sarraj顯然你是新的SPARQL和並不真正瞭解它,我會建議去和閱讀的好SPARQL教程如http://www.cambridgesemantics.com/semantic-university/ sparql-by-example – RobV 2013-05-06 16:42:25

+0

您的文檔包含一個具有三種不同數據屬性的資源的描述。這裏的三元組是:'它是'五月','它開始時間'00:00:13''和'結束時間'00:00:16''。您查詢和過濾它們的方式,第一個必然是唯一的結果。這是你想要的:'SELECT?s?p?o WHERE {?ns2914:是?月。 ?s?p?o。 FILTER(正則表達式(?月,'五月','我'))}'??? – toniedzwiedz 2013-05-06 16:43:28

+0

不,我需要查詢可能..從這個查詢我需要得到startTime和endTime。 – 2013-05-06 16:47:30

回答

1

您的查詢不選擇該數據那麼,爲什麼你感到驚訝是不是回來了?正如我在評論建議去念好SPARQL教程像SPARQL by Example或由O'Reilly

你寫的查詢選擇三元,其中對象正則表達式匹配,只有那些拿起優秀Learning SPARQL書的副本三元。如果您還想選擇開始時間和結束時間,則需要爲查詢添加其他模式,例如

PREFIX nss: <http://www.example.org/startTime> 
PREFIX nse: <http://www.example.org/endTime#> 
SELECT * 
WHERE 
{ 
    ?s ?p ?o . 
    FILTER(REGEX(?o, "May", "i")) 
    ?s nss:startTime ?startTime ; 
    nse:endTime ?endTime . 
} 
+2

@HasanSarraj說,如果沒有試圖解釋究竟是什麼讓它失敗,你的期望幾乎沒有什麼幫助。你必須詳細說明一點。 – toniedzwiedz 2013-05-06 17:12:53

+0

我編輯了這個問題,我希望你現在明白我的意思。 @RobV – 2013-05-06 19:08:05

相關問題