Kanonizacja

W informatyce kanonizacja (czasami standaryzacja lub normalizacja ) to proces przekształcania danych , które mają więcej niż jedną możliwą reprezentację, w formę „standardową”, „normalną” lub kanoniczną . Można to zrobić, aby porównać różne reprezentacje pod kątem równoważności, policzyć liczbę różnych struktur danych, poprawić wydajność różnych algorytmów poprzez wyeliminowanie powtarzających się obliczeń lub umożliwić narzucenie sensownej kolejności sortowania .

Przypadki użycia

Nazwy plików

do plików w systemach plików można w większości przypadków uzyskać za pomocą wielu nazw plików . Na przykład w uniksopodobnych ciąg " /./ " można zastąpić przez " / ". W standardowej bibliotece C funkcja realpath() wykonuje to zadanie. Inne operacje wykonywane przez tę funkcję w celu kanonizacji nazw plików to obsługa /.. odnoszących się do katalogów nadrzędnych, uproszczenie sekwencji wielokrotnych ukośników, usuwanie końcowych ukośników i rozpoznawanie dowiązań symbolicznych .

Kanonizacja nazw plików jest ważna dla bezpieczeństwa komputera. Na przykład serwer WWW może mieć ograniczenie, zgodnie z którym mogą być uruchamiane tylko pliki znajdujące się w katalogu cgi C:\inetpub\wwwroot\cgi-bin . Ta reguła jest egzekwowana przez sprawdzenie, czy ścieżka zaczyna się od C:\inetpub\wwwroot\cgi-bin\ i dopiero wtedy jej wykonanie. Chociaż początkowo wydaje się, że plik C:\inetpub\wwwroot\cgi-bin\...\...\...\Windows\System32\cmd.exe znajduje się w katalogu cgi, wykorzystuje specyfikator ścieżki .. do przeglądania kopii zapasowej hierarchii katalogów w celu wykonania pliku poza cgi-bin . Zezwolenie cmd.exe byłoby błędem spowodowanym niepowodzeniem kanonizacji nazwy pliku do najprostszej reprezentacji, C:\Windows\System32\cmd.exe , i jest nazywane luką w zabezpieczeniach związaną z przeglądaniem katalogów . Po kanonizacji ścieżki jasne jest, że plik nie powinien być wykonywany.

Unikod

W Unicode wiele liter akcentowanych można przedstawić na więcej niż jeden sposób. Na przykład, é może być reprezentowane w Unicode jako znak Unicode U+0065 (ŁACIŃSKA MAŁA LITERA E), po którym następuje znak U+0301 (ŁĄCZENIE AKCENTU OSTRYCH), ale może być również reprezentowane jako złożony znak U+00E9 (ŁACIŃSKA MAŁA LITERA E Z OSTRYM). To sprawia, że ​​porównywanie łańcuchów jest bardziej skomplikowane, ponieważ należy wziąć pod uwagę każdą możliwą reprezentację łańcucha zawierającego takie glify. Aby sobie z tym poradzić, Unicode zapewnia mechanizm równoważności kanonicznej . W tym kontekście kanonizacja to normalizacja Unicode .

Kodowanie o zmiennej szerokości w standardzie Unicode, w szczególności UTF-8 , może w niektórych sytuacjach powodować dodatkową potrzebę kanonizacji. Mianowicie, zgodnie ze standardem, w UTF-8 istnieje tylko jedna poprawna sekwencja bajtów dla dowolnego znaku Unicode, ale niektóre sekwencje bajtów są nieprawidłowe, tj. nie można ich uzyskać poprzez zakodowanie dowolnego ciągu znaków Unicode w UTF-8. Niektóre niechlujne implementacje dekodera mogą akceptować nieprawidłowe sekwencje bajtów jako dane wejściowe i generować prawidłowy znak Unicode jako dane wyjściowe dla takiej sekwencji. Jeśli ktoś używa takiego dekodera, niektóre znaki Unicode mają faktycznie więcej niż jedną odpowiednią sekwencję bajtów: prawidłową i niektóre nieprawidłowe. Może to prowadzić do problemów z bezpieczeństwem podobnych do opisanych w poprzedniej sekcji. Dlatego jeśli ktoś chce zastosować jakiś filtr (np. wyrażenie regularne napisane w UTF-8) do ciągów UTF-8, które później zostaną przekazane do dekodera dopuszczającego nieprawidłowe sekwencje bajtów, powinien kanonizować ciągi przed przekazaniem ich do filtra . W tym kontekście kanonizacja to proces tłumaczenia każdego znaku ciągu na jego pojedynczą prawidłową sekwencję bajtów. Alternatywą dla kanonizacji jest odrzucanie wszelkich łańcuchów zawierających nieprawidłowe sekwencje bajtów.

Adres URL

Kanoniczny adres URL to adres URL służący do definiowania pojedynczego źródła prawdy dla zduplikowanych treści .

Użyj przez Google

Kanoniczny adres URL to adres URL strony, która według Google jest najbardziej reprezentatywna ze zbioru zduplikowanych stron w Twojej witrynie. Na przykład, jeśli masz adresy URL tej samej strony (na przykład https://example.com/?dress=1234 i https://example.com/dresses/1234 ), Google wybiera jeden jako kanoniczny. Pamiętaj, że strony nie muszą być absolutnie identyczne; drobne zmiany w sortowaniu lub filtrowaniu stron z listami nie powodują, że strona jest unikatowa (np. sortowanie według ceny lub filtrowanie według koloru pozycji).

Kanoniczny może znajdować się w innej domenie niż duplikat.

Internet

Za pomocą kanonicznych adresów URL wyszukiwarka wie, który link powinien znaleźć się w wyniku zapytania.

Element linku kanonicznego można wykorzystać do zdefiniowania kanonicznego adresu URL.

Intranet

W intranetach dominuje ręczne wyszukiwanie informacji. W takim przypadku kanoniczne adresy URL można również zdefiniować w formie nieprzeznaczonej do odczytu maszynowego. Na przykład w poradniku .

różne

Kanoniczne adresy URL to zwykle adresy URL używane do akcji udostępniania.

Ponieważ kanoniczny adres URL jest używany w wynikach wyszukiwania wyszukiwarek, w większości przypadków jest to strona docelowa .

Wyszukiwarki i SEO

W wyszukiwarkach internetowych i optymalizacji pod kątem wyszukiwarek (SEO) kanonizacja adresów URL dotyczy treści internetowych, które mają więcej niż jeden możliwy adres URL. Posiadanie wielu adresów URL dla tej samej treści internetowej może powodować problemy dla wyszukiwarek — szczególnie przy określaniu, który adres URL powinien być wyświetlany w wynikach wyszukiwania. Większość wyszukiwarek obsługuje element linku kanonicznego jako wskazówkę, który adres URL powinien być traktowany jako prawdziwa wersja. Jak wskazał John Mueller z Google, posiadanie innych dyrektyw na stronie, takich jak robots noindex, może dawać wyszukiwarkom sprzeczne sygnały dotyczące tego, jak radzić sobie z kanonizacją

Przykład:

Wszystkie te adresy URL wskazują stronę główną Wikipedii, ale wyszukiwarka uzna tylko jeden z nich za kanoniczną formę adresu URL.

XML

Kanoniczny dokument XML jest z definicji dokumentem XML w kanonicznej formie XML, zdefiniowanej przez specyfikację The Canonical XML . Krótko mówiąc, kanonizacja usuwa spacje w znacznikach, używa określonego kodowania znaków, sortuje odniesienia do przestrzeni nazw i eliminuje te zbędne, usuwa deklaracje XML i DOCTYPE oraz przekształca względne identyfikatory URI w bezwzględne identyfikatory URI.

Prostym przykładem mogą być następujące dwa fragmenty kodu XML:

  1. <node1 x='1' a="1" a="2"><i>Data</i> <b>Dane</b></node1    ><node2> <i>Data</i> <b>Dane</b></node2>
  2. <node1 a="2" x="1"><i>Data</i> <b>Dane</b></node1><node2> <i>Data</i> <b>Dane</b></node2>

Pierwszy przykład zawiera dodatkowe spacje w tagu zamykającym pierwszego węzła. W drugim przykładzie, który został kanonizowany, usunięto te spacje. Zauważ, że podczas kanonizacji W3C usuwane są tylko spacje w tagach, a nie między tagami.

Pełne podsumowanie zmian kanonizacyjnych znajduje się poniżej:

  • Dokument jest zakodowany w UTF-8
  • Podziały wierszy znormalizowane do #xA na wejściu przed analizą
  • Wartości atrybutów są normalizowane, jakby przez procesor sprawdzający poprawność
  • Odwołania do znaków i analizowanych jednostek są zastępowane
  • Sekcje CDATA są zastępowane zawartością ich znaków
  • Deklaracja XML i deklaracja typu dokumentu są usuwane
  • Puste elementy są konwertowane na pary tagów początek-koniec
  • Białe znaki poza elementem dokumentu oraz w znacznikach początkowym i końcowym są znormalizowane
  • Wszystkie spacje w treści znakowej są zachowywane (z wyjątkiem znaków usuniętych podczas normalizacji wysuwu wiersza)
  • Ograniczniki wartości atrybutów są ujęte w cudzysłowy (podwójne cudzysłowy)
  • Znaki specjalne w wartościach atrybutów i treści znaków są zastępowane odniesieniami do znaków
  • Z każdego elementu usuwane są zbędne deklaracje przestrzeni nazw
  • Domyślne atrybuty są dodawane do każdego elementu
  • Wykonywana jest naprawa atrybutów xml:base
  • Porządek leksykograficzny jest nałożony na deklaracje przestrzeni nazw i atrybuty każdego elementu

Lingwistyka komputerowa

W morfologii i leksykografii lemat jest kanoniczną formą zestawu słów . Na przykład w języku angielskim run , run , run i running są formami tego samego leksemu , więc możemy wybrać jedną z nich ; były. run , aby reprezentować wszystkie formy. Leksykalne bazy danych, takie jak Unitex, używają tego rodzaju reprezentacji.

Lematyzacja to proces przekształcania słowa w jego formę kanoniczną .

Zobacz też

Linki zewnętrzne