Szkoła Web 3.0 Dowiedz się czym jest Sieć Semantyczna

1paź/09Off

Typowe i nietypowe literały

Kiedy mówiliśmy o RDF, wspominaliśmy też, że to właśnie struktura grafu dostarcza maszynom informacji w sposób, który umożliwia ich przetwarzanie. To właśnie dzięki połączeniom pomiędzy zasobami graf RDF nabiera znaczenia. Jak zapewne pamiętacie niektóre zdania w grafie RDF kończą się literałami (ang. literal). Dziś kilka słów na ich temat.

Czym są literały? Służą one do zapisu wartości liczbowych, dat, nazw, itp. w postaci ciągu znaków (reprezentacji leksykalnej).

Jednym z oczywistych zastosowań literałów jest dostarczanie etykiet do zasobów reprezentowanych przez URI, tak aby mogły być one prezentowane w sposób zrozumiały ludziom a nie tylko maszynom. Ponieważ Sieć Semantyczna była budowana od początku z myślą o międzynarodowej społeczności, możliwe jest przypisanie znacznika języka (ang. language tag) do literału. Znaczniki języka (zdefiniowane w specyfikacji RFC 3306) wyrażone są w postaci zestawu dwuliterowych etykiet, zapisanych małymi literami alfabetu łacińskiego, oddzielonych myślnikiem (-). Warto zwrócić uwagę na subtelną różnicę w zapisie znaczników języka w porównaniu do definicji lokalizacji (ang. locale) używanej powszechnie w procesie internacjonalizacji treści. Przykładem znacznika języka może być: "en" lub "pl-pl".

Jak widzieliśmy na przykładach w poprzednich artykułach, literały mogą również służyć do wyrażania ilości. Jednak jak to zwykle bywa z maszynami, należy maszynom powiedzieć jak należy interpretować wartości liczbowe, tak aby nie pomyliły ich z np. datami. Do tego celu służą tzw. typowane literały (ang. typed literals). Specyfikacja RDF przewiduje możliwość dołączenia typu danych (ang. datatype) literału zapisanego w postaci referencji URI do definicji typu. Zazwyczaj (w 99% przypadków) spotyka się definicje typów ze specyfikacji schematu XML (ang. XML Schema), np: xsd:boolean, xsd:int, itp. Specyfikacja RDF przewiduje również specjalny typ danych do osadzania dokumentu XML jako literału, służy do tego typ rdf:XMLLiteral. Ponownie jak poprzednio, proszę o informację w komentarzach jeżeli chcielibyście dowiedzieć się więcej na temat samych typów zdefiniowanych z specyfikacji schematu XML.

Czas na przykład: chcemy podać nazwę serwisu http://www.semanticschool.com/ po angielsku i po polsku, oraz datę od kiedy serwis istnieje.

Wersja NTriples wyglądałaby następująco:

<http://www.semanticschool.com> <http://purl.org/dc/terms/date> "2009-09-21"^^<http://www.w3.org/2001/XMLSchema#date> .
<http://www.semanticschool.com> <http://purl.org/dc/terms/title> "Szkoła Web 3.0"@pl .
<http://www.semanticschool.com> <http://purl.org/dc/terms/title> "School of Semantics"@en .

Turtle:

@prefix dc: <http://purl.org/dc/terms/> .

<http://www.semanticschool.com> dc:title "Szkoła Web 3.0"@pl , "School of Semantics"@en ;
	                        dc:date "2009-09-21"^^<http://www.w3.org/2001/XMLSchema#date> .

i na koniec RDF/XML:

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/terms/">

<rdf:Description rdf:about="http://www.semanticschool.com">
	<dc:title xml:lang="pl">Szkoła Web 3.0</ns2:title>
	<dc:title xml:lang="en">School of Semantics</ns2:title>
	<dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2009-09-21</ns2:date>
</rdf:Description>

</rdf:RDF>