Semantic web, social media – SemantycznyWeb

Zapytania SPARQL cz. 2 – odpytywanie serwisu e-commerce

przez admin dnia lis.26, 2011, w Programowanie

Kate Ray's documentary "The Semantic Web&...
W artykule tym pokażę 3 rozbudowane zapytania w języku SPARQL, które nawiązywać będą do stworzonego przez nas semantycznego serwisu e-commerce opisanego za pomocą ontologii Good Relations. W polskiej sieci trudno znaleźć przykładowe zapytania SPARQL, które były by dłuższe niż parę linijek kodu. Mogą się one przydać tym którzy zaczynają swoją przygodę z technologiami semantic web oraz pokażą jaki tkwi w nich potencjał.

Do wyszukiwania informacji w naszym semantycznych serwisie typu e-commerce użyjemy endpoint oferowany przez serwis http://loc.openlinksw.com/sparql (wszystkie poniższe zapytania zostały wykonane na już zaindeksowanych ofertach innych firm).

Chcąc wyszukać pierwszych dziesięć ofert firmy „Kowalski Enterprise” zawierające w opisie słowo „Sony” wykonujemy następujące zapytanie w język SPARQL:


PREFIX gr: <http://purl.org/goodrelations/v1#>
SELECT ?nazwafirmy, ?oferta, ?komentarz
WHERE
{
?a rdf:type gr:BusinessEntity.
?a gr:legalName ?nazwafirmy.
?a gr:offers ?oferta.
?oferta rdfs:comment ?komentarz.
FILTER(regex(?nazwa,"Kowalski Enterprise")&&regex(?comment,"Sony"))
} LIMIT 10

Potencjalny klient może mieć jednak własne preferencje co do lokalizacja poszczególnych oddziałów sklepów firmy Kowalski Enterprise i interesują go tylko sklepy w regionie „Śląsk” oferujące płatność kartą VISA.
Potrzebuje on również dane dla swojego osobistego GPS’a aby mógł szybko wybrać najbliżej niego znajdujący się oddział oraz numer telefonu.
Odpowiednio stworzona aplikacja może te dane przesłać wprost do jego telefonu komórkowego lub innego urządzenia, które ma dostęp do sieci www:


PREFIX gr: <http://purl.org/goodrelations/v1#>
SELECT DISTINCT ?label, ?comment, ?region, ?latitude, ?longitude, ?telefon WHERE
  {
?a rdf:type gr:BusinessEntity.
?a gr:legalName ?nazwa.
?a gr:offers ?co.
?co rdfs:comment ?comment.
?co gr:acceptedPaymentMethods ?r.
?co gr:availableAtOrFrom ?lokalizacja.
?lokalizacja rdfs:label ?label.
?lokalizacja v:adr ?adr.
?adr v:region ?region.
?lokalizacja v:geo ?geo.
?geo v:latitude ?latitude.
?geo v:longitude ?longitude.
?lokalizacja v:tel ?tel.
?tel rdf:value ?telefon.
FILTER(regex(?nazwa,"Kowalski Enterprise") && regex(?comment,"Sony") && regex(?region,"Śląsk") && regex(?r, ,"VISA")) } LIMIT 10

Najważniejszym kryterium wyboru oferty przez klienta staje się cena, więc szuka on ofert tylko z określonych przedziałów cenowych. W zapytaniu pojawiają się dodatkowe właściwości określające przedział cenowy produktu oraz waluta w jakiej danych przedział obowiązuje.
Jeśli sklep oferuje produkty firmy „Sony” w walucie euro to minimalną ceną będzie 10 EUR a maksymalną 20 EUR. Jeśli natomiast walutą jest złoty, to przedziałem będzie kwota od 40 zł do 80 zł.
Klient postanowił jednak, że zobaczy również oferty konkurencji więc warunek o firmie „Kowalski Enterprise” zostaje usunięty:


PREFIX v: <http://www.w3.org/2006/vcard/ns#?
PREFIX gr: <http://purl.org/goodrelations/v1#>
SELECT *
WHERE
  {
?a gr:legalName ?name.
?a gr:offers ?co.
?co gr:acceptedPaymentMethods ?r.
?co gr:availableAtOrFrom ?lokalizacja.
?lokalizacja rdfs:label ?label.
?lokalizacja v:adr ?adr.
?adr v:region ?region.
?lokalizacja v:geo ?geo.
?geo v:latitude ?latitude.
?geo v:longitude ?longitude.
?lokalizacja v:tel ?tel.
?tel rdf:value ?telefon.
    ?co rdfs:comment ?comment.
    ?co gr:hasPriceSpecification ?ps .
    ?ps gr:hasCurrencyValue ?p .
    ?ps gr:hasCurrency ?c .
    FILTER ( ( ( regex(?c, "EUR")
      && ?p >"10"^^xsd:float && ?p <"20"^^xsd:float )
    || ( regex(?c, "PLN")
      && ?p >"40"^^xsd:float && ?p <"80"^^xsd:float ) ) && regex(?comment,”Sony”) && regex(?region,”Śląsk”))
  }
LIMIT 10

Jak widać zapytania w języku SPARQL są bardzo rozbudowane i do poprawnego działania wymagają dobrze zoptymalizowanych warunków uwzględniających opcjonalność występowania poszczególnych właściwości.
Niewątpliwą zaletą tego języka jest jednak fakt, że za jego pomocą można w bardzo efektywny sposób przeszukać całą sieć www, przez co mamy pełny wgląd do ofert wszystkich witryn e-commerce w jednym miejscu, co pozwoli na wybór optymalnej oferty dla potencjalnego klienta…

Osoby, które nie łapią o co chodzi w strukturze zapytań przedstawionych powyżej zachęcam do zerknięcia na poniższe artykuły opublikowane wcześniej:

Wstęp do SPARQl z wykorzystaniem RAP API dla PHP
Semantyczny serwis e-commerce (cz.1) – podstawy ontologii Good Relations
Good Relations w praktyce – semantyczny serwis e-commerce (cz.2)

:, ,

Zostaw komentarz

Spam protection by WP Captcha-Free




Szukasz czegoś?

Użyj formularza:

Jeśli nadal nie możesz nic znaleźć, napisz do mnie!

Polecane strony