Kelvin Resource Name Registry
Overview
The Kelvin Resource Name (KRN) Registry serves as the centralized system for uniquely identifying various types of resources within the Kelvin Platform. It is conceptually similar to Uniform Resource Names (URN) or Amazon Resource Names (ARN), tailored for Kelvin's use.
Specification
A KRN must conform to the following criteria:
- Format: A KRN should adhere to a specific URN-based format that starts with
krn:followed by a Namespace Identifier (NID) and a Namespace-Specific String (NSS), separated by colons. - Example for Data Streams:
krn:ad:air-conditioner/temperature - Example for Workloads:
krn:wl:my-node/modbus-bridge-1 - Validity: It must be a valid URN scheme URI, which means it has to contain at least a NID and an NSS.
-
Syntax: The KRN should follow a subset of the URN's ABNF syntax rules, as outlined below:
* Documentation: All NIDs used in KRN must be documented, along with the NSS specification.makefileCopy codekrn = "krn" ":" NID ":" NSS NID = (alphanum) 0*30(ldh) (alphanum) NSS = pchar *(pchar / "/")
Definitions
- Asset Custom Action (
aca) - Action (
action) - Asset Data Stream (
ad) - Asset Parameter (
ap) - App (
app) - App Parameter (
app-parameter) - App Version (
appversion) - Asset (
asset) - Asset Type (
asset-type) - Data Stream(
datastream) - Data Quality - Asset Data Stream (
dqad) - Data Quality - Asset (
dqasset) - Job (
job) - Recommendation (
recommendation) - Schedule (
schedule) - Service Account (
srv-acc) - System (
system) - User (
user) - Workload (
wl) - Workload App Version(
wlappv)
Asset Custom Action
aca-krn = "krn" ":" "aca" ":" asset "/" action
asset = NAME
action = NAME-V2
Examples
krn:aca:air-conditioner-1/email
krn:aca:beam-pump/Webhook
Action
action-krn = "krn" ":" "action" ":" email
action = NAME-V2
Examples
krn:action:email
krn:action:Webhook
Asset Data Stream
ad-krn = "krn" ":" "ad" ":" asset "/" datastream
asset = NAME
datastream = NAME
Examples
krn:ad:air-conditioner-1/temp-setpoint
krn:ad:beam-pump/casing.temperature
krn:ad:centrifugal-pump-02/oee
krn:ad:centrifugal-pump-02/failure_quotient
Asset Parameter
ap-krn = "krn" ":" "ap" ":" asset "/" parameter
asset = NAME
parameter = NAME
Examples
krn:ap:air-conditioner-1/closed_loop
App
app-krn = "krn" ":" "app" ":" app
app = NAME
Examples
krn:app:smart-pcp
krn:app:pvc
App Parameter
app-parameter-krn = "krn" ":" "app-paramter" ":" app ":" parameter
app = NAME
parameter = NAME
Examples
krn:app-parameter:my-app:my-param
krn:app-parameter:smart-pcp:closed_loop
App Version
appversion-krn = "krn" ":" "appversion" ":" app "/" version
app = NAME
version = NAME
Examples
krn:appversion:smart-pcp/2.0.0
krn:appversion:pvc/3.0.1
Asset
asset-krn = "krn" ":" "asset" ":" asset
asset = NAME
Examples
krn:asset:air-conditioner-1
krn:asset:beam-pump
Asset Type
asset-type-krn = "krn" ":" "asset-type" "/" asset-type
asset-type = NAME
Examples
krn:asset-type/beam-pump
Data Stream
datastream-krn = "krn" ":" "datastream" ":" datastream
datastream = NAME
Examples
krn:datastream:temp-setpoint
krn:datastream:casing.temperature
krn:datastream:oee
Data Quality - Asset Data Stream
dqad-krn = "krn" ":" "dqad" ":" data-quality ":" asset "/" datastream
asset = NAME
datastream = NAME
data-quality = NAME
Examples
krn:dqad:kelvin_timestamp_anomaly:pcp_01/gas_flow
krn:dqad:kelvin_out_of_range_detection:pcp_01/gas_flow
Data Quality - Asset
dqasset-krn = "krn" ":" "dqasset" ":" data-quality ":" asset
asset = NAME
data-quality = NAME
Examples
krn:dqasset:asset_score:pcp01
Job
job-krn = "krn" ":" "job" ":" job "/" job-run-id
job = NAME
job-run-id = 1*(DIGIT / ALPHA / "_" / "-")
Examples
krn:job:parameters-schedule-worker/1257897347822083
Recommendation
recommendation-krn = "krn" ":" "recommendation" ":" recommendation-id
recommendation-id = UUID
Examples
krn:recommendation:86a425b4-b43f-4989-a38f-b18f6b3d1ec7
Schedule
schedule-krn = "krn" ":" "schedule" ":" schedule
schedule = USERNAME
Examples
krn:schedule:6830a7d3-bcf3-4a64-8126-eaaeeca86676
Service Account
srv-acc-krn = "krn" ":" "srv-acc" ":" account-name
account-name = USERNAME
Examples
krn:srv-acc:node-client-my-edge-cluster
System
system-krn = "krn" ":" "system" ":" system_name
system_name = NAME-V2
Examples
krn:system:kelvin
User
user-krn = "krn" ":" "user" ":" user
user = USERNAME
Examples
krn:user:me@example.com
Workload
wl-krn = "krn" ":" "wl" ":" cluster "/" workload
cluster = DNS-SAFE
workload = DNS-SAFE
Examples
krn:wl:my-node/temp-adjuster-1
Workload App Version
wlappv-krn = "krn" ":" "wlappv" ":" wl-krn ":" appversion-krn
Examples
krn:wlappv:cluster_name/workload_name:app_name/app_version
krn:wlappv:my-node/pvc-r312:pvc/1.0.0
Common Components
| Component | Regex |
|---|---|
| DNS-SAFE-NAME | ^[a-z]([-a-z0-9]*[a-z0-9])?$ |
| NAME | ^[a-z0-9]([-_.a-z0-9]*[a-z0-9])?$ |
| NAME-V2 | ^[a-zA-Z0-9]([-_ .a-zA-Z0-9]*[a-zA-Z0-9])?$ |
| SEMVER | See Semantic Versioning |
| USERNAME | ([-a-zA-Z0-9()+,.:=@;$_!*'&~\/]|%[0-9a-f]{2})+ |
| UUID | ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ |