2013-05-06 46 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

相关问题