2014-04-26 1 views
0

Я пытаюсь запросить мой набор данных, чтобы я мог найти все цитаты, которые цитируются отдельной частью текста более одного раза, но мой запрос не работает ,Sparql Query: Get all? Quote quoteBy? Text более одного раза

Я думал о чем-то подобном, но я не совсем уверен, что я все правильно. Помощь очень ценится.

SELECT ?s 
WHERE { 
     ?s a <http://scta.info/quotation> . 
     ?s scta-rel:quotedBy ?section . 
     FILTER (?section > 1) . 
    } 
LIMIT 1000 

Ниже приведен пример вида информации для каждого типа котировок, который цитируется более одного раза. Обратите внимание, что эта запись цитируется тремя различными текстами.

Property Value 
dc:title  Omnia per ipsum facta sunt, et sine ipso factum est nihil, quod factum est; 
scta-rel:quotedBy http://scta.info/items/lectio131 
scta-rel:quotedBy http://scta.info/items/lectio109 
scta-rel:quotedBy http://scta.info/items/lectio133 
scta-terms:fromBiblicalBook http://scta.info/works/io 
scta-terms:citation io1_3 
scta-terms:fromBiblicalChapter 1 
scta-terms:fromBiblicalVerse  3 
scta-terms:quotation  Omnia per ipsum facta sunt, et sine ipso factum est nihil, quod factum est; 
scta-terms:quotetype http://scta.info/quotetypes/biblical 
http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://scta.info/quotation 

ответ

1

Вы должны рассчитывать вхождения ?section:

SELECT ?s 
WHERE { 
     ?s a <http://scta.info/quotation> . 
     ?s scta-rel:quotedBy ?section . 
    } 
GROUP BY ?s 
HAVING (count(?section) > 1) 

Это работает путем подсчета секций для каждого ?s. ?section должен быть уникальным для каждого ?s, потому что графики RDF являются наборами троек, без дубликатов. Следовательно, ?s scta-rel:quotedBy ?section . и GROUP BY ?s дают только ?section один раз за каждый ?s.

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