0

鉴于此 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 和 endTime?我尝试使用:

 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?endTimeFor The Subject 它找到的 Object Good

我需要以下答案:

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

1 回答 1

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 .
}
于 2013-05-06T16:46:44.373 回答