Oversikt
Dokumentasjon for taksonomisystemet
Innholdsfortegnelse
- Oversikt
- Kjerneprinsiper
- Kategorihierarki
- Egenskaper og typer
- Egenskapsarv
- URI-struktur og navnerom
- RDF-S-integrasjon
- Turtle-eksport
- API-endepunkter
- Eksempler
Oversikt
Taksonomisystemet gir et hierarkisk kategoriseringsrammeverk som kombinerer globale RDF-S (Resource Description Framework Schema) kategorier med organisasjonsspesifikke tilpasninger. Dette muliggjør standardisert produkt- og tjenesteklassifisering samtidig som det gir organisatorisk fleksibilitet.
Hovedfunksjoner
- Hierarkisk struktur med forelder-barn-relasjoner
- Egenskapsarv med mulighet for overstyring
- RDF-S-kompatibilitet for semantisk web-kompatibilitet
- Multi-tenant-støtte med organisasjonsspesifikke kategorier
- Turtle RDF-eksport for interoperabilitet
Kjerneprinsiper
1. Dobbeltlags-arkitektur
Systemet består av to lag:
- Globalt lag (RDF-S): Standardiserte kategorier tilgjengelig for alle organisasjoner
- Organisasjonslag: Organisasjonsspesifikke kategorier som utvider det globale laget
2. Kategorityper
| Type | Omfang | URI-mønster | Foranderlighet |
|---|---|---|---|
| Global (RDF-S) | Alle organisasjoner | http://taxonomy.sirktek.no/{categoryName} | Skrivebeskyttet |
| Organisasjonsspesifikk | Enkeltorganisasjon | http://taxonomy.sirktek.no/{orgId}#{categoryName} | Full CRUD |
Kategorihierarki
Strukturregler
- Enkel forelder-regel: Hver kategori har nøyaktig én forelder (unntatt rotkategorier)
- Ubegrenset dybde: Ingen begrensninger på hierarkidybde
- Krysslag-kobling: Organisasjonskategorier kan ha RDF-S-foreldre
- Ingen sirkulære referanser: Forelder-barn-relasjoner må være asykliske
Hierarkieksempel
Møbler (global)
├── Stol (global)
│ ├── Kontorstol (org: acme-corp)
│ │ ├── Ergonomisk stol (org: acme-corp)
│ │ └── Lederkontorstol (org: acme-corp)
│ └── Spisestol (org: acme-corp)
└── Bord (global)
├── Spisebord (org: acme-corp)
└── Konferansebord (org: acme-corp)Egenskaper og typer
Egenskapsstruktur
Hver kategori kan ha flere egenskaper med følgende attributter:
interface CategoryProperty {
name: string; // Egenskapsidentifikator
value: string; // Egenskapsverdi
type: PropertyType; // Datatype
inherited: boolean; // Om arvet fra forelder
}Egenskapstyper
| Type | Beskrivelse | Eksempelverdi | Validering |
|---|---|---|---|
STRING | Tekstverdi | "Premium skinn" | Maks 2000 tegn |
INTEGER | Heltall | "42" | Positive heltall |
DECIMAL | Desimaltall | "19.99" | Positive desimaler |
DECIMAL_KG | Vekt i kg | "25.5" | Positive desimaler |
DECIMAL_CM | Lengde i cm | "180.0" | Positive desimaler |
DECIMAL_M2 | Areal i m² | "2.5" | Positive desimaler |
DECIMAL_M3 | Volum i m³ | "0.8" | Positive desimaler |
BOOLEAN | Sant/Usant | "true" | true eller false |
URL | Nettadresse | "https://example.com" | Gyldig URL |
EMAIL_FORM | E-postadresse | "[email protected]" | Gyldig e-post |
INTEGER_SCALE_1TO5 | Vurderingsskala | "4" | 1-5 område |
EMISSION | CO2-utslipp | "CO2;125.5;kg;EPD;A1-A3" | Spesielt format |
Format for utslippsegenskap
CO2;<mengde>;<enhet>;<sertifisering>;<fase>Eksempel: "CO2;125.5;kg;EPD;A1-A3"
- Mengde: 125.5
- Enhet: kg
- Sertifisering: EPD (Environmental Product Declaration)
- Fase: A1-A3 (Produksjonsfase)
Egenskapsarv
Arveregler
- Automatisk propagering: Egenskaper flyter fra foreldre- til barnekategorier
- Akkumulering: Barnekategorier arver alle forfedres egenskaper
- Overstyringsfunksjon: Barn kan overstyre arvede egenskapsverdier
- Navnebasert matching: Egenskaper med samme navn betraktes som samme
- Typekonsistens: Overstyrte egenskaper bør beholde samme type
Arvemekanisme
Når en barnekategori definerer en egenskap med samme navn som en arvet egenskap:
- Barnets verdi får forrang
- Den arvede verdien maskeres (slettes ikke)
- Videre etterkommere arver den overstyrte verdien
- Egenskapstypen bør forbli konsistent
Overstyringseksempel
Møbler:
egenskaper:
materiale: "tre" # Original
garanti: "2 år" # Original
Kontorstol (barn av Møbler):
arvet:
garanti: "2 år" # Beholdt fra forelder
overstyrt:
materiale: "plast" # Endret fra "tre"
egne:
hjul: "true" # Ny egenskapURI-struktur og navnerom
URI-mønstre
Globale kategorier (RDF-S)
http://taxonomy.sirktek.no/{categoryName}Eksempel: http://taxonomy.sirktek.no/furniture
Organisasjonsspesifikke kategorier
http://taxonomy.sirktek.no/{organizationId}#{categoryName}Eksempel: http://taxonomy.sirktek.no/acme-corp#OfficeChair
Navneromsdefinisjoner
| Prefiks | Navnerom | Bruk |
|---|---|---|
taxonomy: | http://taxonomy.sirktek.no/ | Basis taksonominavnerom |
org: | http://taxonomy.sirktek.no/{orgId}# | Organisasjonsspesifikt navnerom |
rdfs: | http://www.w3.org/2000/01/rdf-schema# | RDF Schema-vokabular |
rdf: | http://www.w3.org/1999/02/22-rdf-syntax-ns# | RDF-syntaks |
RDF-S-integrasjon
RDF Schema-kompatibilitet
Taksonomisystemet følger RDF-S-standarder for semantisk web-kompatibilitet:
- Kategorier som klasser: Hver kategori er en
rdfs:Class - Hierarkiske relasjoner: Forelder-barn via
rdfs:subClassOf - Etiketter og beskrivelser: Bruker
rdfs:labelogrdfs:comment - Egenskapsdefinisjoner: Tilpassede egenskaper i taksonominavnerom
RDF-S-kategoristruktur
<http://taxonomy.sirktek.no/furniture> a rdfs:Class ;
rdfs:label "Møbler" ;
rdfs:comment "Basiskategori for alle møbelelementer" .
<http://taxonomy.sirktek.no/chair> a rdfs:Class ;
rdfs:label "Stol" ;
rdfs:comment "Sittemøbler med ryggstøtte" ;
rdfs:subClassOf <http://taxonomy.sirktek.no/furniture> .Turtle-eksport
Eksportformat
Systemet eksporterer komplett taksonomi i W3C Turtle (Terse RDF Triple Language) format:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix taxonomy: <http://taxonomy.sirktek.no/> .
@prefix org: <http://taxonomy.sirktek.no/acme-corp#> .
# Global RDF-S-kategori
<http://taxonomy.sirktek.no/furniture> a rdfs:Class ;
rdfs:label "Møbler" ;
rdfs:comment "Alle møbelprodukter" .
# Organisasjonsspesifikk kategori
<http://taxonomy.sirktek.no/acme-corp#OfficeChair> a rdfs:Class ;
rdfs:label "Kontorstol" ;
rdfs:comment "Stoler designet for kontorbruk" ;
rdfs:subClassOf <http://taxonomy.sirktek.no/chair> ;
taxonomy:material "plast" ;
taxonomy:adjustable "true"^^taxonomy:BOOLEAN ;
taxonomy:warranty "3"^^taxonomy:INTEGER ;
taxonomy:weight "12.5"^^taxonomy:DECIMAL_KG .API-endepunkter
Kategorihierarki
GET /{org}/categoryReturnerer komplett taksonomihierarki i JSON-format
Turtle-eksport
GET /{org}/category/turtleReturnerer komplett taksonomi i Turtle RDF-format
Response Content-Type: text/turtle
Kategoristyring
GET /{org}/category/{parentCategory} # List underkategorier
POST /{org}/category/{parentCategory} # Opprett underkategori
GET /{org}/category/{parentCategory}/{id} # Hent kategoridetaljr
PUT /{org}/category/{parentCategory}/{id} # Oppdater kategori
DELETE /{org}/category/{parentCategory}/{id} # Slett kategoriEksempler
Komplett taksonomieksemel
Produkt (Global)
├── Møbler (Global)
│ ├── Stol (Global)
│ │ ├── Kontorstol (ACME Corp)
│ │ │ ├── Ergonomisk stol (ACME Corp)
│ │ │ └── Lederkontorstol (ACME Corp)
│ │ └── Spisestol (ACME Corp)
│ └── Bord (Global)
│ ├── Spisebord (ACME Corp)
│ └── Konferansebord (ACME Corp)
└── Elektronikk (Global)
├── Datamaskin (Global)
└── Telefon (Global)Egenskapsarveksempel
Stol (Global):
egenskaper:
materiale: "tre"
resirkulerbar: "true"
garanti_år: "2"
Kontorstol (ACME Corp):
arvet_fra_Stol:
resirkulerbar: "true" # Beholdt som-er
overstyrt:
materiale: "plast" # Endret fra "tre"
garanti_år: "5" # Utvidet fra "2"
egne_egenskaper:
hjul: "true"
justerbar_høyde: "true"
armlener: "true"
Ergonomisk stol (ACME Corp):
arvet_fra_Kontorstol:
resirkulerbar: "true" # Fra Stol
materiale: "plast" # Fra Kontorstol
garanti_år: "5" # Fra Kontorstol
hjul: "true" # Fra Kontorstol
justerbar_høyde: "true" # Fra Kontorstol
armlener: "true" # Fra Kontorstol
overstyrt:
materiale: "mesh" # Endret fra "plast"
egne_egenskaper:
lendestøtte: "justerbar"
hodestøtte: "true"Beste praksis
Kategoridesign
- Bruk meningsfulle navn: Klare, beskrivende kategorinavn
- Oppretthold konsistens: Lignende kategorier bør ha lignende egenskaper
- Planlegg hierarki: Design forelder-barn-relasjoner før implementering
- Dokument egenskaper: Gi klare beskrivelser for tilpassede egenskaper
Egenskapsstyring
- Typekonsistens: Hold egenskapstyper konsistente gjennom hierarkiet
- Minimer overstyringer: Overstyr kun når nødvendig
- Bruk standardtyper: Foretrekk standard egenskapstyper over tilpassede strenger
- Valider utslipp: Sørg for at utslippsdata følger påkrevd format
Integrasjon
- Cache URI-er: URI-generering kan være dyr, bruk caching
- Batch-operasjoner: Last relaterte kategorier sammen
- Eksporter regelmessig: Generer Turtle-eksporter for backup/integrasjon
- Versjonskontroll: Spor taksonimiendringer over tid
Sikkerhetshensyn
Tilgangskontroll
- VIEW-tillatelse: Les taksonomistruktur
- ADMIN-tillatelse: Opprett, oppdater, slett kategorier
- Organisasjonsisolasjon: Brukere ser kun sin organisasjons kategorier pluss globale
Datavalidering
- Kategorinavn: Alfanumerisk med mellomrom, punktum, understrek, bindestreker
- Egenskapsnavn: Kun alfanumerisk med understrek
- Maksimale lengder håndheves (navn: 200, beskrivelser: 1000, verdier: 2000)
- SQL-injeksjonsforskning gjennom parametriserte spørringer
- XSS-forebygging gjennom riktig escaping
Ytelsesoptimalisering
Cachingstrategi
- URI-genereringscache: Forhåndsberegnede URI-er for kategorier
- Taksonomitrecache: Cachet hierarkistruktur
- Egenskapsarvcache: Forhåndsberegnede arvede egenskaper
Spørringsoptimalisering
- Fetch Joins: Bruk JPA fetch joins for å unngå N+1-spørringer
- Batch-lasting: Last alle kategorier i enkeltspørring
- Indekserte kolonner: Databaseindekser på ofte spurt felt
Konklusjon
Taksonomisystemet gir et robust, standardkompatibelt rammeverk for hierarkisk kategorisering med kraftige arve- og tilpasningsfunksjoner. Ved å kombinere globale RDF-S-kategorier med organisasjonsspesifikke utvidelser muliggjør det både standardisering og fleksibilitet i produkt- og tjenesteklassifisering.