Semantic web, social media – SemantycznyWeb

Good Relations w praktyce – semantyczny serwis e-commerce (cz.2)

przez admin dnia lis.01, 2011, w Programowanie

Shopping

Jakiś czas temu w części pierwszej artykułu napisałem trochę o budowie sieciowej ontologii dla e-commerce – Good Relations. Szczerze powiedziawszy może wydać się on trochę nudny (widać zresztą po zainteresowaniu wg statystyk), no ale od czegoś trzeba zacząć i trochę wiedzy na temat budowy samej ontologii bez wątpienia trzeba posiadać. Pora więc na trochę praktyki. W artykule tym postaram się w prosty sposób opisać za pomocą ontologii Good Relations przykładowy serwis www sprzedający produkty. W efekcie nasz sklep firmowy będzie znacznie bardziej „search engine friendly” a nawet można by powiedzieć „semantic web friendly„…

Na wstępie trochę założeń co do naszego sklepu:

  • serwis powinien zawierać podstawowe informacje co do naszej firmy takie jak adres, nazwa czy telefon kontaktowy
  • nasza firma posiada kilka sklepów na terenie całego kraju i informacje na ich temat będą umieszczone w serwisie
  • serwis przedstawiał będzie ofertę ogólną firmy dotycząca sprzedawanych produktów z branży elektronicznej

Istnieje kilka sposobów na umieszczenie semantycznych danych w serwisie. Jak już pisałem nie raz w starszych artykułach, możemy wykorzystać składnię RDFa i mieścić semantyczne znaczniki bezpośrednio w kodzie strony HTML. Można też wykorzystać składnię RDF/XML lub N3/Turtle i zapisać te dane w oddzielnych plikach tekstowych. Dla pierwszej opcji plik powinien mieć rozszerzenie .rdf, a dla drugiej .n3. Zazwyczaj spotkać można nazwy plików takie jak semanticweb.rdf lub goodrelations.n3. W opisywanych przykładach będzie stosowana składnia RDFa.

Przed opisem jakiegoś elementu na stronie za pomocą semantycznych znaczników powinno umieścić się wszystkie przestrzenie nazw jakie będą używane. W tym celu na początku każdego bloku <div> zawierającego semantyczny opis powinno się je wyszczególnić w następujący sposób:

<div xmlns="http://www.w3.org/1999/xhtml"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:gr="http://purl.org/goodrelations/v1#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:vcard="http://www.w3.org/2006/vcard/ns#">
miejsce na semantyczny opis zawartości strony
</div>

Wszystkie dalsze przykłady będzie się traktować tak jakby były umieszczone w powyższym bloku <div>.

Do opisu informacji na temat firmy zostanie wykorzystana klasa BusinessEntity ontologii Good Relations oraz właściwości wchodzące w jej skład. Oprócz niej zostaną wykorzystane znaczniki vcard oraz foaf.

<div typeof="gr:BusinessEntity" about<strong>="</strong>#company">
<div property="gr:legalName" content="Kowalski Enterprise"></div>
<div property="vcard:tel" content="+48 669311615"></div>
<div rel="vcard:adr">
<div typeof="vcard:Address">
<div property="vcard:country-name" content="Polska"></div>
<div property="vcard:locality" content="Rybnik"></div>
<div property="vcard:postal-code" content="44-200"></div>
<div property="vcard:street-address" content="Rudzka 67"></div>
</div>
</div>
<div rel="foaf:depiction" resource="http://www.kowalskihomepage.pl/logo.jpg"></div>
<div rel="foaf:page" resource=""></div>
</div>

W powyższym przykładzie zostały zapisane podstawowe informacje na temat firmy Kowalski Enterprise. Wykorzystaną właściwością klasy BusinessEntity jest gr:legalName.

Kolejnym krokiem tworzenia semantycznego serwisu www jest opis poszczególnych sklepów firmy znajdujących się w różnych miejscach kraju. Aby opisać ten fakt trzeba skorzystać z kolejnej klasy ontologii Good Relations jaką jest LocationOfSalesOrServiceProvisioning.

Cały blok informacji dotyczący pojedynczego sklepu firmy Kowalski Enterprise powinien znajdować się w następującym bloku:

<div typeof="gr:LocationOfSalesOrServiceProvisioning" about="#store"></div>


W nim znajdują się informacje dotyczące nazwy sklepu i adresu, oraz godzin otwarcia w poszczególne dni tygodnia oraz weekendu (gr:hasOpeningHoursSpecification).

Najważniejszy element opisu, który wiąże informacje dotyczące właśnie tego sklepu z firmą jest właściwość gr:hasPOS, która wskazuje na URI miejsca, w którym znajdują się informacje dotyczące firmy macierzystej.

Fragment semantycznego opisu serwisu www dotyczący informacji na temat firmy nie jest duży i został on zaprezentowany w całości. Jako, że pełny fragment kodu potrzebnego do opisu informacji na temat poszczególnych sklepów jest zbyt rozbudowany zostaną zaprezentowane tylko jego najważniejsze fragmenty:

<div typeof="gr:LocationOfSalesOrServiceProvisioning" about="#store">
...
<div rev="gr:hasPOS" resource="http://www.kowalskienterprise.pl#company"></div>
<div property="rdfs:label" content="Kowalski Shop 1"></div><div rel="vcard:adr"></div>
<div rel="vcard:geo"></div>
<div rel="gr:hasOpeningHoursSpecification">
<div typeof="gr:OpeningHoursSpecification" about="#mon_fri"></div>
</div>
<div rel="gr:hasOpeningHoursSpecification">
<div typeof="gr:OpeningHoursSpecification" about="#sat"></div>
</div>
<div rel="gr:hasOpeningHoursSpecification">
<div typeof="gr:OpeningHoursSpecification" about="#sun"></div>
</div></div>

Do opisu oferty firmy Kowalski Enterprise wykorzystana zostanie klasa Offering. Zaprezentowany zostanie skrócony opis oferty w, której pojawia się opis jednego produktu firmy jakim jest konsola Sony Playstation 3 SLIM:

<div typeof="gr:Offering" about="#offering">
<div rev="gr:offers" resource="http://www.kowalskienterprise.pl#company"></div>
<div property="rdfs:label" content="Sony Playstation 3 SLIM" xml:lang="pl"></div><div rel="gr:hasBusinessFunction" resource="http://purl.org/goodrelations/v1#Sell"></div>
<div rel="gr:hasPriceSpecification">
<div typeof="gr:UnitPriceSpecification"></div>
</div>
<div rel="gr:acceptedPaymentMethods" resource="http://purl.org/goodrelations/v1#PayPal"></div></div>

Za pomocą właściwoci gr:haspriceSpecification wiążemy dany produkt z klasą UnitPriceSpecification, w której można zamieścić dokładne informacje dotyczące ceny produkty oraz waluty w jakiej sprzedajemy produkt np.

<div typeof="gr:UnitPriceSpecification">
<div property="gr:hasCurrency" content="EUR" datatype="xsd:string"></div>
<div property="gr:hasCurrencyValue" content="300.00" datatype="xsd:float"></div>
</div>

Dzieki właściwości gr:acceptedPaymentMethods można określić wszystkie możliwe metody płatności za produkt. W wybranym fragmencie została zapisana tylko jedna forma płatności jaką jest PayPal. Gdyby zaistniała potrzeba odzwierciedlenia faktu, że firma oferuje usługę naprawy tegoż produktu wystarczy dodać następujący blok:

<div rel="gr:hasBusinessFunction" resource="http://purl.org/goodrelations/v1#Repair"></div>

Good Relations posiada kilka właściwości funkcji biznesowych, które można dodać w opisie produktu. Niektóre z nich to:

  • gr:ConstructionInstallation,
  • gr:Dispose,
  • gr:LeaseOut,
  • gr:Maintain,
  • gr:ProvideService,
  • gr:Repair,
  • gr:Sell,
  • gr:Buy

W powyższych fragmentach kodu HTML i RDFa została zaprezentowana następująca struktura powiązań pomiędzy firmą, jej jednym sklepem oraz ofertą firmy dotycząca sprzedaży produktu:

źródło: opracowanie własne

Całą ofertę sklepu należy opisać w podobny sposób jak pokazany powyżej. Gdy wszystkie dane, które chcemy opisać wykorzystując składnię RDFa zostaną zamieszczone należy się upewnić czy nagłówek DOCTYPE strony www wygląda następująco:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.0" xml:lang="en">

Nagłówek DOCTYPE XHTML+RDFa mówi robotom, że strona zawiera semantyczne dane w języku RDFa. Do opisu danych za pomocą elementów ontologii Good Relations można wykorzystać odpowiednie generatory, które przekształcają dane wprowadzane do zwykłego formularza w odpowiednią składnię RDFa gotową do umieszczenia na stronie www. Innym rozwiązaniem jest wybór systemów zarządzania treścią strony takich jak np. Drupal, czy typowych rozwiązań typu e-Commerce jakimi są np. Magento, Joomla/Virtuemart, osCommerce czy WordPress z odpowiednimi pluginami. Posiadają one odpowiednie generatory, które są wiele z tych czynności zautomatyzować.

W kolejnej części artykułu postaram się przedstawić parę zapytań w języku SPARQL jakie można wykonać na tak skonstruowanym opisie semantycznego serwisu www…

:, ,

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