Mam sparql-Query, który prosi o pewne właściwości URI danego typu. Ponieważ nie jestem pewien, czy te właściwości istnieje, używam opcjonalnego kluczowe:Alternatywa dla OPCJONALNYCH słów kluczowych w zapytaniach SPARQL?
PREFIX mbo: <http://creativeartefact.org/ontology/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT * WHERE {
?uri a mbo:LiveMusicEvent.
OPTIONAL {?uri rdfs:label ?label}.
OPTIONAL {?uri mbo:organisedBy ?organiser}.
OPTIONAL {?uri mbo:takesPlaceAt ?venue}.
OPTIONAL {?uri mbo:begin ?begin}.
OPTIONAL {?uri mbo:end ?end}.
}
Kiedy uruchomić tej kwerendy przed moim SPARQL punktu końcowego (Virtuoso Server), mam błąd:
Virtuoso 42000 Error The estimated execution time -721420288 (sec) exceeds the limit of 400 (sec).
Po zmniejszeniu klauzul OPTIONAL, po pierwszym usuniętym zdaniu szacowany czas wykonania wynosi 4106 sekund, po usunięciu dwóch klauzul kwerenda zostanie wykonana (i natychmiast zwróci wartości).
Nie widzę, dlaczego czas realizacji szacowany jest rakieta jak to z dodatkowymi klauzulami opcjonalne, ale może jestem po prostu za pomocą źle skonstruowane zapytanie?
Jedną z rzeczy, które naprawdę chciałbym (ale nie mam pojęcia, ile to będzie kosztowne), jest możliwość zrobienia czegoś takiego jak 'from [skonstruować {...}, gdzie {...}] wybierz ... gdzie {...} '. Ułatwi to wykonanie niektórych trudnych zadań. –
@JoshuaTaylor zawsze wydawało mi się to dziwne, że 'CONSTRUCT' (który w pewnym sensie jest bardziej" naturalnym "typem zapytań dla RDF) nie jest łatwe do połączenia/połączenia z innymi zapytaniami. Mamy podselekty - dlaczego nie podkonstrukcje?Sądzę, że to jedna z tych funkcji, w których WG po prostu poszedł "Może być miły, ale nie teraz". –
Tak, byłoby miło mieć w przyszłości, faktycznie mamy implementację zapytań "CONSTRUCT" wewnętrznie w YarcData, ale nie w klauzuli "OD". Używamy ich jako sposobu na wywoływanie bardziej tradycyjnych analiz wykresów (np. K-średnich, najkrótszych ścieżek itp.), Używając ich jako pod-zapytań z zastosowanymi modyfikatorami, które mogą być prawidłowo zagnieżdżone wewnątrz regularnego wzorca graficznego. – RobV