@startuml class Resource { "id" : "string" "name" : "string" "short description" : "string" "description" : "string" "logo" : "string" "creator" : "peer_id" "usage_restrictions" : "string" } class StoragePartnerResource { "namespace" : "string" "sizing_indicator" : "string" "peer_group"="string" } class ProcessingPartnerResource { "namespace" : "string" "sizing_indicator" : "string" "peer_group"="string" } class ComputeUnitPartnerResource { "namespace" : "string" "sizing_indicator" : "string" "peer_group"="string" } class DataPartnerResource { "namespace" : "string" "sizing_indicator" : "string" "peer_group"="string" } class ResourceInstance { "location" : "geo coord" "country" : "string" "url" : "string" } class StorageInstance { } class DataInstance { } class ComputeUnitInstance { "cpus": "gpus": "ram": "security_level" : "string" "power_source" : "string" } class cpu { "model" : "string" "cores" : "int" "frequency" : "float" "architecture" : "string" } class gpu { "model" : "string" "memory" : "float" } class ram { "size" : "int" } class bandwidth { "up" : "float" "down" : "float" } class ProcessingInstance { } class Owner { "name" : "string" "logo" : "string" } class DataPricingStrategy { "unlimited" "subscription" "pay per use" } class DataPricing { "price" : "float" "price_per_gb" : "float" "price_per_request" : "float" "price_per_api_call" : "float" "price_per_data_transfer" : "float" "price_per_data_download" : "float" } class ProcessingPricing { "price" : "float" "price_per_request" : "float" "price_per_api_call" : "float" "price_per_data_transfer" : "float" "price_per_data_processing" : "float" "price_per_data_storage" : "float" "price_per_data_download" : "float" } class ComputeUnitPricingStrategy { "overflow" : "booked, allowed, garanted" } class ComputeUnitPricing { "cpu_price" : "float" "gpu_price" : "float" "ram_price" : "float" "refund" : "bool" } class StoragePricing { "price" : "float" "price_per_request" : "float" "price_per_api_call" : "float" "price_per_data_transfer" : "float" "price_per_data_processing" : "float" "price_per_data_storage" : "float" "price_per_data_download" : "float" } class Data { "personal_data" : "bool" "anonymized_personal_data" : "bool" "type" : "string" "license" : "string" "open_data" : "bool" "quality" : "string" "static" : bool "update_period" : "string" } class ComputeUnit { "type" : "string" "infrastructure" : "string" "architecture" : "string" "investors" : "string" } class Processing { "type" : "string" "license" : "string" "open_source" : "bool" "maturity" : "string" "service" : "bool" } class Container { "image" : "string" "command" : "string" "args" : "string" "env" : "string" "volumes" : "string" } Processing "0" *-- "1" Container Container "0" *-- "*" Expose class Expose { Port:int Reverse: "string" PAT:int } class ProcessingUsage { "hypothesis" : "string" "cpu": "gpu": "ram": "storage": "float" "scalingmodel": "string" } class Storage { "type" : "string" "security_level" : "string" "investors" : "string" "support" : "string" } Resource -- Owner Resource <|- Data Resource <|- ComputeUnit Resource <|- Processing Resource <|- Storage Resource <|- Workflow StoragePartnerResource -- StoragePricingStrategy ProcessingPartnerResource -- ProcessingPricingStrategy ComputeUnitPartnerResource -- ComputeUnitPricingStrategy DataPartnerResource -- DataPricingStrategy StorageInstance "1" *-- "*" StoragePartnerResource DataInstance "1" *-- "*" DataPartnerResource ProcessingInstance "1" *-- "*" ProcessingPartnerResource ComputeUnitInstance "1" *-- "*" ComputeUnitPartnerResource DataPricingStrategy <|-- DataPricing ProcessingPricingStrategy <|-- ProcessingPricing ComputeUnitPricingStrategy <|-- ComputeUnitPricing StoragePricingStrategy <|-- StoragePricing ResourceInstance <|-- StorageInstance ResourceInstance <|-- DataInstance ResourceInstance <|-- ComputeUnitInstance ResourceInstance <|-- ProcessingInstance Storage "1" *-- "*" StorageInstance Processing "1" *-- "*" ProcessingInstance ComputeUnit "1" *-- "*" ComputeUnitInstance Data "1" *-- "*" DataInstance @enduml