2013-05-06 2 views
0

С учетом этого RDF:SPARQL запрос об объекте, чтобы найти другой объект

<?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 и ?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 Саррадж Очевидно вы новичок в SPARQL и на самом деле не понимают еще, я бы рекомендовал идти и читать хорошую SPARQL учебник, такие как http://www.cambridgesemantics.com/semantic-university/ sparql-by-example – RobV

+0

В документе содержится описание одного ресурса с тремя различными свойствами данных. Тройки здесь: «Это будет« май »,« It startTime »00: 00: 13'' и' It endTime '00: 00: 16''. То, как вы запрашиваете и фильтруете их, первый должен быть единственным результатом. Это то, что вы хотите: 'SELECT? S? P? O WHERE {? S ns2914: be? Month. ? s? p? o. FILTER (regex (? Month, 'May', 'i'))} '??? – toniedzwiedz

+0

Мне не нужно спрашивать о возможностях .. и из этого запроса мне нужно получить startTime и endTime. –

ответ

1

Ваш запрос не выбирает, что данные, так почему вы удивляетесь, что не возвращается? Как я предложил в комментарии почитайте хороший SPARQL учебник как SPARQL by Example или забрать копию отличной Learning SPARQL книги от O'Reilly

Запроса Вы писали выбирает тройки, где объект соответствует регулярному выражению и только тех троек. Если вы хотите выбрать время начала и окончания, вам нужно добавить дополнительные шаблоны к своим запросам, например.

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

+0

Я отредактировал вопрос, я надеюсь, что вы поймете меня сейчас. @RobV –

 Смежные вопросы

  • Нет связанных вопросов^_^