Menu

Prototyp SPARQL dotazů

Mifeet

Na bitbucket jsem přidal ukázkové SPARQL dotazy pro vyhledávání podle URI. Na této stránce naleznete popis dotazů, jejich použití a pár poznámek, které zdůvodňují, proč jsou zrovna takové (nemusí to být pro všechny zajímavé, ale někam by se to napsat mělo).

Jaké dotazy tam jsou

V adresáři testing jsou dotazy pro vygenerování náhodných owl:sameAs linků k testovacím datům. V adresáři "URI search" jsou:

  • URI_query_with_labels.sql - velký dotaz, který z db vytáhne relevantní trojice včetně náznaku metadat a labelů.
  • URI_query_without_labels.sql - to samé jako předchozí, ale bez labelů. Bude asi záležet na struktuře sameAs linků a labelů v databázi, ale mě zatím vychází efektivnější ptát se na labely zvlášť.
  • URI_search_labels.sql - vytáhnutí labelů pro subjecty a objecty v trojicích vracených z URI_query_without_labels.sql
  • URI_search_sameAs.sql - vytáhnutí owl:sameAs linků relevantních pro dotaz dle URI

V některých dotazech je sloupec ?cardinality - je tam kvůli tomu, že jedna trojice může být ve jmenném grafu vícekrát (kvůli inferenci). Toto není problém a ?cardinality se snad ani nemusí brát v úvahu, dokud bude platit, že se metadata vztahují pouze ke jmennému grafu.

Proč se dotazovat na labely zvlášť. Na testovacích datech vycházelo lépe získávat labely získávat zvlášť kvůli tomu, že (mimo jiné díky sameAs inferenci) může být pro jeden resource více labelů a ve výsledku by se zbytečně vyskytovaly všechny kombinace labelů.
Problém by mohl být, pokud Virtuoso zvolí jiná URI při inferenci v hlavním dotazu a v dotazu na labely a QE je potom nebude moci správně přiřadit resourcům.
Pokud bude mít jeden resource více labelů (i díky sameAs inferenci), vyřeší to snad CR samo.

Jak to otestovat

Kdybyste chtěli dotazy otestovat, musíte si do Virtuosa nahrát testovací data. Dotazy z adresáře "URI search" by sice měly fungovat, ale zajímavé na nich je hlavně to, jak se vyrovnají se owl:sameAs linky - ty si můžet vygenerovat dotazy v adresáři "testing" (dotazy je vhodné vykonat několikrát, aby byl dostatek linků pro testování, třeba pár stovek).