diff --git a/config/config.yaml b/config/config.yaml index bae2265..27a563d 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -28,7 +28,7 @@ vm image: copyright owner: "The FreeBSD Project" resource policy: DEFAULT license: - - GPL-3.0 + - GPL-3.0-only - LGPL-2.0 Gentoo Linux: copyright owner: "Gentoo Foundation, Inc." @@ -39,17 +39,17 @@ vm image: copyright owner: "Mandriva Linux" resource policy: DEFAULT license: - - GPL-3.0 + - GPL-3.0-only Mandriva Linux: copyright owner: "Mandriva S. A." resource policy: DEFAULT license: - - GPL-3.0 + - GPL-3.0-only Mandriva Enterprise Server: copyright owner: "Mandriva S. A." resource policy: DEFAULT license: - - GPL-3.0 + - GPL-3.0-only MS-DOS: copyright owner: "Microsoft Corporation" resource policy: DEFAULT @@ -104,4 +104,19 @@ vm image: copyright owner: "Microsoft Corporation" resource policy: DEFAULT license: - - https://www.microsoft.com/licensing \ No newline at end of file + - https://www.microsoft.com/licensing + CirrOS: + copyright owner: "Canonical Ltd." + resource policy: DEFAULT + license: + - GPL-2.0-only + AlmaLinux: + copyright owner: "Canonical Ltd." + resource policy: DEFAULT + license: + - https://almalinux.org/p/the-almalinux-os-licensing-policy/ + Debian 11: + copyright owner: "AlmaLinux OS Foundation" + resource policy: DEFAULT + license: + - https://www.abc.org \ No newline at end of file diff --git a/generator/cli.py b/generator/cli.py index b363ee3..e691f57 100644 --- a/generator/cli.py +++ b/generator/cli.py @@ -1,6 +1,7 @@ import click import openstack as os import sys +import yaml from generator.discovery.openstack.opentack_discovery import OsCloud @@ -11,9 +12,10 @@ def cli(): @click.command() +@click.option('--config', default='../config/config.yaml', help='Path to Configuration file for SCS GX Credential Generator.') @click.option('--timeout', default=12, help='Timeout for API calls in seconds') @click.argument('cloud') -def openstack(cloud, timeout): +def openstack(cloud, timeout, config): """Generates Gaia-X Credentials for openstack cloud CLOUD. CLOUD MUST refer to a name defined in Openstack's configuration file clouds.yaml.""" @@ -28,12 +30,9 @@ def openstack(cloud, timeout): conn.authorize() # generate Gaia-X Credentials - os_cloud = OsCloud(conn) - props = os_cloud.discover_properties() - - - - + with open(config, "r") as config_file: + os_cloud = OsCloud(conn, yaml.safe_load(config_file)) + props = os_cloud.discover_properties() @click.command() diff --git a/generator/common/const.py b/generator/common/const.py index fc0af98..bfb6edc 100644 --- a/generator/common/const.py +++ b/generator/common/const.py @@ -1,4 +1,34 @@ DEFAULT_RESOURCE_POLICY = "default: allow intent" -UNIT_MB = "https://qudt.org/vocab:unit/MegaBYTE" -UNIT_GB = "https://qudt.org/vocab:unit/GigaBYTE" \ No newline at end of file +UNIT_MB = "https://qudt.org/vocab/unit/MegaBYTE" +UNIT_GB = "https://qudt.org/vocab/unit/GigaBYTE" + + +CONFIG_VM_IMAGE = "vm image" +CONFIG_RESOURCE_POLICY = "resource policy" +CONFIG_LICENSE = "license" +CONFIG_COPYRIGHT = "copyright owner" + +CONFIG_OS_ALP = "Alpine Linux" +CONFIG_OS_ARCH = "Arch Linux" +CONFIG_OS_CENTOS = "CentOS Linux" +CONFIG_OS_DEBIAN = "Debian" +CONFIG_OS_FEDORA = "Fedora" +CONFIG_OS_FREEBSD = "FreeBSD" +CONFIG_OS_GENTOO = "Gentoo Linux" +CONFIG_OS_MANDRAKE = "Mandrake Linux" +CONFIG_OS_MANDRIVA = "Mandriva Linux" +CONFIG_OS_MES = "Mandriva Enterprise Server" +CONFIG_OS_MSDOS = "MS-DOS" +CONFIG_OS_NETBSD = "NetBSD" +CONFIG_OS_NOVELL = "Novell Netware" +CONFIG_OS_OPENBSD = "OpenBSD" +CONFIG_OS_SOLARIS = "OpenSolaris" +CONFIG_OS_OPEN_SUSE = "openSUSE" +CONFIG_OS_ROCKY = "Rocky Linux" +CONFIG_OS_RHEL = "Red Hat Enterprise Linux" +CONFIG_OS_SLED = "SUSE Linux Enterprise Desktop" +CONFIG_OS_UBUNTU = "Ubuntu" +CONFIG_OS_WINDOWS = "Microsoft Windows" +CONFIG_OS_CIRROS = "CirrOS" +CONFIG_OS_ALMALINUX = "AlmaLinux" \ No newline at end of file diff --git a/generator/common/gaia-x.shacl b/generator/common/gaia-x.shacl new file mode 100644 index 0000000..e13e0ae --- /dev/null +++ b/generator/common/gaia-x.shacl @@ -0,0 +1,2275 @@ +@prefix gx: . +@prefix rdf: . +@prefix sh: . +@prefix xsd: . + + a sh:NodeShape ; + sh:closed false ; + sh:description "Abstract parent class for all physical quantities, such as frequency, power or length." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:float ; + sh:description "Value of physical quantity. See https://qudt.org/schema/qudt/value" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:minInclusive 0 ; + sh:order 0 ; + sh:path ], + [ sh:datatype xsd:string ; + sh:description "Unit of physical quantity. See https://qudt.org/schema/qudt/Unit" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 1 ; + sh:path ] ; + sh:targetClass . + +gx:CodeArtifact a sh:NodeShape ; + sh:closed false ; + sh:description "A piece of software that can be executed by a Compute service. It is a subclass of SoftwareResource." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Code Artifact" ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 9 ; + sh:path gx:name ], + [ sh:datatype xsd:string ; + sh:description "Version of the software." ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path gx:version ], + [ sh:description "A list of copyright owners either as a free form string or as resolvable link to Gaia-X Credential of participants. A copyright owner is a person or organization that has the right to exploit the resource. Copyright owner does not necessarily refer to the author of the resource, who is a natural person and may differ from copyright owner." ; + sh:minCount 1 ; + sh:name "copyright owned by" ; + sh:or ( [ sh:class gx:LegalPerson ] [ sh:datatype xsd:string ] ) ; + sh:order 5 ; + sh:path gx:copyrightOwnedBy ], + [ sh:datatype xsd:string ; + sh:description "Software specific patch number describing patch level of the software." ; + sh:maxCount 1 ; + sh:name "Patch level" ; + sh:order 3 ; + sh:path gx:patchLevel ], + [ sh:description "A list of SPDX identifiers or URL to document." ; + sh:minCount 1 ; + sh:or ( [ sh:in ( "0BSD" "AAL" "Abstyles" "AdaCore-doc" "Adobe-2006" "Adobe-Glyph" "ADSL" "AFL-1.1" "AFL-1.2" "AFL-2.0" "AFL-2.1" "AFL-3.0" "Afmparse" "AGPL-1.0-only" "AGPL-1.0-or-later" "AGPL-3.0-only" "AGPL-3.0-or-later" "Aladdin" "AMDPLPA" "AML" "AMPAS" "ANTLR-PD" "ANTLR-PD-fallback" "Apache-1.0" "Apache-1.1" "Apache-2.0" "APAFML" "APL-1.0" "App-s2p" "APSL-1.0" "APSL-1.1" "APSL-1.2" "APSL-2.0" "Arphic-1999" "Artistic-1.0" "Artistic-1.0-cl8" "Artistic-1.0-Perl" "Artistic-2.0" "ASWF-Digital-Assets-1.0" "ASWF-Digital-Assets-1.1" "Baekmuk" "Bahyph" "Barr" "Beerware" "Bitstream-Charter" "Bitstream-Vera" "BitTorrent-1.0" "BitTorrent-1.1" "blessing" "BlueOak-1.0.0" "Boehm-GC" "Borceux" "Brian-Gladman-3-Clause" "BSD-1-Clause" "BSD-2-Clause" "BSD-2-Clause-Patent" "BSD-2-Clause-Views" "BSD-3-Clause" "BSD-3-Clause-Attribution" "BSD-3-Clause-Clear" "BSD-3-Clause-LBNL" "BSD-3-Clause-Modification" "BSD-3-Clause-No-Military-License" "BSD-3-Clause-No-Nuclear-License" "BSD-3-Clause-No-Nuclear-License-2014" "BSD-3-Clause-No-Nuclear-Warranty" "BSD-3-Clause-Open-MPI" "BSD-4-Clause" "BSD-4-Clause-Shortened" "BSD-4-Clause-UC" "BSD-4.3RENO" "BSD-4.3TAHOE" "BSD-Advertising-Acknowledgement" "BSD-Attribution-HPND-disclaimer" "BSD-Protection" "BSD-Source-Code" "BSL-1.0" "BUSL-1.1" "bzip2-1.0.6" "C-UDA-1.0" "CAL-1.0" "CAL-1.0-Combined-Work-Exception" "Caldera" "CATOSL-1.1" "CC-BY-1.0" "CC-BY-2.0" "CC-BY-2.5" "CC-BY-2.5-AU" "CC-BY-3.0" "CC-BY-3.0-AT" "CC-BY-3.0-DE" "CC-BY-3.0-IGO" "CC-BY-3.0-NL" "CC-BY-3.0-US" "CC-BY-4.0" "CC-BY-NC-1.0" "CC-BY-NC-2.0" "CC-BY-NC-2.5" "CC-BY-NC-3.0" "CC-BY-NC-3.0-DE" "CC-BY-NC-4.0" "CC-BY-NC-ND-1.0" "CC-BY-NC-ND-2.0" "CC-BY-NC-ND-2.5" "CC-BY-NC-ND-3.0" "CC-BY-NC-ND-3.0-DE" "CC-BY-NC-ND-3.0-IGO" "CC-BY-NC-ND-4.0" "CC-BY-NC-SA-1.0" "CC-BY-NC-SA-2.0" "CC-BY-NC-SA-2.0-DE" "CC-BY-NC-SA-2.0-FR" "CC-BY-NC-SA-2.0-UK" "CC-BY-NC-SA-2.5" "CC-BY-NC-SA-3.0" "CC-BY-NC-SA-3.0-DE" "CC-BY-NC-SA-3.0-IGO" "CC-BY-NC-SA-4.0" "CC-BY-ND-1.0" "CC-BY-ND-2.0" "CC-BY-ND-2.5" "CC-BY-ND-3.0" "CC-BY-ND-3.0-DE" "CC-BY-ND-4.0" "CC-BY-SA-1.0" "CC-BY-SA-2.0" "CC-BY-SA-2.0-UK" "CC-BY-SA-2.1-JP" "CC-BY-SA-2.5" "CC-BY-SA-3.0" "CC-BY-SA-3.0-AT" "CC-BY-SA-3.0-DE" "CC-BY-SA-3.0-IGO" "CC-BY-SA-4.0" "CC-PDDC" "CC0-1.0" "CDDL-1.0" "CDDL-1.1" "CDL-1.0" "CDLA-Permissive-1.0" "CDLA-Permissive-2.0" "CDLA-Sharing-1.0" "CECILL-1.0" "CECILL-1.1" "CECILL-2.0" "CECILL-2.1" "CECILL-B" "CECILL-C" "CERN-OHL-1.1" "CERN-OHL-1.2" "CERN-OHL-P-2.0" "CERN-OHL-S-2.0" "CERN-OHL-W-2.0" "CFITSIO" "checkmk" "ClArtistic" "Clips" "CMU-Mach" "CNRI-Jython" "CNRI-Python" "CNRI-Python-GPL-Compatible" "COIL-1.0" "Community-Spec-1.0" "Condor-1.1" "copyleft-next-0.3.0" "copyleft-next-0.3.1" "Cornell-Lossless-JPEG" "CPAL-1.0" "CPL-1.0" "CPOL-1.02" "Crossword" "CrystalStacker" "CUA-OPL-1.0" "Cube" "curl" "D-FSL-1.0" "diffmark" "DL-DE-BY-2.0" "DOC" "Dotseqn" "DRL-1.0" "DSDP" "dtoa" "dvipdfm" "ECL-1.0" "ECL-2.0" "EFL-1.0" "EFL-2.0" "eGenix" "Elastic-2.0" "Entessa" "EPICS" "EPL-1.0" "EPL-2.0" "ErlPL-1.1" "etalab-2.0" "EUDatagrid" "EUPL-1.0" "EUPL-1.1" "EUPL-1.2" "Eurosym" "Fair" "FDK-AAC" "Frameworx-1.0" "FreeBSD-DOC" "FreeImage" "FSFAP" "FSFUL" "FSFULLR" "FSFULLRWD" "FTL" "GD" "GFDL-1.1-invariants-only" "GFDL-1.1-invariants-or-later" "GFDL-1.1-no-invariants-only" "GFDL-1.1-no-invariants-or-later" "GFDL-1.1-only" "GFDL-1.1-or-later" "GFDL-1.2-invariants-only" "GFDL-1.2-invariants-or-later" "GFDL-1.2-no-invariants-only" "GFDL-1.2-no-invariants-or-later" "GFDL-1.2-only" "GFDL-1.2-or-later" "GFDL-1.3-invariants-only" "GFDL-1.3-invariants-or-later" "GFDL-1.3-no-invariants-only" "GFDL-1.3-no-invariants-or-later" "GFDL-1.3-only" "GFDL-1.3-or-later" "Giftware" "GL2PS" "Glide" "Glulxe" "GLWTPL" "gnuplot" "GPL-1.0-only" "GPL-1.0-or-later" "GPL-2.0-only" "GPL-2.0-or-later" "GPL-3.0-only" "GPL-3.0-or-later" "Graphics-Gems" "gSOAP-1.3b" "HaskellReport" "Hippocratic-2.1" "HP-1986" "HPND" "HPND-export-US" "HPND-Markus-Kuhn" "HPND-sell-variant" "HPND-sell-variant-MIT-disclaimer" "HTMLTIDY" "IBM-pibs" "ICU" "IEC-Code-Components-EULA" "IJG" "IJG-short" "ImageMagick" "iMatix" "Imlib2" "Info-ZIP" "Inner-Net-2.0" "Intel" "Intel-ACPI" "Interbase-1.0" "IPA" "IPL-1.0" "ISC" "Jam" "JasPer-2.0" "JPL-image" "JPNIC" "JSON" "Kazlib" "Knuth-CTAN" "LAL-1.2" "LAL-1.3" "Latex2e" "Latex2e-translated-notice" "Leptonica" "LGPL-2.0-only" "LGPL-2.0-or-later" "LGPL-2.1-only" "LGPL-2.1-or-later" "LGPL-3.0-only" "LGPL-3.0-or-later" "LGPLLR" "Libpng" "libpng-2.0" "libselinux-1.0" "libtiff" "libutil-David-Nugent" "LiLiQ-P-1.1" "LiLiQ-R-1.1" "LiLiQ-Rplus-1.1" "Linux-man-pages-1-para" "Linux-man-pages-copyleft" "Linux-man-pages-copyleft-2-para" "Linux-man-pages-copyleft-var" "Linux-OpenIB" "LOOP" "LPL-1.0" "LPL-1.02" "LPPL-1.0" "LPPL-1.1" "LPPL-1.2" "LPPL-1.3a" "LPPL-1.3c" "LZMA-SDK-9.11-to-9.20" "LZMA-SDK-9.22" "MakeIndex" "Martin-Birgmeier" "metamail" "Minpack" "MirOS" "MIT" "MIT-0" "MIT-advertising" "MIT-CMU" "MIT-enna" "MIT-feh" "MIT-Festival" "MIT-Modern-Variant" "MIT-open-group" "MIT-Wu" "MITNFA" "Motosoto" "mpi-permissive" "mpich2" "MPL-1.0" "MPL-1.1" "MPL-2.0" "MPL-2.0-no-copyleft-exception" "mplus" "MS-LPL" "MS-PL" "MS-RL" "MTLL" "MulanPSL-1.0" "MulanPSL-2.0" "Multics" "Mup" "NAIST-2003" "NASA-1.3" "Naumen" "NBPL-1.0" "NCGL-UK-2.0" "NCSA" "Net-SNMP" "NetCDF" "Newsletr" "NGPL" "NICTA-1.0" "NIST-PD" "NIST-PD-fallback" "NIST-Software" "NLOD-1.0" "NLOD-2.0" "NLPL" "Nokia" "NOSL" "Noweb" "NPL-1.0" "NPL-1.1" "NPOSL-3.0" "NRL" "NTP" "NTP-0" "O-UDA-1.0" "OCCT-PL" "OCLC-2.0" "ODbL-1.0" "ODC-By-1.0" "OFFIS" "OFL-1.0" "OFL-1.0-no-RFN" "OFL-1.0-RFN" "OFL-1.1" "OFL-1.1-no-RFN" "OFL-1.1-RFN" "OGC-1.0" "OGDL-Taiwan-1.0" "OGL-Canada-2.0" "OGL-UK-1.0" "OGL-UK-2.0" "OGL-UK-3.0" "OGTSL" "OLDAP-1.1" "OLDAP-1.2" "OLDAP-1.3" "OLDAP-1.4" "OLDAP-2.0" "OLDAP-2.0.1" "OLDAP-2.1" "OLDAP-2.2" "OLDAP-2.2.1" "OLDAP-2.2.2" "OLDAP-2.3" "OLDAP-2.4" "OLDAP-2.5" "OLDAP-2.6" "OLDAP-2.7" "OLDAP-2.8" "OLFL-1.3" "OML" "OpenPBS-2.3" "OpenSSL" "OPL-1.0" "OPL-UK-3.0" "OPUBL-1.0" "OSET-PL-2.1" "OSL-1.0" "OSL-1.1" "OSL-2.0" "OSL-2.1" "OSL-3.0" "Parity-6.0.0" "Parity-7.0.0" "PDDL-1.0" "PHP-3.0" "PHP-3.01" "Plexus" "PolyForm-Noncommercial-1.0.0" "PolyForm-Small-Business-1.0.0" "PostgreSQL" "PSF-2.0" "psfrag" "psutils" "Python-2.0" "Python-2.0.1" "Qhull" "QPL-1.0" "QPL-1.0-INRIA-2004" "Rdisc" "RHeCos-1.1" "RPL-1.1" "RPL-1.5" "RPSL-1.0" "RSA-MD" "RSCPL" "Ruby" "SAX-PD" "Saxpath" "SCEA" "SchemeReport" "Sendmail" "Sendmail-8.23" "SGI-B-1.0" "SGI-B-1.1" "SGI-B-2.0" "SGP4" "SHL-0.5" "SHL-0.51" "SimPL-2.0" "SISSL" "SISSL-1.2" "Sleepycat" "SMLNJ" "SMPPL" "SNIA" "snprintf" "Spencer-86" "Spencer-94" "Spencer-99" "SPL-1.0" "SSH-OpenSSH" "SSH-short" "SSPL-1.0" "SugarCRM-1.1.3" "SunPro" "SWL" "Symlinks" "TAPR-OHL-1.0" "TCL" "TCP-wrappers" "TermReadKey" "TMate" "TORQUE-1.1" "TOSL" "TPDL" "TPL-1.0" "TTWL" "TU-Berlin-1.0" "TU-Berlin-2.0" "UCAR" "UCL-1.0" "Unicode-DFS-2015" "Unicode-DFS-2016" "Unicode-TOU" "UnixCrypt" "Unlicense" "UPL-1.0" "Vim" "VOSTROM" "VSL-1.0" "W3C" "W3C-19980720" "W3C-20150513" "w3m" "Watcom-1.0" "Widget-Workshop" "Wsuipa" "WTFPL" "X11" "X11-distribute-modifications-variant" "Xdebug-1.03" "Xerox" "Xfig" "XFree86-1.1" "xinetd" "xlock" "Xnet" "xpp" "XSkat" "YPL-1.0" "YPL-1.1" "Zed" "Zend-2.0" "Zimbra-1.3" "Zimbra-1.4" "Zlib" "zlib-acknowledgement" "ZPL-1.1" "ZPL-2.0" "ZPL-2.1" ) ] [ sh:datatype xsd:anyURI ] ) ; + sh:order 6 ; + sh:path gx:license ], + [ sh:class gx:Signature ; + sh:description "Details with respect to signature of the software." ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path gx:signature ], + [ sh:datatype xsd:dateTime ; + sh:description "Date and time the software was build, formated according to ISO 8601 (UTC - 24 hours)." ; + sh:maxCount 1 ; + sh:name "Build Date" ; + sh:order 4 ; + sh:path gx:buildDate ], + [ sh:description "A resolvable link of resources related to the resource and that can exist independently of it." ; + sh:name "aggregation of" ; + sh:or ( [ sh:class gx:VirtualResource ] [ sh:class gx:PhysicalResource ] ) ; + sh:order 8 ; + sh:path gx:aggregationOfResources ], + [ sh:class gx:CheckSum ; + sh:description "Details on checksum of the software." ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path gx:checksum ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 10 ; + sh:path gx:description ], + [ sh:datatype xsd:string ; + sh:description "A list of policy expressed using a DSL (e.g., Rego or ODRL) (access control, throttling, usage, retention, ...). If there is no specified usage policy constraints on the VirtualResource, the policy should express a simple default: allow intent" ; + sh:minCount 1 ; + sh:order 7 ; + sh:path gx:resourcePolicy ] ; + sh:targetClass gx:CodeArtifact . + +gx:DataResource a sh:NodeShape ; + sh:closed false ; + sh:description "A dataset exposed through a service instance." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Data Resource" ; + sh:property [ sh:class gx:DataExchangeComponent ; + sh:description "A resolvable link to the data exchange component that exposes the data resource." ; + sh:minCount 1 ; + sh:name "exposed through" ; + sh:order 1 ; + sh:path gx:exposedThrough ], + [ sh:datatype xsd:dateTime ; + sh:description "Date time in ISO 8601 format after which data is obsolete." ; + sh:maxCount 1 ; + sh:name "obsolete dateTime" ; + sh:order 2 ; + sh:path gx:obsoleteDateTime ], + [ sh:class gx:LegalPerson ; + sh:description "A resolvable link to participant legally enabling the data usage." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "produced by" ; + sh:order 0 ; + sh:path gx:producedBy ], + [ sh:description "A resolvable link of resources related to the resource and that can exist independently of it." ; + sh:name "aggregation of" ; + sh:or ( [ sh:class gx:VirtualResource ] [ sh:class gx:PhysicalResource ] ) ; + sh:order 10 ; + sh:path gx:aggregationOfResources ], + [ sh:class gx:Consent ; + sh:description "list of consents covering the processing activities from the data subjects as Natural Person when the dataset contains PII." ; + sh:name "consent" ; + sh:order 6 ; + sh:path gx:consent ], + [ sh:datatype xsd:boolean ; + sh:description "Boolean for Personal Identifier Information, which is determined by the Participant owning the Data Resource." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "contains PII" ; + sh:order 4 ; + sh:path gx:containsPII ], + [ sh:datatype xsd:string ; + sh:description "A list of policy expressed using a DSL (e.g., Rego or ODRL) (access control, throttling, usage, retention, ...). If there is no specified usage policy constraints on the VirtualResource, the policy should express a simple default: allow intent" ; + sh:minCount 1 ; + sh:order 9 ; + sh:path gx:resourcePolicy ], + [ sh:class gx:Participant ; + sh:description "data controller Participant as defined in GDPR." ; + sh:name "data controller" ; + sh:order 5 ; + sh:path gx:dataController ], + [ sh:description "A list of copyright owners either as a free form string or as resolvable link to Gaia-X Credential of participants. A copyright owner is a person or organization that has the right to exploit the resource. Copyright owner does not necessarily refer to the author of the resource, who is a natural person and may differ from copyright owner." ; + sh:minCount 1 ; + sh:name "copyright owned by" ; + sh:or ( [ sh:class gx:LegalPerson ] [ sh:datatype xsd:string ] ) ; + sh:order 7 ; + sh:path gx:copyrightOwnedBy ], + [ sh:datatype xsd:dateTime ; + sh:description "Date time in ISO 8601 format after which data is expired and shall be deleted." ; + sh:maxCount 1 ; + sh:name "expiration dateTime" ; + sh:order 3 ; + sh:path gx:expirationDateTime ], + [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 11 ; + sh:path gx:name ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 12 ; + sh:path gx:description ], + [ sh:description "A list of SPDX identifiers or URL to document." ; + sh:minCount 1 ; + sh:or ( [ sh:in ( "0BSD" "AAL" "Abstyles" "AdaCore-doc" "Adobe-2006" "Adobe-Glyph" "ADSL" "AFL-1.1" "AFL-1.2" "AFL-2.0" "AFL-2.1" "AFL-3.0" "Afmparse" "AGPL-1.0-only" "AGPL-1.0-or-later" "AGPL-3.0-only" "AGPL-3.0-or-later" "Aladdin" "AMDPLPA" "AML" "AMPAS" "ANTLR-PD" "ANTLR-PD-fallback" "Apache-1.0" "Apache-1.1" "Apache-2.0" "APAFML" "APL-1.0" "App-s2p" "APSL-1.0" "APSL-1.1" "APSL-1.2" "APSL-2.0" "Arphic-1999" "Artistic-1.0" "Artistic-1.0-cl8" "Artistic-1.0-Perl" "Artistic-2.0" "ASWF-Digital-Assets-1.0" "ASWF-Digital-Assets-1.1" "Baekmuk" "Bahyph" "Barr" "Beerware" "Bitstream-Charter" "Bitstream-Vera" "BitTorrent-1.0" "BitTorrent-1.1" "blessing" "BlueOak-1.0.0" "Boehm-GC" "Borceux" "Brian-Gladman-3-Clause" "BSD-1-Clause" "BSD-2-Clause" "BSD-2-Clause-Patent" "BSD-2-Clause-Views" "BSD-3-Clause" "BSD-3-Clause-Attribution" "BSD-3-Clause-Clear" "BSD-3-Clause-LBNL" "BSD-3-Clause-Modification" "BSD-3-Clause-No-Military-License" "BSD-3-Clause-No-Nuclear-License" "BSD-3-Clause-No-Nuclear-License-2014" "BSD-3-Clause-No-Nuclear-Warranty" "BSD-3-Clause-Open-MPI" "BSD-4-Clause" "BSD-4-Clause-Shortened" "BSD-4-Clause-UC" "BSD-4.3RENO" "BSD-4.3TAHOE" "BSD-Advertising-Acknowledgement" "BSD-Attribution-HPND-disclaimer" "BSD-Protection" "BSD-Source-Code" "BSL-1.0" "BUSL-1.1" "bzip2-1.0.6" "C-UDA-1.0" "CAL-1.0" "CAL-1.0-Combined-Work-Exception" "Caldera" "CATOSL-1.1" "CC-BY-1.0" "CC-BY-2.0" "CC-BY-2.5" "CC-BY-2.5-AU" "CC-BY-3.0" "CC-BY-3.0-AT" "CC-BY-3.0-DE" "CC-BY-3.0-IGO" "CC-BY-3.0-NL" "CC-BY-3.0-US" "CC-BY-4.0" "CC-BY-NC-1.0" "CC-BY-NC-2.0" "CC-BY-NC-2.5" "CC-BY-NC-3.0" "CC-BY-NC-3.0-DE" "CC-BY-NC-4.0" "CC-BY-NC-ND-1.0" "CC-BY-NC-ND-2.0" "CC-BY-NC-ND-2.5" "CC-BY-NC-ND-3.0" "CC-BY-NC-ND-3.0-DE" "CC-BY-NC-ND-3.0-IGO" "CC-BY-NC-ND-4.0" "CC-BY-NC-SA-1.0" "CC-BY-NC-SA-2.0" "CC-BY-NC-SA-2.0-DE" "CC-BY-NC-SA-2.0-FR" "CC-BY-NC-SA-2.0-UK" "CC-BY-NC-SA-2.5" "CC-BY-NC-SA-3.0" "CC-BY-NC-SA-3.0-DE" "CC-BY-NC-SA-3.0-IGO" "CC-BY-NC-SA-4.0" "CC-BY-ND-1.0" "CC-BY-ND-2.0" "CC-BY-ND-2.5" "CC-BY-ND-3.0" "CC-BY-ND-3.0-DE" "CC-BY-ND-4.0" "CC-BY-SA-1.0" "CC-BY-SA-2.0" "CC-BY-SA-2.0-UK" "CC-BY-SA-2.1-JP" "CC-BY-SA-2.5" "CC-BY-SA-3.0" "CC-BY-SA-3.0-AT" "CC-BY-SA-3.0-DE" "CC-BY-SA-3.0-IGO" "CC-BY-SA-4.0" "CC-PDDC" "CC0-1.0" "CDDL-1.0" "CDDL-1.1" "CDL-1.0" "CDLA-Permissive-1.0" "CDLA-Permissive-2.0" "CDLA-Sharing-1.0" "CECILL-1.0" "CECILL-1.1" "CECILL-2.0" "CECILL-2.1" "CECILL-B" "CECILL-C" "CERN-OHL-1.1" "CERN-OHL-1.2" "CERN-OHL-P-2.0" "CERN-OHL-S-2.0" "CERN-OHL-W-2.0" "CFITSIO" "checkmk" "ClArtistic" "Clips" "CMU-Mach" "CNRI-Jython" "CNRI-Python" "CNRI-Python-GPL-Compatible" "COIL-1.0" "Community-Spec-1.0" "Condor-1.1" "copyleft-next-0.3.0" "copyleft-next-0.3.1" "Cornell-Lossless-JPEG" "CPAL-1.0" "CPL-1.0" "CPOL-1.02" "Crossword" "CrystalStacker" "CUA-OPL-1.0" "Cube" "curl" "D-FSL-1.0" "diffmark" "DL-DE-BY-2.0" "DOC" "Dotseqn" "DRL-1.0" "DSDP" "dtoa" "dvipdfm" "ECL-1.0" "ECL-2.0" "EFL-1.0" "EFL-2.0" "eGenix" "Elastic-2.0" "Entessa" "EPICS" "EPL-1.0" "EPL-2.0" "ErlPL-1.1" "etalab-2.0" "EUDatagrid" "EUPL-1.0" "EUPL-1.1" "EUPL-1.2" "Eurosym" "Fair" "FDK-AAC" "Frameworx-1.0" "FreeBSD-DOC" "FreeImage" "FSFAP" "FSFUL" "FSFULLR" "FSFULLRWD" "FTL" "GD" "GFDL-1.1-invariants-only" "GFDL-1.1-invariants-or-later" "GFDL-1.1-no-invariants-only" "GFDL-1.1-no-invariants-or-later" "GFDL-1.1-only" "GFDL-1.1-or-later" "GFDL-1.2-invariants-only" "GFDL-1.2-invariants-or-later" "GFDL-1.2-no-invariants-only" "GFDL-1.2-no-invariants-or-later" "GFDL-1.2-only" "GFDL-1.2-or-later" "GFDL-1.3-invariants-only" "GFDL-1.3-invariants-or-later" "GFDL-1.3-no-invariants-only" "GFDL-1.3-no-invariants-or-later" "GFDL-1.3-only" "GFDL-1.3-or-later" "Giftware" "GL2PS" "Glide" "Glulxe" "GLWTPL" "gnuplot" "GPL-1.0-only" "GPL-1.0-or-later" "GPL-2.0-only" "GPL-2.0-or-later" "GPL-3.0-only" "GPL-3.0-or-later" "Graphics-Gems" "gSOAP-1.3b" "HaskellReport" "Hippocratic-2.1" "HP-1986" "HPND" "HPND-export-US" "HPND-Markus-Kuhn" "HPND-sell-variant" "HPND-sell-variant-MIT-disclaimer" "HTMLTIDY" "IBM-pibs" "ICU" "IEC-Code-Components-EULA" "IJG" "IJG-short" "ImageMagick" "iMatix" "Imlib2" "Info-ZIP" "Inner-Net-2.0" "Intel" "Intel-ACPI" "Interbase-1.0" "IPA" "IPL-1.0" "ISC" "Jam" "JasPer-2.0" "JPL-image" "JPNIC" "JSON" "Kazlib" "Knuth-CTAN" "LAL-1.2" "LAL-1.3" "Latex2e" "Latex2e-translated-notice" "Leptonica" "LGPL-2.0-only" "LGPL-2.0-or-later" "LGPL-2.1-only" "LGPL-2.1-or-later" "LGPL-3.0-only" "LGPL-3.0-or-later" "LGPLLR" "Libpng" "libpng-2.0" "libselinux-1.0" "libtiff" "libutil-David-Nugent" "LiLiQ-P-1.1" "LiLiQ-R-1.1" "LiLiQ-Rplus-1.1" "Linux-man-pages-1-para" "Linux-man-pages-copyleft" "Linux-man-pages-copyleft-2-para" "Linux-man-pages-copyleft-var" "Linux-OpenIB" "LOOP" "LPL-1.0" "LPL-1.02" "LPPL-1.0" "LPPL-1.1" "LPPL-1.2" "LPPL-1.3a" "LPPL-1.3c" "LZMA-SDK-9.11-to-9.20" "LZMA-SDK-9.22" "MakeIndex" "Martin-Birgmeier" "metamail" "Minpack" "MirOS" "MIT" "MIT-0" "MIT-advertising" "MIT-CMU" "MIT-enna" "MIT-feh" "MIT-Festival" "MIT-Modern-Variant" "MIT-open-group" "MIT-Wu" "MITNFA" "Motosoto" "mpi-permissive" "mpich2" "MPL-1.0" "MPL-1.1" "MPL-2.0" "MPL-2.0-no-copyleft-exception" "mplus" "MS-LPL" "MS-PL" "MS-RL" "MTLL" "MulanPSL-1.0" "MulanPSL-2.0" "Multics" "Mup" "NAIST-2003" "NASA-1.3" "Naumen" "NBPL-1.0" "NCGL-UK-2.0" "NCSA" "Net-SNMP" "NetCDF" "Newsletr" "NGPL" "NICTA-1.0" "NIST-PD" "NIST-PD-fallback" "NIST-Software" "NLOD-1.0" "NLOD-2.0" "NLPL" "Nokia" "NOSL" "Noweb" "NPL-1.0" "NPL-1.1" "NPOSL-3.0" "NRL" "NTP" "NTP-0" "O-UDA-1.0" "OCCT-PL" "OCLC-2.0" "ODbL-1.0" "ODC-By-1.0" "OFFIS" "OFL-1.0" "OFL-1.0-no-RFN" "OFL-1.0-RFN" "OFL-1.1" "OFL-1.1-no-RFN" "OFL-1.1-RFN" "OGC-1.0" "OGDL-Taiwan-1.0" "OGL-Canada-2.0" "OGL-UK-1.0" "OGL-UK-2.0" "OGL-UK-3.0" "OGTSL" "OLDAP-1.1" "OLDAP-1.2" "OLDAP-1.3" "OLDAP-1.4" "OLDAP-2.0" "OLDAP-2.0.1" "OLDAP-2.1" "OLDAP-2.2" "OLDAP-2.2.1" "OLDAP-2.2.2" "OLDAP-2.3" "OLDAP-2.4" "OLDAP-2.5" "OLDAP-2.6" "OLDAP-2.7" "OLDAP-2.8" "OLFL-1.3" "OML" "OpenPBS-2.3" "OpenSSL" "OPL-1.0" "OPL-UK-3.0" "OPUBL-1.0" "OSET-PL-2.1" "OSL-1.0" "OSL-1.1" "OSL-2.0" "OSL-2.1" "OSL-3.0" "Parity-6.0.0" "Parity-7.0.0" "PDDL-1.0" "PHP-3.0" "PHP-3.01" "Plexus" "PolyForm-Noncommercial-1.0.0" "PolyForm-Small-Business-1.0.0" "PostgreSQL" "PSF-2.0" "psfrag" "psutils" "Python-2.0" "Python-2.0.1" "Qhull" "QPL-1.0" "QPL-1.0-INRIA-2004" "Rdisc" "RHeCos-1.1" "RPL-1.1" "RPL-1.5" "RPSL-1.0" "RSA-MD" "RSCPL" "Ruby" "SAX-PD" "Saxpath" "SCEA" "SchemeReport" "Sendmail" "Sendmail-8.23" "SGI-B-1.0" "SGI-B-1.1" "SGI-B-2.0" "SGP4" "SHL-0.5" "SHL-0.51" "SimPL-2.0" "SISSL" "SISSL-1.2" "Sleepycat" "SMLNJ" "SMPPL" "SNIA" "snprintf" "Spencer-86" "Spencer-94" "Spencer-99" "SPL-1.0" "SSH-OpenSSH" "SSH-short" "SSPL-1.0" "SugarCRM-1.1.3" "SunPro" "SWL" "Symlinks" "TAPR-OHL-1.0" "TCL" "TCP-wrappers" "TermReadKey" "TMate" "TORQUE-1.1" "TOSL" "TPDL" "TPL-1.0" "TTWL" "TU-Berlin-1.0" "TU-Berlin-2.0" "UCAR" "UCL-1.0" "Unicode-DFS-2015" "Unicode-DFS-2016" "Unicode-TOU" "UnixCrypt" "Unlicense" "UPL-1.0" "Vim" "VOSTROM" "VSL-1.0" "W3C" "W3C-19980720" "W3C-20150513" "w3m" "Watcom-1.0" "Widget-Workshop" "Wsuipa" "WTFPL" "X11" "X11-distribute-modifications-variant" "Xdebug-1.03" "Xerox" "Xfig" "XFree86-1.1" "xinetd" "xlock" "Xnet" "xpp" "XSkat" "YPL-1.0" "YPL-1.1" "Zed" "Zend-2.0" "Zimbra-1.3" "Zimbra-1.4" "Zlib" "zlib-acknowledgement" "ZPL-1.1" "ZPL-2.0" "ZPL-2.1" ) ] [ sh:datatype xsd:anyURI ] ) ; + sh:order 8 ; + sh:path gx:license ] ; + sh:targetClass gx:DataResource . + +gx:Device a sh:NodeShape ; + sh:closed false ; + sh:description "Details with respect to properties and capabilities of a hardware or virtualized device." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Vendor specific generation of the device." ; + sh:maxCount 1 ; + sh:name "Generation of the device" ; + sh:order 1 ; + sh:path gx:generation ], + [ sh:datatype xsd:integer ; + sh:description "Over-subscription means assigning more capacity to virtual machines that the physical device has. Default over-subscription ratio defines the amount of default over-subscription as a value larger or equal to 1.0. 1.0 means no over-subscription." ; + sh:maxCount 1 ; + sh:minInclusive 1 ; + sh:name "default over-subscription ratio" ; + sh:order 2 ; + sh:path gx:defaultOversubscriptionRatio ], + [ sh:datatype xsd:integer ; + sh:description "Over-subscription means assigning more capacity to virtual machines that the physical device has. Supported over-subscription ratio defines the amount of supported over-subscription as a value larger or equal to 1.0. 1.0 means no over-subscription." ; + sh:maxCount 1 ; + sh:minInclusive 1 ; + sh:name "supported over-subscription ratio" ; + sh:order 3 ; + sh:path gx:supportedOversubscriptionRatio ], + [ sh:datatype xsd:string ; + sh:description "Vendor of the device." ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path gx:vendor ] ; + sh:targetClass gx:Device . + +gx:GaiaX a sh:NodeShape ; + sh:closed false ; + sh:description "Top level element of Gaia-X ecosystem." ; + sh:ignoredProperties ( rdf:type ) ; + sh:targetClass gx:GaiaX . + +gx:GaiaXEntity a sh:NodeShape ; + sh:closed false ; + sh:description "Root class for Gaia-X entities." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Gaia-X Entity" ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 0 ; + sh:path gx:name ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 1 ; + sh:path gx:description ] ; + sh:targetClass gx:GaiaXEntity . + +gx:Hypervisor a sh:NodeShape ; + sh:closed false ; + sh:description "A special Gaia-X Software Resource describing a hypervisor to provided virtual machines." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class gx:CheckSum ; + sh:description "Details on checksum of the software." ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path gx:checksum ], + [ sh:datatype xsd:string ; + sh:description "Software specific patch number describing patch level of the software." ; + sh:maxCount 1 ; + sh:name "Patch level" ; + sh:order 4 ; + sh:path gx:patchLevel ], + [ sh:datatype xsd:dateTime ; + sh:description "Date and time the software was build, formated according to ISO 8601 (UTC - 24 hours)." ; + sh:maxCount 1 ; + sh:name "Build Date" ; + sh:order 5 ; + sh:path gx:buildDate ], + [ sh:datatype xsd:string ; + sh:description "Version of the software." ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path gx:version ], + [ sh:description "A resolvable link of resources related to the resource and that can exist independently of it." ; + sh:name "aggregation of" ; + sh:or ( [ sh:class gx:VirtualResource ] [ sh:class gx:PhysicalResource ] ) ; + sh:order 9 ; + sh:path gx:aggregationOfResources ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 11 ; + sh:path gx:description ], + [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 10 ; + sh:path gx:name ], + [ sh:description "The common name of the distribution of the operating system as defined in http://libosinfo.org/." ; + sh:in ( "quemu" "KVM" "Xen" "ESXi" "Hyper-V" "Cloud Hypervisor" "other" ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 0 ; + sh:path gx:hypervisorType ], + [ sh:description "A list of SPDX identifiers or URL to document." ; + sh:minCount 1 ; + sh:or ( [ sh:in ( "0BSD" "AAL" "Abstyles" "AdaCore-doc" "Adobe-2006" "Adobe-Glyph" "ADSL" "AFL-1.1" "AFL-1.2" "AFL-2.0" "AFL-2.1" "AFL-3.0" "Afmparse" "AGPL-1.0-only" "AGPL-1.0-or-later" "AGPL-3.0-only" "AGPL-3.0-or-later" "Aladdin" "AMDPLPA" "AML" "AMPAS" "ANTLR-PD" "ANTLR-PD-fallback" "Apache-1.0" "Apache-1.1" "Apache-2.0" "APAFML" "APL-1.0" "App-s2p" "APSL-1.0" "APSL-1.1" "APSL-1.2" "APSL-2.0" "Arphic-1999" "Artistic-1.0" "Artistic-1.0-cl8" "Artistic-1.0-Perl" "Artistic-2.0" "ASWF-Digital-Assets-1.0" "ASWF-Digital-Assets-1.1" "Baekmuk" "Bahyph" "Barr" "Beerware" "Bitstream-Charter" "Bitstream-Vera" "BitTorrent-1.0" "BitTorrent-1.1" "blessing" "BlueOak-1.0.0" "Boehm-GC" "Borceux" "Brian-Gladman-3-Clause" "BSD-1-Clause" "BSD-2-Clause" "BSD-2-Clause-Patent" "BSD-2-Clause-Views" "BSD-3-Clause" "BSD-3-Clause-Attribution" "BSD-3-Clause-Clear" "BSD-3-Clause-LBNL" "BSD-3-Clause-Modification" "BSD-3-Clause-No-Military-License" "BSD-3-Clause-No-Nuclear-License" "BSD-3-Clause-No-Nuclear-License-2014" "BSD-3-Clause-No-Nuclear-Warranty" "BSD-3-Clause-Open-MPI" "BSD-4-Clause" "BSD-4-Clause-Shortened" "BSD-4-Clause-UC" "BSD-4.3RENO" "BSD-4.3TAHOE" "BSD-Advertising-Acknowledgement" "BSD-Attribution-HPND-disclaimer" "BSD-Protection" "BSD-Source-Code" "BSL-1.0" "BUSL-1.1" "bzip2-1.0.6" "C-UDA-1.0" "CAL-1.0" "CAL-1.0-Combined-Work-Exception" "Caldera" "CATOSL-1.1" "CC-BY-1.0" "CC-BY-2.0" "CC-BY-2.5" "CC-BY-2.5-AU" "CC-BY-3.0" "CC-BY-3.0-AT" "CC-BY-3.0-DE" "CC-BY-3.0-IGO" "CC-BY-3.0-NL" "CC-BY-3.0-US" "CC-BY-4.0" "CC-BY-NC-1.0" "CC-BY-NC-2.0" "CC-BY-NC-2.5" "CC-BY-NC-3.0" "CC-BY-NC-3.0-DE" "CC-BY-NC-4.0" "CC-BY-NC-ND-1.0" "CC-BY-NC-ND-2.0" "CC-BY-NC-ND-2.5" "CC-BY-NC-ND-3.0" "CC-BY-NC-ND-3.0-DE" "CC-BY-NC-ND-3.0-IGO" "CC-BY-NC-ND-4.0" "CC-BY-NC-SA-1.0" "CC-BY-NC-SA-2.0" "CC-BY-NC-SA-2.0-DE" "CC-BY-NC-SA-2.0-FR" "CC-BY-NC-SA-2.0-UK" "CC-BY-NC-SA-2.5" "CC-BY-NC-SA-3.0" "CC-BY-NC-SA-3.0-DE" "CC-BY-NC-SA-3.0-IGO" "CC-BY-NC-SA-4.0" "CC-BY-ND-1.0" "CC-BY-ND-2.0" "CC-BY-ND-2.5" "CC-BY-ND-3.0" "CC-BY-ND-3.0-DE" "CC-BY-ND-4.0" "CC-BY-SA-1.0" "CC-BY-SA-2.0" "CC-BY-SA-2.0-UK" "CC-BY-SA-2.1-JP" "CC-BY-SA-2.5" "CC-BY-SA-3.0" "CC-BY-SA-3.0-AT" "CC-BY-SA-3.0-DE" "CC-BY-SA-3.0-IGO" "CC-BY-SA-4.0" "CC-PDDC" "CC0-1.0" "CDDL-1.0" "CDDL-1.1" "CDL-1.0" "CDLA-Permissive-1.0" "CDLA-Permissive-2.0" "CDLA-Sharing-1.0" "CECILL-1.0" "CECILL-1.1" "CECILL-2.0" "CECILL-2.1" "CECILL-B" "CECILL-C" "CERN-OHL-1.1" "CERN-OHL-1.2" "CERN-OHL-P-2.0" "CERN-OHL-S-2.0" "CERN-OHL-W-2.0" "CFITSIO" "checkmk" "ClArtistic" "Clips" "CMU-Mach" "CNRI-Jython" "CNRI-Python" "CNRI-Python-GPL-Compatible" "COIL-1.0" "Community-Spec-1.0" "Condor-1.1" "copyleft-next-0.3.0" "copyleft-next-0.3.1" "Cornell-Lossless-JPEG" "CPAL-1.0" "CPL-1.0" "CPOL-1.02" "Crossword" "CrystalStacker" "CUA-OPL-1.0" "Cube" "curl" "D-FSL-1.0" "diffmark" "DL-DE-BY-2.0" "DOC" "Dotseqn" "DRL-1.0" "DSDP" "dtoa" "dvipdfm" "ECL-1.0" "ECL-2.0" "EFL-1.0" "EFL-2.0" "eGenix" "Elastic-2.0" "Entessa" "EPICS" "EPL-1.0" "EPL-2.0" "ErlPL-1.1" "etalab-2.0" "EUDatagrid" "EUPL-1.0" "EUPL-1.1" "EUPL-1.2" "Eurosym" "Fair" "FDK-AAC" "Frameworx-1.0" "FreeBSD-DOC" "FreeImage" "FSFAP" "FSFUL" "FSFULLR" "FSFULLRWD" "FTL" "GD" "GFDL-1.1-invariants-only" "GFDL-1.1-invariants-or-later" "GFDL-1.1-no-invariants-only" "GFDL-1.1-no-invariants-or-later" "GFDL-1.1-only" "GFDL-1.1-or-later" "GFDL-1.2-invariants-only" "GFDL-1.2-invariants-or-later" "GFDL-1.2-no-invariants-only" "GFDL-1.2-no-invariants-or-later" "GFDL-1.2-only" "GFDL-1.2-or-later" "GFDL-1.3-invariants-only" "GFDL-1.3-invariants-or-later" "GFDL-1.3-no-invariants-only" "GFDL-1.3-no-invariants-or-later" "GFDL-1.3-only" "GFDL-1.3-or-later" "Giftware" "GL2PS" "Glide" "Glulxe" "GLWTPL" "gnuplot" "GPL-1.0-only" "GPL-1.0-or-later" "GPL-2.0-only" "GPL-2.0-or-later" "GPL-3.0-only" "GPL-3.0-or-later" "Graphics-Gems" "gSOAP-1.3b" "HaskellReport" "Hippocratic-2.1" "HP-1986" "HPND" "HPND-export-US" "HPND-Markus-Kuhn" "HPND-sell-variant" "HPND-sell-variant-MIT-disclaimer" "HTMLTIDY" "IBM-pibs" "ICU" "IEC-Code-Components-EULA" "IJG" "IJG-short" "ImageMagick" "iMatix" "Imlib2" "Info-ZIP" "Inner-Net-2.0" "Intel" "Intel-ACPI" "Interbase-1.0" "IPA" "IPL-1.0" "ISC" "Jam" "JasPer-2.0" "JPL-image" "JPNIC" "JSON" "Kazlib" "Knuth-CTAN" "LAL-1.2" "LAL-1.3" "Latex2e" "Latex2e-translated-notice" "Leptonica" "LGPL-2.0-only" "LGPL-2.0-or-later" "LGPL-2.1-only" "LGPL-2.1-or-later" "LGPL-3.0-only" "LGPL-3.0-or-later" "LGPLLR" "Libpng" "libpng-2.0" "libselinux-1.0" "libtiff" "libutil-David-Nugent" "LiLiQ-P-1.1" "LiLiQ-R-1.1" "LiLiQ-Rplus-1.1" "Linux-man-pages-1-para" "Linux-man-pages-copyleft" "Linux-man-pages-copyleft-2-para" "Linux-man-pages-copyleft-var" "Linux-OpenIB" "LOOP" "LPL-1.0" "LPL-1.02" "LPPL-1.0" "LPPL-1.1" "LPPL-1.2" "LPPL-1.3a" "LPPL-1.3c" "LZMA-SDK-9.11-to-9.20" "LZMA-SDK-9.22" "MakeIndex" "Martin-Birgmeier" "metamail" "Minpack" "MirOS" "MIT" "MIT-0" "MIT-advertising" "MIT-CMU" "MIT-enna" "MIT-feh" "MIT-Festival" "MIT-Modern-Variant" "MIT-open-group" "MIT-Wu" "MITNFA" "Motosoto" "mpi-permissive" "mpich2" "MPL-1.0" "MPL-1.1" "MPL-2.0" "MPL-2.0-no-copyleft-exception" "mplus" "MS-LPL" "MS-PL" "MS-RL" "MTLL" "MulanPSL-1.0" "MulanPSL-2.0" "Multics" "Mup" "NAIST-2003" "NASA-1.3" "Naumen" "NBPL-1.0" "NCGL-UK-2.0" "NCSA" "Net-SNMP" "NetCDF" "Newsletr" "NGPL" "NICTA-1.0" "NIST-PD" "NIST-PD-fallback" "NIST-Software" "NLOD-1.0" "NLOD-2.0" "NLPL" "Nokia" "NOSL" "Noweb" "NPL-1.0" "NPL-1.1" "NPOSL-3.0" "NRL" "NTP" "NTP-0" "O-UDA-1.0" "OCCT-PL" "OCLC-2.0" "ODbL-1.0" "ODC-By-1.0" "OFFIS" "OFL-1.0" "OFL-1.0-no-RFN" "OFL-1.0-RFN" "OFL-1.1" "OFL-1.1-no-RFN" "OFL-1.1-RFN" "OGC-1.0" "OGDL-Taiwan-1.0" "OGL-Canada-2.0" "OGL-UK-1.0" "OGL-UK-2.0" "OGL-UK-3.0" "OGTSL" "OLDAP-1.1" "OLDAP-1.2" "OLDAP-1.3" "OLDAP-1.4" "OLDAP-2.0" "OLDAP-2.0.1" "OLDAP-2.1" "OLDAP-2.2" "OLDAP-2.2.1" "OLDAP-2.2.2" "OLDAP-2.3" "OLDAP-2.4" "OLDAP-2.5" "OLDAP-2.6" "OLDAP-2.7" "OLDAP-2.8" "OLFL-1.3" "OML" "OpenPBS-2.3" "OpenSSL" "OPL-1.0" "OPL-UK-3.0" "OPUBL-1.0" "OSET-PL-2.1" "OSL-1.0" "OSL-1.1" "OSL-2.0" "OSL-2.1" "OSL-3.0" "Parity-6.0.0" "Parity-7.0.0" "PDDL-1.0" "PHP-3.0" "PHP-3.01" "Plexus" "PolyForm-Noncommercial-1.0.0" "PolyForm-Small-Business-1.0.0" "PostgreSQL" "PSF-2.0" "psfrag" "psutils" "Python-2.0" "Python-2.0.1" "Qhull" "QPL-1.0" "QPL-1.0-INRIA-2004" "Rdisc" "RHeCos-1.1" "RPL-1.1" "RPL-1.5" "RPSL-1.0" "RSA-MD" "RSCPL" "Ruby" "SAX-PD" "Saxpath" "SCEA" "SchemeReport" "Sendmail" "Sendmail-8.23" "SGI-B-1.0" "SGI-B-1.1" "SGI-B-2.0" "SGP4" "SHL-0.5" "SHL-0.51" "SimPL-2.0" "SISSL" "SISSL-1.2" "Sleepycat" "SMLNJ" "SMPPL" "SNIA" "snprintf" "Spencer-86" "Spencer-94" "Spencer-99" "SPL-1.0" "SSH-OpenSSH" "SSH-short" "SSPL-1.0" "SugarCRM-1.1.3" "SunPro" "SWL" "Symlinks" "TAPR-OHL-1.0" "TCL" "TCP-wrappers" "TermReadKey" "TMate" "TORQUE-1.1" "TOSL" "TPDL" "TPL-1.0" "TTWL" "TU-Berlin-1.0" "TU-Berlin-2.0" "UCAR" "UCL-1.0" "Unicode-DFS-2015" "Unicode-DFS-2016" "Unicode-TOU" "UnixCrypt" "Unlicense" "UPL-1.0" "Vim" "VOSTROM" "VSL-1.0" "W3C" "W3C-19980720" "W3C-20150513" "w3m" "Watcom-1.0" "Widget-Workshop" "Wsuipa" "WTFPL" "X11" "X11-distribute-modifications-variant" "Xdebug-1.03" "Xerox" "Xfig" "XFree86-1.1" "xinetd" "xlock" "Xnet" "xpp" "XSkat" "YPL-1.0" "YPL-1.1" "Zed" "Zend-2.0" "Zimbra-1.3" "Zimbra-1.4" "Zlib" "zlib-acknowledgement" "ZPL-1.1" "ZPL-2.0" "ZPL-2.1" ) ] [ sh:datatype xsd:anyURI ] ) ; + sh:order 7 ; + sh:path gx:license ], + [ sh:class gx:Signature ; + sh:description "Details with respect to signature of the software." ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path gx:signature ], + [ sh:description "A list of copyright owners either as a free form string or as resolvable link to Gaia-X Credential of participants. A copyright owner is a person or organization that has the right to exploit the resource. Copyright owner does not necessarily refer to the author of the resource, who is a natural person and may differ from copyright owner." ; + sh:minCount 1 ; + sh:name "copyright owned by" ; + sh:or ( [ sh:class gx:LegalPerson ] [ sh:datatype xsd:string ] ) ; + sh:order 6 ; + sh:path gx:copyrightOwnedBy ], + [ sh:datatype xsd:string ; + sh:description "A list of policy expressed using a DSL (e.g., Rego or ODRL) (access control, throttling, usage, retention, ...). If there is no specified usage policy constraints on the VirtualResource, the policy should express a simple default: allow intent" ; + sh:minCount 1 ; + sh:order 8 ; + sh:path gx:resourcePolicy ] ; + sh:targetClass gx:Hypervisor . + +gx:Image a sh:NodeShape ; + sh:closed false ; + sh:description "A software piece that can be executed by a virtual or bare metal Compute services. It is a subclass of OperatingSystem and CodeArtifact." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Image" ; + sh:property [ sh:class gx:MemorySize ; + sh:description "Maximum amount of RAM for the video image." ; + sh:maxCount 1 ; + sh:name "Video RAM size" ; + sh:order 5 ; + sh:path gx:videoRamSize ], + [ sh:class gx:Encryption ; + sh:description "Details with respect to encryption of the images." ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path gx:encryption ], + [ sh:datatype xsd:boolean ; + sh:description "If true, instances of the image are only started, if signature of software, such as firmware or operating system, are valid. Default: False." ; + sh:maxCount 1 ; + sh:name "Secure Boot" ; + sh:order 9 ; + sh:path gx:secureBoot ], + [ sh:class gx:Signature ; + sh:description "Details with respect to signature of the software." ; + sh:maxCount 1 ; + sh:order 16 ; + sh:path gx:signature ], + [ sh:class gx:CPU ; + sh:description "Details with respect to CPU capabilities required to run the image." ; + sh:maxCount 1 ; + sh:name "CPU requirements" ; + sh:order 2 ; + sh:path gx:cpuReq ], + [ sh:class gx:UpdateStrategy ; + sh:description "Details on provider's image update strategy of this image. An update strategy defines ..." ; + sh:maxCount 1 ; + sh:order 12 ; + sh:path gx:updateStrategy ], + [ sh:datatype xsd:boolean ; + sh:description "If true, a virtual performance monitoring unit (vPMU) is enable in guest. Default: False" ; + sh:maxCount 1 ; + sh:name "Virtual performance monitoring unit" ; + sh:order 10 ; + sh:path gx:vPMU ], + [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 24 ; + sh:path gx:name ], + [ sh:datatype xsd:boolean ; + sh:description "If true, one queue is set for each virtual CPU." ; + sh:maxCount 1 ; + sh:name "Multi queues" ; + sh:order 11 ; + sh:path gx:multiQueues ], + [ sh:description "A resolvable link of resources related to the resource and that can exist independently of it." ; + sh:name "aggregation of" ; + sh:or ( [ sh:class gx:VirtualResource ] [ sh:class gx:PhysicalResource ] ) ; + sh:order 23 ; + sh:path gx:aggregationOfResources ], + [ sh:class gx:CheckSum ; + sh:description "Details with respect to check sum of the image." ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path gx:checkSum ], + [ sh:datatype xsd:dateTime ; + sh:description "Date and time the software was build, formated according to ISO 8601 (UTC - 24 hours)." ; + sh:maxCount 1 ; + sh:name "Build Date" ; + sh:order 19 ; + sh:path gx:buildDate ], + [ sh:class gx:GPU ; + sh:description "Details with respect to GPU capabilities required to run the image." ; + sh:maxCount 1 ; + sh:name "GPU requirements" ; + sh:order 3 ; + sh:path gx:gpuReq ], + [ sh:datatype xsd:string ; + sh:description "Version of the software." ; + sh:maxCount 1 ; + sh:order 17 ; + sh:path gx:version ], + [ sh:description "A list of copyright owners either as a free form string or as resolvable link to Gaia-X Credential of participants. A copyright owner is a person or organization that has the right to exploit the resource. Copyright owner does not necessarily refer to the author of the resource, who is a natural person and may differ from copyright owner." ; + sh:minCount 1 ; + sh:name "copyright owned by" ; + sh:or ( [ sh:class gx:LegalPerson ] [ sh:datatype xsd:string ] ) ; + sh:order 20 ; + sh:path gx:copyrightOwnedBy ], + [ sh:class gx:MaintenanceSubscription ; + sh:description "Details on maintenance capabilities of vendor of image's operating system." ; + sh:maxCount 1 ; + sh:order 14 ; + sh:path gx:maintenance ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 25 ; + sh:path gx:description ], + [ sh:datatype xsd:string ; + sh:description "Software specific patch number describing patch level of the software." ; + sh:maxCount 1 ; + sh:name "Patch level" ; + sh:order 18 ; + sh:path gx:patchLevel ], + [ sh:class gx:Disk ; + sh:description "Minimal size of root disk required to run the image." ; + sh:maxCount 1 ; + sh:name "root disk requirements" ; + sh:order 6 ; + sh:path gx:rootDiskReq ], + [ sh:datatype xsd:string ; + sh:description "A list of policy expressed using a DSL (e.g., Rego or ODRL) (access control, throttling, usage, retention, ...). If there is no specified usage policy constraints on the VirtualResource, the policy should express a simple default: allow intent" ; + sh:minCount 1 ; + sh:order 22 ; + sh:path gx:resourcePolicy ], + [ sh:datatype xsd:boolean ; + sh:description "An image is a software that may require a commercial license to be used. This attribute indicates, if service usage fee includes that license (true) or customer has to bring its own license (False). Default: False" ; + sh:maxCount 1 ; + sh:name "License included" ; + sh:order 13 ; + sh:path gx:licenseIncluded ], + [ sh:class gx:CheckSum ; + sh:description "Details on checksum of the software." ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path gx:checksum ], + [ sh:class gx:Memory ; + sh:description "Minimal size of RAM required to run the image." ; + sh:maxCount 1 ; + sh:name "Ram requirements" ; + sh:order 4 ; + sh:path gx:ramReq ], + [ sh:class gx:OperatingSystem ; + sh:description "A resolvable link to Gaia-X credential of operation system offered by this image." ; + sh:maxCount 1 ; + sh:name "Operating System" ; + sh:order 1 ; + sh:path gx:operatingSystem ], + [ sh:class gx:MemorySize ; + sh:description "Size of the image." ; + sh:maxCount 1 ; + sh:name "file size" ; + sh:order 0 ; + sh:path gx:fileSize ], + [ sh:description "A list of SPDX identifiers or URL to document." ; + sh:minCount 1 ; + sh:or ( [ sh:in ( "0BSD" "AAL" "Abstyles" "AdaCore-doc" "Adobe-2006" "Adobe-Glyph" "ADSL" "AFL-1.1" "AFL-1.2" "AFL-2.0" "AFL-2.1" "AFL-3.0" "Afmparse" "AGPL-1.0-only" "AGPL-1.0-or-later" "AGPL-3.0-only" "AGPL-3.0-or-later" "Aladdin" "AMDPLPA" "AML" "AMPAS" "ANTLR-PD" "ANTLR-PD-fallback" "Apache-1.0" "Apache-1.1" "Apache-2.0" "APAFML" "APL-1.0" "App-s2p" "APSL-1.0" "APSL-1.1" "APSL-1.2" "APSL-2.0" "Arphic-1999" "Artistic-1.0" "Artistic-1.0-cl8" "Artistic-1.0-Perl" "Artistic-2.0" "ASWF-Digital-Assets-1.0" "ASWF-Digital-Assets-1.1" "Baekmuk" "Bahyph" "Barr" "Beerware" "Bitstream-Charter" "Bitstream-Vera" "BitTorrent-1.0" "BitTorrent-1.1" "blessing" "BlueOak-1.0.0" "Boehm-GC" "Borceux" "Brian-Gladman-3-Clause" "BSD-1-Clause" "BSD-2-Clause" "BSD-2-Clause-Patent" "BSD-2-Clause-Views" "BSD-3-Clause" "BSD-3-Clause-Attribution" "BSD-3-Clause-Clear" "BSD-3-Clause-LBNL" "BSD-3-Clause-Modification" "BSD-3-Clause-No-Military-License" "BSD-3-Clause-No-Nuclear-License" "BSD-3-Clause-No-Nuclear-License-2014" "BSD-3-Clause-No-Nuclear-Warranty" "BSD-3-Clause-Open-MPI" "BSD-4-Clause" "BSD-4-Clause-Shortened" "BSD-4-Clause-UC" "BSD-4.3RENO" "BSD-4.3TAHOE" "BSD-Advertising-Acknowledgement" "BSD-Attribution-HPND-disclaimer" "BSD-Protection" "BSD-Source-Code" "BSL-1.0" "BUSL-1.1" "bzip2-1.0.6" "C-UDA-1.0" "CAL-1.0" "CAL-1.0-Combined-Work-Exception" "Caldera" "CATOSL-1.1" "CC-BY-1.0" "CC-BY-2.0" "CC-BY-2.5" "CC-BY-2.5-AU" "CC-BY-3.0" "CC-BY-3.0-AT" "CC-BY-3.0-DE" "CC-BY-3.0-IGO" "CC-BY-3.0-NL" "CC-BY-3.0-US" "CC-BY-4.0" "CC-BY-NC-1.0" "CC-BY-NC-2.0" "CC-BY-NC-2.5" "CC-BY-NC-3.0" "CC-BY-NC-3.0-DE" "CC-BY-NC-4.0" "CC-BY-NC-ND-1.0" "CC-BY-NC-ND-2.0" "CC-BY-NC-ND-2.5" "CC-BY-NC-ND-3.0" "CC-BY-NC-ND-3.0-DE" "CC-BY-NC-ND-3.0-IGO" "CC-BY-NC-ND-4.0" "CC-BY-NC-SA-1.0" "CC-BY-NC-SA-2.0" "CC-BY-NC-SA-2.0-DE" "CC-BY-NC-SA-2.0-FR" "CC-BY-NC-SA-2.0-UK" "CC-BY-NC-SA-2.5" "CC-BY-NC-SA-3.0" "CC-BY-NC-SA-3.0-DE" "CC-BY-NC-SA-3.0-IGO" "CC-BY-NC-SA-4.0" "CC-BY-ND-1.0" "CC-BY-ND-2.0" "CC-BY-ND-2.5" "CC-BY-ND-3.0" "CC-BY-ND-3.0-DE" "CC-BY-ND-4.0" "CC-BY-SA-1.0" "CC-BY-SA-2.0" "CC-BY-SA-2.0-UK" "CC-BY-SA-2.1-JP" "CC-BY-SA-2.5" "CC-BY-SA-3.0" "CC-BY-SA-3.0-AT" "CC-BY-SA-3.0-DE" "CC-BY-SA-3.0-IGO" "CC-BY-SA-4.0" "CC-PDDC" "CC0-1.0" "CDDL-1.0" "CDDL-1.1" "CDL-1.0" "CDLA-Permissive-1.0" "CDLA-Permissive-2.0" "CDLA-Sharing-1.0" "CECILL-1.0" "CECILL-1.1" "CECILL-2.0" "CECILL-2.1" "CECILL-B" "CECILL-C" "CERN-OHL-1.1" "CERN-OHL-1.2" "CERN-OHL-P-2.0" "CERN-OHL-S-2.0" "CERN-OHL-W-2.0" "CFITSIO" "checkmk" "ClArtistic" "Clips" "CMU-Mach" "CNRI-Jython" "CNRI-Python" "CNRI-Python-GPL-Compatible" "COIL-1.0" "Community-Spec-1.0" "Condor-1.1" "copyleft-next-0.3.0" "copyleft-next-0.3.1" "Cornell-Lossless-JPEG" "CPAL-1.0" "CPL-1.0" "CPOL-1.02" "Crossword" "CrystalStacker" "CUA-OPL-1.0" "Cube" "curl" "D-FSL-1.0" "diffmark" "DL-DE-BY-2.0" "DOC" "Dotseqn" "DRL-1.0" "DSDP" "dtoa" "dvipdfm" "ECL-1.0" "ECL-2.0" "EFL-1.0" "EFL-2.0" "eGenix" "Elastic-2.0" "Entessa" "EPICS" "EPL-1.0" "EPL-2.0" "ErlPL-1.1" "etalab-2.0" "EUDatagrid" "EUPL-1.0" "EUPL-1.1" "EUPL-1.2" "Eurosym" "Fair" "FDK-AAC" "Frameworx-1.0" "FreeBSD-DOC" "FreeImage" "FSFAP" "FSFUL" "FSFULLR" "FSFULLRWD" "FTL" "GD" "GFDL-1.1-invariants-only" "GFDL-1.1-invariants-or-later" "GFDL-1.1-no-invariants-only" "GFDL-1.1-no-invariants-or-later" "GFDL-1.1-only" "GFDL-1.1-or-later" "GFDL-1.2-invariants-only" "GFDL-1.2-invariants-or-later" "GFDL-1.2-no-invariants-only" "GFDL-1.2-no-invariants-or-later" "GFDL-1.2-only" "GFDL-1.2-or-later" "GFDL-1.3-invariants-only" "GFDL-1.3-invariants-or-later" "GFDL-1.3-no-invariants-only" "GFDL-1.3-no-invariants-or-later" "GFDL-1.3-only" "GFDL-1.3-or-later" "Giftware" "GL2PS" "Glide" "Glulxe" "GLWTPL" "gnuplot" "GPL-1.0-only" "GPL-1.0-or-later" "GPL-2.0-only" "GPL-2.0-or-later" "GPL-3.0-only" "GPL-3.0-or-later" "Graphics-Gems" "gSOAP-1.3b" "HaskellReport" "Hippocratic-2.1" "HP-1986" "HPND" "HPND-export-US" "HPND-Markus-Kuhn" "HPND-sell-variant" "HPND-sell-variant-MIT-disclaimer" "HTMLTIDY" "IBM-pibs" "ICU" "IEC-Code-Components-EULA" "IJG" "IJG-short" "ImageMagick" "iMatix" "Imlib2" "Info-ZIP" "Inner-Net-2.0" "Intel" "Intel-ACPI" "Interbase-1.0" "IPA" "IPL-1.0" "ISC" "Jam" "JasPer-2.0" "JPL-image" "JPNIC" "JSON" "Kazlib" "Knuth-CTAN" "LAL-1.2" "LAL-1.3" "Latex2e" "Latex2e-translated-notice" "Leptonica" "LGPL-2.0-only" "LGPL-2.0-or-later" "LGPL-2.1-only" "LGPL-2.1-or-later" "LGPL-3.0-only" "LGPL-3.0-or-later" "LGPLLR" "Libpng" "libpng-2.0" "libselinux-1.0" "libtiff" "libutil-David-Nugent" "LiLiQ-P-1.1" "LiLiQ-R-1.1" "LiLiQ-Rplus-1.1" "Linux-man-pages-1-para" "Linux-man-pages-copyleft" "Linux-man-pages-copyleft-2-para" "Linux-man-pages-copyleft-var" "Linux-OpenIB" "LOOP" "LPL-1.0" "LPL-1.02" "LPPL-1.0" "LPPL-1.1" "LPPL-1.2" "LPPL-1.3a" "LPPL-1.3c" "LZMA-SDK-9.11-to-9.20" "LZMA-SDK-9.22" "MakeIndex" "Martin-Birgmeier" "metamail" "Minpack" "MirOS" "MIT" "MIT-0" "MIT-advertising" "MIT-CMU" "MIT-enna" "MIT-feh" "MIT-Festival" "MIT-Modern-Variant" "MIT-open-group" "MIT-Wu" "MITNFA" "Motosoto" "mpi-permissive" "mpich2" "MPL-1.0" "MPL-1.1" "MPL-2.0" "MPL-2.0-no-copyleft-exception" "mplus" "MS-LPL" "MS-PL" "MS-RL" "MTLL" "MulanPSL-1.0" "MulanPSL-2.0" "Multics" "Mup" "NAIST-2003" "NASA-1.3" "Naumen" "NBPL-1.0" "NCGL-UK-2.0" "NCSA" "Net-SNMP" "NetCDF" "Newsletr" "NGPL" "NICTA-1.0" "NIST-PD" "NIST-PD-fallback" "NIST-Software" "NLOD-1.0" "NLOD-2.0" "NLPL" "Nokia" "NOSL" "Noweb" "NPL-1.0" "NPL-1.1" "NPOSL-3.0" "NRL" "NTP" "NTP-0" "O-UDA-1.0" "OCCT-PL" "OCLC-2.0" "ODbL-1.0" "ODC-By-1.0" "OFFIS" "OFL-1.0" "OFL-1.0-no-RFN" "OFL-1.0-RFN" "OFL-1.1" "OFL-1.1-no-RFN" "OFL-1.1-RFN" "OGC-1.0" "OGDL-Taiwan-1.0" "OGL-Canada-2.0" "OGL-UK-1.0" "OGL-UK-2.0" "OGL-UK-3.0" "OGTSL" "OLDAP-1.1" "OLDAP-1.2" "OLDAP-1.3" "OLDAP-1.4" "OLDAP-2.0" "OLDAP-2.0.1" "OLDAP-2.1" "OLDAP-2.2" "OLDAP-2.2.1" "OLDAP-2.2.2" "OLDAP-2.3" "OLDAP-2.4" "OLDAP-2.5" "OLDAP-2.6" "OLDAP-2.7" "OLDAP-2.8" "OLFL-1.3" "OML" "OpenPBS-2.3" "OpenSSL" "OPL-1.0" "OPL-UK-3.0" "OPUBL-1.0" "OSET-PL-2.1" "OSL-1.0" "OSL-1.1" "OSL-2.0" "OSL-2.1" "OSL-3.0" "Parity-6.0.0" "Parity-7.0.0" "PDDL-1.0" "PHP-3.0" "PHP-3.01" "Plexus" "PolyForm-Noncommercial-1.0.0" "PolyForm-Small-Business-1.0.0" "PostgreSQL" "PSF-2.0" "psfrag" "psutils" "Python-2.0" "Python-2.0.1" "Qhull" "QPL-1.0" "QPL-1.0-INRIA-2004" "Rdisc" "RHeCos-1.1" "RPL-1.1" "RPL-1.5" "RPSL-1.0" "RSA-MD" "RSCPL" "Ruby" "SAX-PD" "Saxpath" "SCEA" "SchemeReport" "Sendmail" "Sendmail-8.23" "SGI-B-1.0" "SGI-B-1.1" "SGI-B-2.0" "SGP4" "SHL-0.5" "SHL-0.51" "SimPL-2.0" "SISSL" "SISSL-1.2" "Sleepycat" "SMLNJ" "SMPPL" "SNIA" "snprintf" "Spencer-86" "Spencer-94" "Spencer-99" "SPL-1.0" "SSH-OpenSSH" "SSH-short" "SSPL-1.0" "SugarCRM-1.1.3" "SunPro" "SWL" "Symlinks" "TAPR-OHL-1.0" "TCL" "TCP-wrappers" "TermReadKey" "TMate" "TORQUE-1.1" "TOSL" "TPDL" "TPL-1.0" "TTWL" "TU-Berlin-1.0" "TU-Berlin-2.0" "UCAR" "UCL-1.0" "Unicode-DFS-2015" "Unicode-DFS-2016" "Unicode-TOU" "UnixCrypt" "Unlicense" "UPL-1.0" "Vim" "VOSTROM" "VSL-1.0" "W3C" "W3C-19980720" "W3C-20150513" "w3m" "Watcom-1.0" "Widget-Workshop" "Wsuipa" "WTFPL" "X11" "X11-distribute-modifications-variant" "Xdebug-1.03" "Xerox" "Xfig" "XFree86-1.1" "xinetd" "xlock" "Xnet" "xpp" "XSkat" "YPL-1.0" "YPL-1.1" "Zed" "Zend-2.0" "Zimbra-1.3" "Zimbra-1.4" "Zlib" "zlib-acknowledgement" "ZPL-1.1" "ZPL-2.0" "ZPL-2.1" ) ] [ sh:datatype xsd:anyURI ] ) ; + sh:order 21 ; + sh:path gx:license ] ; + sh:targetClass gx:Image . + +gx:InstantiationRequirement a sh:NodeShape ; + sh:closed false ; + sh:description "A container class to gather all requirements for compute service offering instantiations." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Instantiation Requirement" ; + sh:targetClass gx:InstantiationRequirement . + +gx:Issuer a sh:NodeShape ; + sh:closed false ; + sh:description "An issuer of W3C Verifiable Credentials and Verifiable Presentations." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:description "Gaia-X terms and conditions signed by issuer." ; + sh:in ( "4bd7554097444c960292b4726c2efa1373485e8a5565d94d41195214c5e0ceb3" ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "terms and conditions" ; + sh:order 0 ; + sh:path gx:issuerTermsAndConditions ] ; + sh:targetClass gx:Issuer . + +gx:PXEImage a sh:NodeShape ; + sh:closed false ; + sh:description "PXE image for physical machines." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "PXE image" ; + sh:property [ sh:class gx:GPU ; + sh:description "Details with respect to GPU capabilities required to run the image." ; + sh:maxCount 1 ; + sh:name "GPU requirements" ; + sh:order 4 ; + sh:path gx:gpuReq ], + [ sh:class gx:Memory ; + sh:description "Minimal size of RAM required to run the image." ; + sh:maxCount 1 ; + sh:name "Ram requirements" ; + sh:order 5 ; + sh:path gx:ramReq ], + [ sh:description "A list of copyright owners either as a free form string or as resolvable link to Gaia-X Credential of participants. A copyright owner is a person or organization that has the right to exploit the resource. Copyright owner does not necessarily refer to the author of the resource, who is a natural person and may differ from copyright owner." ; + sh:minCount 1 ; + sh:name "copyright owned by" ; + sh:or ( [ sh:class gx:LegalPerson ] [ sh:datatype xsd:string ] ) ; + sh:order 21 ; + sh:path gx:copyrightOwnedBy ], + [ sh:datatype xsd:boolean ; + sh:description "If true, a virtual performance monitoring unit (vPMU) is enable in guest. Default: False" ; + sh:maxCount 1 ; + sh:name "Virtual performance monitoring unit" ; + sh:order 11 ; + sh:path gx:vPMU ], + [ sh:class gx:CheckSum ; + sh:description "Details with respect to check sum of the image." ; + sh:maxCount 1 ; + sh:order 9 ; + sh:path gx:checkSum ], + [ sh:class gx:Encryption ; + sh:description "Details with respect to encryption of the images." ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path gx:encryption ], + [ sh:description "Disk format. Default \"ISO\"." ; + sh:in ( "WINPE" "ISO" ) ; + sh:maxCount 1 ; + sh:name "disk format" ; + sh:order 0 ; + sh:path gx:pxeImageDiskFormat ], + [ sh:datatype xsd:string ; + sh:description "A list of policy expressed using a DSL (e.g., Rego or ODRL) (access control, throttling, usage, retention, ...). If there is no specified usage policy constraints on the VirtualResource, the policy should express a simple default: allow intent" ; + sh:minCount 1 ; + sh:order 23 ; + sh:path gx:resourcePolicy ], + [ sh:datatype xsd:dateTime ; + sh:description "Date and time the software was build, formated according to ISO 8601 (UTC - 24 hours)." ; + sh:maxCount 1 ; + sh:name "Build Date" ; + sh:order 20 ; + sh:path gx:buildDate ], + [ sh:class gx:CheckSum ; + sh:description "Details on checksum of the software." ; + sh:maxCount 1 ; + sh:order 16 ; + sh:path gx:checksum ], + [ sh:datatype xsd:boolean ; + sh:description "If true, instances of the image are only started, if signature of software, such as firmware or operating system, are valid. Default: False." ; + sh:maxCount 1 ; + sh:name "Secure Boot" ; + sh:order 10 ; + sh:path gx:secureBoot ], + [ sh:class gx:MemorySize ; + sh:description "Size of the image." ; + sh:maxCount 1 ; + sh:name "file size" ; + sh:order 1 ; + sh:path gx:fileSize ], + [ sh:datatype xsd:boolean ; + sh:description "An image is a software that may require a commercial license to be used. This attribute indicates, if service usage fee includes that license (true) or customer has to bring its own license (False). Default: False" ; + sh:maxCount 1 ; + sh:name "License included" ; + sh:order 14 ; + sh:path gx:licenseIncluded ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 26 ; + sh:path gx:description ], + [ sh:description "A list of SPDX identifiers or URL to document." ; + sh:minCount 1 ; + sh:or ( [ sh:in ( "0BSD" "AAL" "Abstyles" "AdaCore-doc" "Adobe-2006" "Adobe-Glyph" "ADSL" "AFL-1.1" "AFL-1.2" "AFL-2.0" "AFL-2.1" "AFL-3.0" "Afmparse" "AGPL-1.0-only" "AGPL-1.0-or-later" "AGPL-3.0-only" "AGPL-3.0-or-later" "Aladdin" "AMDPLPA" "AML" "AMPAS" "ANTLR-PD" "ANTLR-PD-fallback" "Apache-1.0" "Apache-1.1" "Apache-2.0" "APAFML" "APL-1.0" "App-s2p" "APSL-1.0" "APSL-1.1" "APSL-1.2" "APSL-2.0" "Arphic-1999" "Artistic-1.0" "Artistic-1.0-cl8" "Artistic-1.0-Perl" "Artistic-2.0" "ASWF-Digital-Assets-1.0" "ASWF-Digital-Assets-1.1" "Baekmuk" "Bahyph" "Barr" "Beerware" "Bitstream-Charter" "Bitstream-Vera" "BitTorrent-1.0" "BitTorrent-1.1" "blessing" "BlueOak-1.0.0" "Boehm-GC" "Borceux" "Brian-Gladman-3-Clause" "BSD-1-Clause" "BSD-2-Clause" "BSD-2-Clause-Patent" "BSD-2-Clause-Views" "BSD-3-Clause" "BSD-3-Clause-Attribution" "BSD-3-Clause-Clear" "BSD-3-Clause-LBNL" "BSD-3-Clause-Modification" "BSD-3-Clause-No-Military-License" "BSD-3-Clause-No-Nuclear-License" "BSD-3-Clause-No-Nuclear-License-2014" "BSD-3-Clause-No-Nuclear-Warranty" "BSD-3-Clause-Open-MPI" "BSD-4-Clause" "BSD-4-Clause-Shortened" "BSD-4-Clause-UC" "BSD-4.3RENO" "BSD-4.3TAHOE" "BSD-Advertising-Acknowledgement" "BSD-Attribution-HPND-disclaimer" "BSD-Protection" "BSD-Source-Code" "BSL-1.0" "BUSL-1.1" "bzip2-1.0.6" "C-UDA-1.0" "CAL-1.0" "CAL-1.0-Combined-Work-Exception" "Caldera" "CATOSL-1.1" "CC-BY-1.0" "CC-BY-2.0" "CC-BY-2.5" "CC-BY-2.5-AU" "CC-BY-3.0" "CC-BY-3.0-AT" "CC-BY-3.0-DE" "CC-BY-3.0-IGO" "CC-BY-3.0-NL" "CC-BY-3.0-US" "CC-BY-4.0" "CC-BY-NC-1.0" "CC-BY-NC-2.0" "CC-BY-NC-2.5" "CC-BY-NC-3.0" "CC-BY-NC-3.0-DE" "CC-BY-NC-4.0" "CC-BY-NC-ND-1.0" "CC-BY-NC-ND-2.0" "CC-BY-NC-ND-2.5" "CC-BY-NC-ND-3.0" "CC-BY-NC-ND-3.0-DE" "CC-BY-NC-ND-3.0-IGO" "CC-BY-NC-ND-4.0" "CC-BY-NC-SA-1.0" "CC-BY-NC-SA-2.0" "CC-BY-NC-SA-2.0-DE" "CC-BY-NC-SA-2.0-FR" "CC-BY-NC-SA-2.0-UK" "CC-BY-NC-SA-2.5" "CC-BY-NC-SA-3.0" "CC-BY-NC-SA-3.0-DE" "CC-BY-NC-SA-3.0-IGO" "CC-BY-NC-SA-4.0" "CC-BY-ND-1.0" "CC-BY-ND-2.0" "CC-BY-ND-2.5" "CC-BY-ND-3.0" "CC-BY-ND-3.0-DE" "CC-BY-ND-4.0" "CC-BY-SA-1.0" "CC-BY-SA-2.0" "CC-BY-SA-2.0-UK" "CC-BY-SA-2.1-JP" "CC-BY-SA-2.5" "CC-BY-SA-3.0" "CC-BY-SA-3.0-AT" "CC-BY-SA-3.0-DE" "CC-BY-SA-3.0-IGO" "CC-BY-SA-4.0" "CC-PDDC" "CC0-1.0" "CDDL-1.0" "CDDL-1.1" "CDL-1.0" "CDLA-Permissive-1.0" "CDLA-Permissive-2.0" "CDLA-Sharing-1.0" "CECILL-1.0" "CECILL-1.1" "CECILL-2.0" "CECILL-2.1" "CECILL-B" "CECILL-C" "CERN-OHL-1.1" "CERN-OHL-1.2" "CERN-OHL-P-2.0" "CERN-OHL-S-2.0" "CERN-OHL-W-2.0" "CFITSIO" "checkmk" "ClArtistic" "Clips" "CMU-Mach" "CNRI-Jython" "CNRI-Python" "CNRI-Python-GPL-Compatible" "COIL-1.0" "Community-Spec-1.0" "Condor-1.1" "copyleft-next-0.3.0" "copyleft-next-0.3.1" "Cornell-Lossless-JPEG" "CPAL-1.0" "CPL-1.0" "CPOL-1.02" "Crossword" "CrystalStacker" "CUA-OPL-1.0" "Cube" "curl" "D-FSL-1.0" "diffmark" "DL-DE-BY-2.0" "DOC" "Dotseqn" "DRL-1.0" "DSDP" "dtoa" "dvipdfm" "ECL-1.0" "ECL-2.0" "EFL-1.0" "EFL-2.0" "eGenix" "Elastic-2.0" "Entessa" "EPICS" "EPL-1.0" "EPL-2.0" "ErlPL-1.1" "etalab-2.0" "EUDatagrid" "EUPL-1.0" "EUPL-1.1" "EUPL-1.2" "Eurosym" "Fair" "FDK-AAC" "Frameworx-1.0" "FreeBSD-DOC" "FreeImage" "FSFAP" "FSFUL" "FSFULLR" "FSFULLRWD" "FTL" "GD" "GFDL-1.1-invariants-only" "GFDL-1.1-invariants-or-later" "GFDL-1.1-no-invariants-only" "GFDL-1.1-no-invariants-or-later" "GFDL-1.1-only" "GFDL-1.1-or-later" "GFDL-1.2-invariants-only" "GFDL-1.2-invariants-or-later" "GFDL-1.2-no-invariants-only" "GFDL-1.2-no-invariants-or-later" "GFDL-1.2-only" "GFDL-1.2-or-later" "GFDL-1.3-invariants-only" "GFDL-1.3-invariants-or-later" "GFDL-1.3-no-invariants-only" "GFDL-1.3-no-invariants-or-later" "GFDL-1.3-only" "GFDL-1.3-or-later" "Giftware" "GL2PS" "Glide" "Glulxe" "GLWTPL" "gnuplot" "GPL-1.0-only" "GPL-1.0-or-later" "GPL-2.0-only" "GPL-2.0-or-later" "GPL-3.0-only" "GPL-3.0-or-later" "Graphics-Gems" "gSOAP-1.3b" "HaskellReport" "Hippocratic-2.1" "HP-1986" "HPND" "HPND-export-US" "HPND-Markus-Kuhn" "HPND-sell-variant" "HPND-sell-variant-MIT-disclaimer" "HTMLTIDY" "IBM-pibs" "ICU" "IEC-Code-Components-EULA" "IJG" "IJG-short" "ImageMagick" "iMatix" "Imlib2" "Info-ZIP" "Inner-Net-2.0" "Intel" "Intel-ACPI" "Interbase-1.0" "IPA" "IPL-1.0" "ISC" "Jam" "JasPer-2.0" "JPL-image" "JPNIC" "JSON" "Kazlib" "Knuth-CTAN" "LAL-1.2" "LAL-1.3" "Latex2e" "Latex2e-translated-notice" "Leptonica" "LGPL-2.0-only" "LGPL-2.0-or-later" "LGPL-2.1-only" "LGPL-2.1-or-later" "LGPL-3.0-only" "LGPL-3.0-or-later" "LGPLLR" "Libpng" "libpng-2.0" "libselinux-1.0" "libtiff" "libutil-David-Nugent" "LiLiQ-P-1.1" "LiLiQ-R-1.1" "LiLiQ-Rplus-1.1" "Linux-man-pages-1-para" "Linux-man-pages-copyleft" "Linux-man-pages-copyleft-2-para" "Linux-man-pages-copyleft-var" "Linux-OpenIB" "LOOP" "LPL-1.0" "LPL-1.02" "LPPL-1.0" "LPPL-1.1" "LPPL-1.2" "LPPL-1.3a" "LPPL-1.3c" "LZMA-SDK-9.11-to-9.20" "LZMA-SDK-9.22" "MakeIndex" "Martin-Birgmeier" "metamail" "Minpack" "MirOS" "MIT" "MIT-0" "MIT-advertising" "MIT-CMU" "MIT-enna" "MIT-feh" "MIT-Festival" "MIT-Modern-Variant" "MIT-open-group" "MIT-Wu" "MITNFA" "Motosoto" "mpi-permissive" "mpich2" "MPL-1.0" "MPL-1.1" "MPL-2.0" "MPL-2.0-no-copyleft-exception" "mplus" "MS-LPL" "MS-PL" "MS-RL" "MTLL" "MulanPSL-1.0" "MulanPSL-2.0" "Multics" "Mup" "NAIST-2003" "NASA-1.3" "Naumen" "NBPL-1.0" "NCGL-UK-2.0" "NCSA" "Net-SNMP" "NetCDF" "Newsletr" "NGPL" "NICTA-1.0" "NIST-PD" "NIST-PD-fallback" "NIST-Software" "NLOD-1.0" "NLOD-2.0" "NLPL" "Nokia" "NOSL" "Noweb" "NPL-1.0" "NPL-1.1" "NPOSL-3.0" "NRL" "NTP" "NTP-0" "O-UDA-1.0" "OCCT-PL" "OCLC-2.0" "ODbL-1.0" "ODC-By-1.0" "OFFIS" "OFL-1.0" "OFL-1.0-no-RFN" "OFL-1.0-RFN" "OFL-1.1" "OFL-1.1-no-RFN" "OFL-1.1-RFN" "OGC-1.0" "OGDL-Taiwan-1.0" "OGL-Canada-2.0" "OGL-UK-1.0" "OGL-UK-2.0" "OGL-UK-3.0" "OGTSL" "OLDAP-1.1" "OLDAP-1.2" "OLDAP-1.3" "OLDAP-1.4" "OLDAP-2.0" "OLDAP-2.0.1" "OLDAP-2.1" "OLDAP-2.2" "OLDAP-2.2.1" "OLDAP-2.2.2" "OLDAP-2.3" "OLDAP-2.4" "OLDAP-2.5" "OLDAP-2.6" "OLDAP-2.7" "OLDAP-2.8" "OLFL-1.3" "OML" "OpenPBS-2.3" "OpenSSL" "OPL-1.0" "OPL-UK-3.0" "OPUBL-1.0" "OSET-PL-2.1" "OSL-1.0" "OSL-1.1" "OSL-2.0" "OSL-2.1" "OSL-3.0" "Parity-6.0.0" "Parity-7.0.0" "PDDL-1.0" "PHP-3.0" "PHP-3.01" "Plexus" "PolyForm-Noncommercial-1.0.0" "PolyForm-Small-Business-1.0.0" "PostgreSQL" "PSF-2.0" "psfrag" "psutils" "Python-2.0" "Python-2.0.1" "Qhull" "QPL-1.0" "QPL-1.0-INRIA-2004" "Rdisc" "RHeCos-1.1" "RPL-1.1" "RPL-1.5" "RPSL-1.0" "RSA-MD" "RSCPL" "Ruby" "SAX-PD" "Saxpath" "SCEA" "SchemeReport" "Sendmail" "Sendmail-8.23" "SGI-B-1.0" "SGI-B-1.1" "SGI-B-2.0" "SGP4" "SHL-0.5" "SHL-0.51" "SimPL-2.0" "SISSL" "SISSL-1.2" "Sleepycat" "SMLNJ" "SMPPL" "SNIA" "snprintf" "Spencer-86" "Spencer-94" "Spencer-99" "SPL-1.0" "SSH-OpenSSH" "SSH-short" "SSPL-1.0" "SugarCRM-1.1.3" "SunPro" "SWL" "Symlinks" "TAPR-OHL-1.0" "TCL" "TCP-wrappers" "TermReadKey" "TMate" "TORQUE-1.1" "TOSL" "TPDL" "TPL-1.0" "TTWL" "TU-Berlin-1.0" "TU-Berlin-2.0" "UCAR" "UCL-1.0" "Unicode-DFS-2015" "Unicode-DFS-2016" "Unicode-TOU" "UnixCrypt" "Unlicense" "UPL-1.0" "Vim" "VOSTROM" "VSL-1.0" "W3C" "W3C-19980720" "W3C-20150513" "w3m" "Watcom-1.0" "Widget-Workshop" "Wsuipa" "WTFPL" "X11" "X11-distribute-modifications-variant" "Xdebug-1.03" "Xerox" "Xfig" "XFree86-1.1" "xinetd" "xlock" "Xnet" "xpp" "XSkat" "YPL-1.0" "YPL-1.1" "Zed" "Zend-2.0" "Zimbra-1.3" "Zimbra-1.4" "Zlib" "zlib-acknowledgement" "ZPL-1.1" "ZPL-2.0" "ZPL-2.1" ) ] [ sh:datatype xsd:anyURI ] ) ; + sh:order 22 ; + sh:path gx:license ], + [ sh:datatype xsd:string ; + sh:description "Software specific patch number describing patch level of the software." ; + sh:maxCount 1 ; + sh:name "Patch level" ; + sh:order 19 ; + sh:path gx:patchLevel ], + [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 25 ; + sh:path gx:name ], + [ sh:class gx:MaintenanceSubscription ; + sh:description "Details on maintenance capabilities of vendor of image's operating system." ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path gx:maintenance ], + [ sh:class gx:Signature ; + sh:description "Details with respect to signature of the software." ; + sh:maxCount 1 ; + sh:order 17 ; + sh:path gx:signature ], + [ sh:datatype xsd:string ; + sh:description "Version of the software." ; + sh:maxCount 1 ; + sh:order 18 ; + sh:path gx:version ], + [ sh:datatype xsd:boolean ; + sh:description "If true, one queue is set for each virtual CPU." ; + sh:maxCount 1 ; + sh:name "Multi queues" ; + sh:order 12 ; + sh:path gx:multiQueues ], + [ sh:class gx:Disk ; + sh:description "Minimal size of root disk required to run the image." ; + sh:maxCount 1 ; + sh:name "root disk requirements" ; + sh:order 7 ; + sh:path gx:rootDiskReq ], + [ sh:class gx:MemorySize ; + sh:description "Maximum amount of RAM for the video image." ; + sh:maxCount 1 ; + sh:name "Video RAM size" ; + sh:order 6 ; + sh:path gx:videoRamSize ], + [ sh:class gx:CPU ; + sh:description "Details with respect to CPU capabilities required to run the image." ; + sh:maxCount 1 ; + sh:name "CPU requirements" ; + sh:order 3 ; + sh:path gx:cpuReq ], + [ sh:class gx:OperatingSystem ; + sh:description "A resolvable link to Gaia-X credential of operation system offered by this image." ; + sh:maxCount 1 ; + sh:name "Operating System" ; + sh:order 2 ; + sh:path gx:operatingSystem ], + [ sh:class gx:UpdateStrategy ; + sh:description "Details on provider's image update strategy of this image. An update strategy defines ..." ; + sh:maxCount 1 ; + sh:order 13 ; + sh:path gx:updateStrategy ], + [ sh:description "A resolvable link of resources related to the resource and that can exist independently of it." ; + sh:name "aggregation of" ; + sh:or ( [ sh:class gx:VirtualResource ] [ sh:class gx:PhysicalResource ] ) ; + sh:order 24 ; + sh:path gx:aggregationOfResources ] ; + sh:targetClass gx:PXEImage . + +gx:RegistrationNumber a sh:NodeShape ; + sh:closed false ; + sh:description "Country's registration number, which identifies one specific entity. Allowed entries are Local, VatID, lei code, EODI, and EUID." ; + sh:ignoredProperties ( rdf:type ) ; + sh:targetClass gx:RegistrationNumber . + +gx:Resource a sh:NodeShape ; + sh:closed false ; + sh:description "Description of a good or object of the Gaia-X Ecosystem, and may be aggregated in a Service Offering or exist independently of it." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 1 ; + sh:path gx:name ], + [ sh:description "A resolvable link of resources related to the resource and that can exist independently of it." ; + sh:name "aggregation of" ; + sh:or ( [ sh:class gx:VirtualResource ] [ sh:class gx:PhysicalResource ] ) ; + sh:order 0 ; + sh:path gx:aggregationOfResources ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 2 ; + sh:path gx:description ] ; + sh:targetClass gx:Resource . + + a sh:NodeShape ; + sh:closed false ; + sh:description "Definition of 'Power', according to http://qudt.org/quantitykind/Power." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:float ; + sh:description "Value of physical quantity. See https://qudt.org/schema/qudt/value" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:minInclusive 0 ; + sh:order 0 ; + sh:path ], + [ sh:datatype xsd:string ; + sh:description "Unit of physical quantity. See https://qudt.org/schema/qudt/Unit" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 1 ; + sh:path ] ; + sh:targetClass . + +gx:ConfidentialComputing a sh:NodeShape ; + sh:closed false ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:anyURI ; + sh:description "indicates whether confidential server has an associated attestation service." ; + sh:maxCount 1 ; + sh:name "attestation service URI" ; + sh:order 1 ; + sh:path gx:attestationServiceURI ], + [ sh:datatype xsd:string ; + sh:description "Particular confidential computing technology used by the flavors as defined in..." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 0 ; + sh:path gx:technology ] ; + sh:targetClass gx:ConfidentialComputing . + +gx:Consent a sh:NodeShape ; + sh:closed false ; + sh:description "Information on the legitimate processing of information related to PII." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Consent" ; + sh:property [ sh:datatype xsd:string ; + sh:description "Purposes of the processing. It is recommended to use well know controlled vocabulary such as the Data Privacy Vocabulary:Purposes" ; + sh:minCount 1 ; + sh:name "purpose" ; + sh:order 2 ; + sh:path gx:purpose ], + [ sh:datatype xsd:string ; + sh:description "ContactPoint of the Data Protection Officer or Participant responsible for the management of personal or sensitive data" ; + sh:minCount 1 ; + sh:name "data protection contact point" ; + sh:order 1 ; + sh:path gx:dataProtectionContactPoint ], + [ sh:datatype xsd:string ; + sh:description "ContactPoint of the Participant to whom to formulate a withdrawal consent request" ; + sh:minCount 1 ; + sh:name "consent withdrawal contact point" ; + sh:order 3 ; + sh:path gx:consentWithdrawalContactPoint ], + [ sh:datatype xsd:string ; + sh:description "One of the reasons as detailed in the identified Personal Data Protection Regimes, formatted as a string matching :
" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "legal Basis" ; + sh:order 0 ; + sh:path gx:legalBasis ] ; + sh:targetClass gx:Consent . + +gx:DataExchangeComponent a sh:NodeShape ; + sh:closed false ; + sh:description "A service/resource used to make a data resource available." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Data Exchange Component" ; + sh:targetClass gx:DataExchangeComponent . + +gx:EORI a sh:NodeShape ; + sh:closed false ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "The Economic Operators Registration and Identification number (EORI)." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 0 ; + sh:path gx:eori ] ; + sh:targetClass gx:EORI . + +gx:EUID a sh:NodeShape ; + sh:closed false ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "The European Unique Identifier (EUID) for business located in the European Economic Area, Iceland, Liechtenstein or Norway and registered in the Business Registers Interconnection System (BRIS). This number can be found via the EU Business registers portal." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 0 ; + sh:path gx:euid ] ; + sh:targetClass gx:EUID . + +gx:GPSLocation a sh:NodeShape ; + sh:closed false ; + sh:description "Physical GPS coordinates in ISO 6709:2008/Cor 1:2009 format." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Coordinate Reference System identifier. Framework used to precisely measure locations on the surface of Earth as coordinates." ; + sh:maxCount 1 ; + sh:name "crs" ; + sh:order 3 ; + sh:path gx:crs ; + sh:pattern "^CRS" ], + [ sh:datatype xsd:string ; + sh:description "For three-dimensional point locations, a value representing vertical position through either height or depth. Positive direction and units are defined by CRS identifier." ; + sh:maxCount 1 ; + sh:name "altitude" ; + sh:order 2 ; + sh:path gx:altitude ], + [ sh:description "Coordinate representing x horizontal position such as latitude. Negative number south of equator and positive north of equator." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "latitude" ; + sh:or ( [ sh:datatype xsd:string ] [ sh:class gx:GPSUnit ] ) ; + sh:order 0 ; + sh:path gx:latitude ], + [ sh:description "Coordinate representing y horizontal position such as longitude. Negative values west of Prime Meridian and positive values east of Prime Meridian." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "longitude" ; + sh:or ( [ sh:datatype xsd:string ] [ sh:class gx:GPSUnit ] ) ; + sh:order 1 ; + sh:path gx:longitude ] ; + sh:targetClass gx:GPSLocation . + +gx:LatestN a sh:NodeShape ; + sh:closed false ; + sh:description "Number of latest N outdated image versions, which will be valid." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:integer ; + sh:maxCount 1 ; + sh:minInclusive 1 ; + sh:order 0 ; + sh:path gx:value ] ; + sh:targetClass gx:LatestN . + +gx:LeiCode a sh:NodeShape ; + sh:closed false ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Unique LEI number as defined by https://www.gleif.org." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 0 ; + sh:path ] ; + sh:targetClass gx:LeiCode . + +gx:LocalRegistrationNumber a sh:NodeShape ; + sh:closed false ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "The state issued company number." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 0 ; + sh:path gx:local ] ; + sh:targetClass gx:LocalRegistrationNumber . + +gx:Participant a sh:NodeShape ; + sh:closed false ; + sh:description "An legal or natural person that is onboarded to Gaia-X and offers, consumes services or operates resources." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 1 ; + sh:path gx:description ], + [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 0 ; + sh:path gx:name ] ; + sh:targetClass gx:Participant . + +gx:ServerFlavor a sh:NodeShape ; + sh:closed false ; + sh:description "Description of the available hardware configuration, such as processor, ram and disk capacities, of a physical or virtual servers that can be launched." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Server Flavor" ; + sh:property [ sh:class gx:ConfidentialComputing ; + sh:description "Details with respect to confidential computing capabilities of the flavor." ; + sh:maxCount 1 ; + sh:name "confidential computing" ; + sh:order 6 ; + sh:path gx:confidentialComputing ], + [ sh:class gx:Memory ; + sh:description "Size of RAM of the flavor." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 1 ; + sh:path gx:ram ], + [ sh:datatype xsd:string ; + sh:description "Network capabilities of the flavor." ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path gx:network ], + [ sh:description "Type of physical phenomena hardware random number generator (RNG) of this flavor is based on." ; + sh:in ( "Electrical noise" "Chaos-based" "Free-running oscillators" "Quantum" "None" ) ; + sh:maxCount 1 ; + sh:name "Hardware based random number generator (RNG)" ; + sh:order 9 ; + sh:path gx:hwRngTypeOfFlavor ], + [ sh:class gx:GPU ; + sh:description "GPU capabilities of the flavor." ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path gx:gpu ], + [ sh:class gx:Disk ; + sh:description "Additional volume capabilities of boot volume of the flavor." ; + sh:name "additional volume" ; + sh:order 5 ; + sh:path gx:additionalVolume ], + [ sh:datatype xsd:boolean ; + sh:description "Hardware-assisted virtualization, a.k.a. accelerated virtualization or hardware virtualization, enables full virtualization. Full virtualization means to run an unmodified guest operation system in complete isolation by emulating a complete hardware environment." ; + sh:maxCount 1 ; + sh:name "Hardware-assisted virtualization" ; + sh:order 8 ; + sh:path gx:hardwareAssistedVirtualization ], + [ sh:class gx:SoftwareResource ; + sh:description "A resolvable link to Gaia-X credential of used hypervisor as Gaia-X software resources." ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path gx:hypervisor ], + [ sh:class gx:CPU ; + sh:description "CPU capabilities of the flavor." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "CPU requirements" ; + sh:order 0 ; + sh:path gx:cpu ], + [ sh:class gx:Disk ; + sh:description "Boot volume capabilities of boot volume of the flavor." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "boot volume" ; + sh:order 4 ; + sh:path gx:bootVolume ] ; + sh:targetClass gx:ServerFlavor . + +gx:StandardConformity a sh:NodeShape ; + sh:closed false ; + sh:description "Details about standard applied to Gaia-X entities." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Name of the standard." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "title" ; + sh:order 0 ; + sh:path gx:title ], + [ sh:datatype xsd:anyURI ; + sh:description "Provides a link to schemas or details about applied standards." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "standard reference" ; + sh:order 1 ; + sh:path gx:standardReference ], + [ sh:datatype xsd:string ; + sh:description "Publisher of the standard." ; + sh:maxCount 1 ; + sh:name "publisher" ; + sh:order 2 ; + sh:path gx:publisher ] ; + sh:targetClass gx:StandardConformity . + +gx:VMImage a sh:NodeShape ; + sh:closed false ; + sh:description "Image for virtual machines." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "VM image" ; + sh:property [ sh:class gx:GPU ; + sh:description "Details with respect to GPU capabilities required to run the image." ; + sh:maxCount 1 ; + sh:name "GPU requirements" ; + sh:order 8 ; + sh:path gx:gpuReq ], + [ sh:description "Disk format og the VM inage. Default \"RAW\"" ; + sh:in ( "RAW" "QCOW2" "VHD" "VMDK" "ISO" "CVF" "CVA" ) ; + sh:maxCount 1 ; + sh:name "VM Image disk format" ; + sh:order 0 ; + sh:path gx:vmImageDiskFormat ], + [ sh:class gx:MaintenanceSubscription ; + sh:description "Details on maintenance capabilities of vendor of image's operating system." ; + sh:maxCount 1 ; + sh:order 19 ; + sh:path gx:maintenance ], + [ sh:description "A resolvable link of resources related to the resource and that can exist independently of it." ; + sh:name "aggregation of" ; + sh:or ( [ sh:class gx:VirtualResource ] [ sh:class gx:PhysicalResource ] ) ; + sh:order 28 ; + sh:path gx:aggregationOfResources ], + [ sh:datatype xsd:boolean ; + sh:description "If true, a virtual performance monitoring unit (vPMU) is enable in guest. Default: False" ; + sh:maxCount 1 ; + sh:name "Virtual performance monitoring unit" ; + sh:order 15 ; + sh:path gx:vPMU ], + [ sh:class gx:Signature ; + sh:description "Details with respect to signature of the software." ; + sh:maxCount 1 ; + sh:order 21 ; + sh:path gx:signature ], + [ sh:class gx:CheckSum ; + sh:description "Details on checksum of the software." ; + sh:maxCount 1 ; + sh:order 20 ; + sh:path gx:checksum ], + [ sh:class gx:Encryption ; + sh:description "Details with respect to encryption of the images." ; + sh:maxCount 1 ; + sh:order 12 ; + sh:path gx:encryption ], + [ sh:description "A list of copyright owners either as a free form string or as resolvable link to Gaia-X Credential of participants. A copyright owner is a person or organization that has the right to exploit the resource. Copyright owner does not necessarily refer to the author of the resource, who is a natural person and may differ from copyright owner." ; + sh:minCount 1 ; + sh:name "copyright owned by" ; + sh:or ( [ sh:class gx:LegalPerson ] [ sh:datatype xsd:string ] ) ; + sh:order 25 ; + sh:path gx:copyrightOwnedBy ], + [ sh:datatype xsd:boolean ; + sh:description "If true, instances of the image are only started, if signature of software, such as firmware or operating system, are valid. Default: False." ; + sh:maxCount 1 ; + sh:name "Secure Boot" ; + sh:order 14 ; + sh:path gx:secureBoot ], + [ sh:description "Type of physical phenomena hardware random number generator (RNG) this image prefers." ; + sh:in ( "Electrical noise" "Chaos-based" "Free-running oscillators" "Quantum" "None" ) ; + sh:maxCount 1 ; + sh:name "Hardware based random number generator (RNG)" ; + sh:order 3 ; + sh:path gx:hwRngTypeOfImage ], + [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 29 ; + sh:path gx:name ], + [ sh:datatype xsd:boolean ; + sh:description "If true, one queue is set for each virtual CPU." ; + sh:maxCount 1 ; + sh:name "Multi queues" ; + sh:order 16 ; + sh:path gx:multiQueues ], + [ sh:description "Type of firmware which which guests are booted." ; + sh:in ( "BIOS" "UEFI" "other" ) ; + sh:maxCount 1 ; + sh:name "Firmware type" ; + sh:order 2 ; + sh:path gx:firmwareType ], + [ sh:description "A list of SPDX identifiers or URL to document." ; + sh:minCount 1 ; + sh:or ( [ sh:in ( "0BSD" "AAL" "Abstyles" "AdaCore-doc" "Adobe-2006" "Adobe-Glyph" "ADSL" "AFL-1.1" "AFL-1.2" "AFL-2.0" "AFL-2.1" "AFL-3.0" "Afmparse" "AGPL-1.0-only" "AGPL-1.0-or-later" "AGPL-3.0-only" "AGPL-3.0-or-later" "Aladdin" "AMDPLPA" "AML" "AMPAS" "ANTLR-PD" "ANTLR-PD-fallback" "Apache-1.0" "Apache-1.1" "Apache-2.0" "APAFML" "APL-1.0" "App-s2p" "APSL-1.0" "APSL-1.1" "APSL-1.2" "APSL-2.0" "Arphic-1999" "Artistic-1.0" "Artistic-1.0-cl8" "Artistic-1.0-Perl" "Artistic-2.0" "ASWF-Digital-Assets-1.0" "ASWF-Digital-Assets-1.1" "Baekmuk" "Bahyph" "Barr" "Beerware" "Bitstream-Charter" "Bitstream-Vera" "BitTorrent-1.0" "BitTorrent-1.1" "blessing" "BlueOak-1.0.0" "Boehm-GC" "Borceux" "Brian-Gladman-3-Clause" "BSD-1-Clause" "BSD-2-Clause" "BSD-2-Clause-Patent" "BSD-2-Clause-Views" "BSD-3-Clause" "BSD-3-Clause-Attribution" "BSD-3-Clause-Clear" "BSD-3-Clause-LBNL" "BSD-3-Clause-Modification" "BSD-3-Clause-No-Military-License" "BSD-3-Clause-No-Nuclear-License" "BSD-3-Clause-No-Nuclear-License-2014" "BSD-3-Clause-No-Nuclear-Warranty" "BSD-3-Clause-Open-MPI" "BSD-4-Clause" "BSD-4-Clause-Shortened" "BSD-4-Clause-UC" "BSD-4.3RENO" "BSD-4.3TAHOE" "BSD-Advertising-Acknowledgement" "BSD-Attribution-HPND-disclaimer" "BSD-Protection" "BSD-Source-Code" "BSL-1.0" "BUSL-1.1" "bzip2-1.0.6" "C-UDA-1.0" "CAL-1.0" "CAL-1.0-Combined-Work-Exception" "Caldera" "CATOSL-1.1" "CC-BY-1.0" "CC-BY-2.0" "CC-BY-2.5" "CC-BY-2.5-AU" "CC-BY-3.0" "CC-BY-3.0-AT" "CC-BY-3.0-DE" "CC-BY-3.0-IGO" "CC-BY-3.0-NL" "CC-BY-3.0-US" "CC-BY-4.0" "CC-BY-NC-1.0" "CC-BY-NC-2.0" "CC-BY-NC-2.5" "CC-BY-NC-3.0" "CC-BY-NC-3.0-DE" "CC-BY-NC-4.0" "CC-BY-NC-ND-1.0" "CC-BY-NC-ND-2.0" "CC-BY-NC-ND-2.5" "CC-BY-NC-ND-3.0" "CC-BY-NC-ND-3.0-DE" "CC-BY-NC-ND-3.0-IGO" "CC-BY-NC-ND-4.0" "CC-BY-NC-SA-1.0" "CC-BY-NC-SA-2.0" "CC-BY-NC-SA-2.0-DE" "CC-BY-NC-SA-2.0-FR" "CC-BY-NC-SA-2.0-UK" "CC-BY-NC-SA-2.5" "CC-BY-NC-SA-3.0" "CC-BY-NC-SA-3.0-DE" "CC-BY-NC-SA-3.0-IGO" "CC-BY-NC-SA-4.0" "CC-BY-ND-1.0" "CC-BY-ND-2.0" "CC-BY-ND-2.5" "CC-BY-ND-3.0" "CC-BY-ND-3.0-DE" "CC-BY-ND-4.0" "CC-BY-SA-1.0" "CC-BY-SA-2.0" "CC-BY-SA-2.0-UK" "CC-BY-SA-2.1-JP" "CC-BY-SA-2.5" "CC-BY-SA-3.0" "CC-BY-SA-3.0-AT" "CC-BY-SA-3.0-DE" "CC-BY-SA-3.0-IGO" "CC-BY-SA-4.0" "CC-PDDC" "CC0-1.0" "CDDL-1.0" "CDDL-1.1" "CDL-1.0" "CDLA-Permissive-1.0" "CDLA-Permissive-2.0" "CDLA-Sharing-1.0" "CECILL-1.0" "CECILL-1.1" "CECILL-2.0" "CECILL-2.1" "CECILL-B" "CECILL-C" "CERN-OHL-1.1" "CERN-OHL-1.2" "CERN-OHL-P-2.0" "CERN-OHL-S-2.0" "CERN-OHL-W-2.0" "CFITSIO" "checkmk" "ClArtistic" "Clips" "CMU-Mach" "CNRI-Jython" "CNRI-Python" "CNRI-Python-GPL-Compatible" "COIL-1.0" "Community-Spec-1.0" "Condor-1.1" "copyleft-next-0.3.0" "copyleft-next-0.3.1" "Cornell-Lossless-JPEG" "CPAL-1.0" "CPL-1.0" "CPOL-1.02" "Crossword" "CrystalStacker" "CUA-OPL-1.0" "Cube" "curl" "D-FSL-1.0" "diffmark" "DL-DE-BY-2.0" "DOC" "Dotseqn" "DRL-1.0" "DSDP" "dtoa" "dvipdfm" "ECL-1.0" "ECL-2.0" "EFL-1.0" "EFL-2.0" "eGenix" "Elastic-2.0" "Entessa" "EPICS" "EPL-1.0" "EPL-2.0" "ErlPL-1.1" "etalab-2.0" "EUDatagrid" "EUPL-1.0" "EUPL-1.1" "EUPL-1.2" "Eurosym" "Fair" "FDK-AAC" "Frameworx-1.0" "FreeBSD-DOC" "FreeImage" "FSFAP" "FSFUL" "FSFULLR" "FSFULLRWD" "FTL" "GD" "GFDL-1.1-invariants-only" "GFDL-1.1-invariants-or-later" "GFDL-1.1-no-invariants-only" "GFDL-1.1-no-invariants-or-later" "GFDL-1.1-only" "GFDL-1.1-or-later" "GFDL-1.2-invariants-only" "GFDL-1.2-invariants-or-later" "GFDL-1.2-no-invariants-only" "GFDL-1.2-no-invariants-or-later" "GFDL-1.2-only" "GFDL-1.2-or-later" "GFDL-1.3-invariants-only" "GFDL-1.3-invariants-or-later" "GFDL-1.3-no-invariants-only" "GFDL-1.3-no-invariants-or-later" "GFDL-1.3-only" "GFDL-1.3-or-later" "Giftware" "GL2PS" "Glide" "Glulxe" "GLWTPL" "gnuplot" "GPL-1.0-only" "GPL-1.0-or-later" "GPL-2.0-only" "GPL-2.0-or-later" "GPL-3.0-only" "GPL-3.0-or-later" "Graphics-Gems" "gSOAP-1.3b" "HaskellReport" "Hippocratic-2.1" "HP-1986" "HPND" "HPND-export-US" "HPND-Markus-Kuhn" "HPND-sell-variant" "HPND-sell-variant-MIT-disclaimer" "HTMLTIDY" "IBM-pibs" "ICU" "IEC-Code-Components-EULA" "IJG" "IJG-short" "ImageMagick" "iMatix" "Imlib2" "Info-ZIP" "Inner-Net-2.0" "Intel" "Intel-ACPI" "Interbase-1.0" "IPA" "IPL-1.0" "ISC" "Jam" "JasPer-2.0" "JPL-image" "JPNIC" "JSON" "Kazlib" "Knuth-CTAN" "LAL-1.2" "LAL-1.3" "Latex2e" "Latex2e-translated-notice" "Leptonica" "LGPL-2.0-only" "LGPL-2.0-or-later" "LGPL-2.1-only" "LGPL-2.1-or-later" "LGPL-3.0-only" "LGPL-3.0-or-later" "LGPLLR" "Libpng" "libpng-2.0" "libselinux-1.0" "libtiff" "libutil-David-Nugent" "LiLiQ-P-1.1" "LiLiQ-R-1.1" "LiLiQ-Rplus-1.1" "Linux-man-pages-1-para" "Linux-man-pages-copyleft" "Linux-man-pages-copyleft-2-para" "Linux-man-pages-copyleft-var" "Linux-OpenIB" "LOOP" "LPL-1.0" "LPL-1.02" "LPPL-1.0" "LPPL-1.1" "LPPL-1.2" "LPPL-1.3a" "LPPL-1.3c" "LZMA-SDK-9.11-to-9.20" "LZMA-SDK-9.22" "MakeIndex" "Martin-Birgmeier" "metamail" "Minpack" "MirOS" "MIT" "MIT-0" "MIT-advertising" "MIT-CMU" "MIT-enna" "MIT-feh" "MIT-Festival" "MIT-Modern-Variant" "MIT-open-group" "MIT-Wu" "MITNFA" "Motosoto" "mpi-permissive" "mpich2" "MPL-1.0" "MPL-1.1" "MPL-2.0" "MPL-2.0-no-copyleft-exception" "mplus" "MS-LPL" "MS-PL" "MS-RL" "MTLL" "MulanPSL-1.0" "MulanPSL-2.0" "Multics" "Mup" "NAIST-2003" "NASA-1.3" "Naumen" "NBPL-1.0" "NCGL-UK-2.0" "NCSA" "Net-SNMP" "NetCDF" "Newsletr" "NGPL" "NICTA-1.0" "NIST-PD" "NIST-PD-fallback" "NIST-Software" "NLOD-1.0" "NLOD-2.0" "NLPL" "Nokia" "NOSL" "Noweb" "NPL-1.0" "NPL-1.1" "NPOSL-3.0" "NRL" "NTP" "NTP-0" "O-UDA-1.0" "OCCT-PL" "OCLC-2.0" "ODbL-1.0" "ODC-By-1.0" "OFFIS" "OFL-1.0" "OFL-1.0-no-RFN" "OFL-1.0-RFN" "OFL-1.1" "OFL-1.1-no-RFN" "OFL-1.1-RFN" "OGC-1.0" "OGDL-Taiwan-1.0" "OGL-Canada-2.0" "OGL-UK-1.0" "OGL-UK-2.0" "OGL-UK-3.0" "OGTSL" "OLDAP-1.1" "OLDAP-1.2" "OLDAP-1.3" "OLDAP-1.4" "OLDAP-2.0" "OLDAP-2.0.1" "OLDAP-2.1" "OLDAP-2.2" "OLDAP-2.2.1" "OLDAP-2.2.2" "OLDAP-2.3" "OLDAP-2.4" "OLDAP-2.5" "OLDAP-2.6" "OLDAP-2.7" "OLDAP-2.8" "OLFL-1.3" "OML" "OpenPBS-2.3" "OpenSSL" "OPL-1.0" "OPL-UK-3.0" "OPUBL-1.0" "OSET-PL-2.1" "OSL-1.0" "OSL-1.1" "OSL-2.0" "OSL-2.1" "OSL-3.0" "Parity-6.0.0" "Parity-7.0.0" "PDDL-1.0" "PHP-3.0" "PHP-3.01" "Plexus" "PolyForm-Noncommercial-1.0.0" "PolyForm-Small-Business-1.0.0" "PostgreSQL" "PSF-2.0" "psfrag" "psutils" "Python-2.0" "Python-2.0.1" "Qhull" "QPL-1.0" "QPL-1.0-INRIA-2004" "Rdisc" "RHeCos-1.1" "RPL-1.1" "RPL-1.5" "RPSL-1.0" "RSA-MD" "RSCPL" "Ruby" "SAX-PD" "Saxpath" "SCEA" "SchemeReport" "Sendmail" "Sendmail-8.23" "SGI-B-1.0" "SGI-B-1.1" "SGI-B-2.0" "SGP4" "SHL-0.5" "SHL-0.51" "SimPL-2.0" "SISSL" "SISSL-1.2" "Sleepycat" "SMLNJ" "SMPPL" "SNIA" "snprintf" "Spencer-86" "Spencer-94" "Spencer-99" "SPL-1.0" "SSH-OpenSSH" "SSH-short" "SSPL-1.0" "SugarCRM-1.1.3" "SunPro" "SWL" "Symlinks" "TAPR-OHL-1.0" "TCL" "TCP-wrappers" "TermReadKey" "TMate" "TORQUE-1.1" "TOSL" "TPDL" "TPL-1.0" "TTWL" "TU-Berlin-1.0" "TU-Berlin-2.0" "UCAR" "UCL-1.0" "Unicode-DFS-2015" "Unicode-DFS-2016" "Unicode-TOU" "UnixCrypt" "Unlicense" "UPL-1.0" "Vim" "VOSTROM" "VSL-1.0" "W3C" "W3C-19980720" "W3C-20150513" "w3m" "Watcom-1.0" "Widget-Workshop" "Wsuipa" "WTFPL" "X11" "X11-distribute-modifications-variant" "Xdebug-1.03" "Xerox" "Xfig" "XFree86-1.1" "xinetd" "xlock" "Xnet" "xpp" "XSkat" "YPL-1.0" "YPL-1.1" "Zed" "Zend-2.0" "Zimbra-1.3" "Zimbra-1.4" "Zlib" "zlib-acknowledgement" "ZPL-1.1" "ZPL-2.0" "ZPL-2.1" ) ] [ sh:datatype xsd:anyURI ] ) ; + sh:order 26 ; + sh:path gx:license ], + [ sh:class gx:Disk ; + sh:description "Minimal size of root disk required to run the image." ; + sh:maxCount 1 ; + sh:name "root disk requirements" ; + sh:order 11 ; + sh:path gx:rootDiskReq ], + [ sh:class gx:UpdateStrategy ; + sh:description "Details on provider's image update strategy of this image. An update strategy defines ..." ; + sh:maxCount 1 ; + sh:order 17 ; + sh:path gx:updateStrategy ], + [ sh:class gx:CPU ; + sh:description "Details with respect to CPU capabilities required to run the image." ; + sh:maxCount 1 ; + sh:name "CPU requirements" ; + sh:order 7 ; + sh:path gx:cpuReq ], + [ sh:datatype xsd:string ; + sh:description "Version of the software." ; + sh:maxCount 1 ; + sh:order 22 ; + sh:path gx:version ], + [ sh:datatype xsd:string ; + sh:description "Software specific patch number describing patch level of the software." ; + sh:maxCount 1 ; + sh:name "Patch level" ; + sh:order 23 ; + sh:path gx:patchLevel ], + [ sh:class gx:MemorySize ; + sh:description "Size of the image." ; + sh:maxCount 1 ; + sh:name "file size" ; + sh:order 5 ; + sh:path gx:fileSize ], + [ sh:datatype xsd:dateTime ; + sh:description "Date and time the software was build, formated according to ISO 8601 (UTC - 24 hours)." ; + sh:maxCount 1 ; + sh:name "Build Date" ; + sh:order 24 ; + sh:path gx:buildDate ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 30 ; + sh:path gx:description ], + [ sh:description "Hypervisor type required by the image" ; + sh:in ( "quemu" "KVM" "Xen" "ESXi" "Hyper-V" "Cloud Hypervisor" "other" ) ; + sh:maxCount 1 ; + sh:name "Hypervisor type" ; + sh:order 1 ; + sh:path gx:hypervisorType ], + [ sh:class gx:OperatingSystem ; + sh:description "A resolvable link to Gaia-X credential of operation system offered by this image." ; + sh:maxCount 1 ; + sh:name "Operating System" ; + sh:order 6 ; + sh:path gx:operatingSystem ], + [ sh:datatype xsd:string ; + sh:description "A list of policy expressed using a DSL (e.g., Rego or ODRL) (access control, throttling, usage, retention, ...). If there is no specified usage policy constraints on the VirtualResource, the policy should express a simple default: allow intent" ; + sh:minCount 1 ; + sh:order 27 ; + sh:path gx:resourcePolicy ], + [ sh:class gx:CheckSum ; + sh:description "Details with respect to check sum of the image." ; + sh:maxCount 1 ; + sh:order 13 ; + sh:path gx:checkSum ], + [ sh:class gx:MemorySize ; + sh:description "Maximum amount of RAM for the video image." ; + sh:maxCount 1 ; + sh:name "Video RAM size" ; + sh:order 10 ; + sh:path gx:videoRamSize ], + [ sh:description "Define the action to be performed if server hangs." ; + sh:in ( "disabled" "reset" "poweroff" "pause" "none" ) ; + sh:maxCount 1 ; + sh:name "Watchdog action" ; + sh:order 4 ; + sh:path gx:watchDogAction ], + [ sh:datatype xsd:boolean ; + sh:description "An image is a software that may require a commercial license to be used. This attribute indicates, if service usage fee includes that license (true) or customer has to bring its own license (False). Default: False" ; + sh:maxCount 1 ; + sh:name "License included" ; + sh:order 18 ; + sh:path gx:licenseIncluded ], + [ sh:class gx:Memory ; + sh:description "Minimal size of RAM required to run the image." ; + sh:maxCount 1 ; + sh:name "Ram requirements" ; + sh:order 9 ; + sh:path gx:ramReq ] ; + sh:targetClass gx:VMImage . + +gx:VatID a sh:NodeShape ; + sh:closed false ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "The VAT identification number." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 0 ; + sh:path gx:vatID ] ; + sh:targetClass gx:VatID . + + a sh:NodeShape ; + sh:closed false ; + sh:description "Definition of 'Frequency', according to http://qudt.org/quantitykind/FrequencyDefinition." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:float ; + sh:description "Value of physical quantity. See https://qudt.org/schema/qudt/value" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:minInclusive 0 ; + sh:order 0 ; + sh:path ], + [ sh:datatype xsd:string ; + sh:description "Unit of physical quantity. See https://qudt.org/schema/qudt/Unit" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 1 ; + sh:path ] ; + sh:targetClass . + +gx:GPSUnit a sh:NodeShape ; + sh:closed false ; + sh:description "Definition of a geographical point." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:integer ; + sh:maxCount 1 ; + sh:maxInclusive 180 ; + sh:minCount 1 ; + sh:minInclusive -180 ; + sh:name "degrees" ; + sh:order 0 ; + sh:path gx:degrees ], + [ sh:datatype xsd:float ; + sh:maxCount 1 ; + sh:maxInclusive 1 ; + sh:minInclusive 0 ; + sh:name "decimals" ; + sh:order 3 ; + sh:path gx:decimals ], + [ sh:datatype xsd:integer ; + sh:maxCount 1 ; + sh:maxInclusive 60 ; + sh:minInclusive 0 ; + sh:name "seconds" ; + sh:order 2 ; + sh:path gx:seconds ], + [ sh:datatype xsd:integer ; + sh:maxCount 1 ; + sh:maxInclusive 60 ; + sh:minInclusive 0 ; + sh:name "minutes" ; + sh:order 1 ; + sh:path gx:minutes ] ; + sh:targetClass gx:GPSUnit . + +gx:Encryption a sh:NodeShape ; + sh:closed false ; + sh:description "Encryption capabilities of a Gaia-X entity." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:description "Define key management method. Allowed values are: managed, BYOK, HYOK" ; + sh:in ( "BYOK" "HYOK" "managed" ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "key management" ; + sh:order 1 ; + sh:path gx:keyManagement ], + [ sh:description "Supported algorithm used to encrypt." ; + sh:in ( "RSA" "AES" "3DES" "Blowfish" "Twofish" "SDA" "other" ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "encryption algorithm" ; + sh:order 0 ; + sh:path gx:cipher ] ; + sh:targetClass gx:Encryption . + +gx:MaintenanceSubscription a sh:NodeShape ; + sh:closed false ; + sh:description "A maintenance subscriptions gives access to bug fixes, security fixes and function updates from software vendor." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:boolean ; + sh:description "True, if cloud service user needs a maintenance subscription account from the vendor of image's operating system in order to receive fixes. Default: False." ; + sh:maxCount 1 ; + sh:name "Subscription required" ; + sh:order 1 ; + sh:path gx:subscriptionRequired ], + [ sh:datatype xsd:date ; + sh:description "Date (UTC) until vendor of image's operating system promises maintenance at least." ; + sh:maxCount 1 ; + sh:name "Maintenance until" ; + sh:order 2 ; + sh:path gx:maintainedUntil ], + [ sh:datatype xsd:boolean ; + sh:description "True, if cloud service provider prepared already the image to reviece bug fixes, security fixes and (minor) function updates. Default: False" ; + sh:maxCount 1 ; + sh:name "Subscription included" ; + sh:order 0 ; + sh:path gx:subscriptionIncluded ] ; + sh:targetClass gx:MaintenanceSubscription . + +gx:UpdateStrategy a sh:NodeShape ; + sh:closed false ; + sh:description "Cloud service customer expect cloud images to be updated regularly, in order to always get the image with the lasted patches. Technically, an updated image is a new image in cloud service' image catalogue having it's own unique image ID and replaces its old version. It is recommended to hide outdated version, but keep them referencable by its ID for a transition period for customers' convenience. This class defines important aspects of providers image update policy." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:description "Defines, how long outdated and hidden images are available by its ID. Allowed values are \"none\" (none information are given), \"notice\" (outdated version is valid until deprecation notice from provider), \"forever\" (Outdated version will never be deleted), non-negative integer n (latest n version keep available) and date in UTC (outdated version is valid until given date)." ; + sh:maxCount 1 ; + sh:name "Old versions Valid until" ; + sh:or ( [ sh:in ( "none" "notice" ) ] [ sh:in ( "forever" ) ] [ sh:class gx:LatestN ] [ sh:datatype xsd:date ] ) ; + sh:order 2 ; + sh:path gx:oldVersionsValidUntil ], + [ sh:datatype xsd:integer ; + sh:description "Time in hours passed after image's distributor published a critical hot fix and cloud provider updated this image with the critical patch. A critical bug is defined as a security vulnerability with a CVSS score of 9.0 or higher." ; + sh:maxCount 1 ; + sh:minInclusive 0 ; + sh:name "Hotfix hours" ; + sh:order 1 ; + sh:path gx:hotfixHours ], + [ sh:description "Frequency, in which the provider updates the image on a regular basis. Possible values are: yearly, quarterly, monthly, weekly, daily, critical_bug, and never." ; + sh:in ( "yearly" "quarterly" "weekly" "daily" "critical_bug" "never" ) ; + sh:maxCount 1 ; + sh:name "Replace Frequency" ; + sh:order 0 ; + sh:path gx:replaceFrequency ], + [ sh:description "Details, how long the image will be provided in image catalogue. Allowed values are \"none\" (none information are given), \"notice\" (image is available until deprecation notice from provider), and date in UTC (date until the image is available)." ; + sh:maxCount 1 ; + sh:name "Provided until" ; + sh:or ( [ sh:in ( "none" "notice" ) ] [ sh:datatype xsd:date ] ) ; + sh:order 3 ; + sh:path gx:providedUntil ] ; + sh:targetClass gx:UpdateStrategy . + + a sh:NodeShape ; + sh:closed false ; + sh:description "Full address of the entity." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "the street address of a postal address" ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path ], + [ sh:class gx:GPSLocation ; + sh:description "GPS in ISO 6709:2008/Cor 1:2009 format." ; + sh:order 1 ; + sh:path gx:gps ], + [ sh:datatype xsd:string ; + sh:description "The v:locality property specifies the locality (e.g., city) of a postal address." ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path ], + [ sh:description "Country code in ISO 3166-1 alpha2, alpha-3 or numeric format." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:or ( [ sh:in ( "AF" "EG" "AX" "AL" "DZ" "VI" "UM" "AS" "AD" "AO" "AI" "AQ" "AG" "GQ" "SY" "AR" "AM" "AW" "AZ" "ET" "AU" "BS" "BH" "BD" "BB" "BE" "BZ" "BJ" "BM" "BT" "VE" "BQ" "BA" "BW" "BV" "BR" "VG" "IO" "BN" "BG" "BF" "BI" "CV" "CL" "CN" "CK" "CR" "CI" "CW" "DK" "CD" "KP" "LA" "DE" "DM" "DO" "DJ" "EC" "MK" "SV" "ER" "EE" "FK" "FO" "FJ" "FI" "FM" "FR" "TF" "GF" "PF" "GA" "GM" "GE" "GH" "GI" "GD" "GR" "GL" "GP" "GU" "GT" "GG" "GN" "GW" "GY" "HT" "HM" "HN" "HK" "IN" "ID" "IM" "IQ" "IE" "IR" "IS" "IL" "IT" "JM" "JP" "YE" "JE" "JO" "KY" "KH" "CM" "CA" "KZ" "QA" "KE" "KG" "KI" "CC" "CO" "KM" "CG" "HR" "CU" "KW" "LS" "LV" "LB" "LR" "LY" "LI" "LT" "LU" "MO" "MG" "MW" "MY" "MV" "ML" "MT" "MP" "MA" "MH" "MQ" "MR" "MU" "YT" "MX" "MC" "MN" "MS" "ME" "MZ" "MM" "NA" "NR" "NP" "NC" "NZ" "NI" "NL" "NE" "NG" "NU" "NF" "False" "OM" "AT" "PK" "PW" "PS" "PA" "PG" "PY" "PE" "PH" "PN" "BO" "PL" "PT" "PR" "KR" "MD" "RE" "RW" "RO" "RU" "SB" "ZM" "WS" "SM" "ST" "SA" "SE" "CH" "SN" "RS" "SC" "SL" "ZW" "SG" "SK" "SI" "SO" "ES" "LK" "BL" "SH" "KN" "LC" "MF" "SX" "PM" "VC" "ZA" "SD" "GS" "SS" "SR" "SJ" "SZ" "TJ" "TW" "TH" "TL" "TG" "TK" "TO" "TT" "TD" "CZ" "TN" "TR" "TM" "TC" "TV" "UG" "UA" "HU" "UY" "UZ" "VU" "VA" "AE" "TZ" "US" "GB" "VN" "WF" "CX" "BY" "EH" "CF" "CY" ) ] [ sh:in ( "AFG" "ALA" "ALB" "DZA" "ASM" "AND" "AGO" "AIA" "ATA" "ATG" "ARG" "ARM" "ABW" "AUS" "AUT" "AZE" "BHS" "BHR" "BGD" "BRB" "BLR" "BEL" "BLZ" "BEN" "BMU" "BTN" "BOL" "BES" "BIH" "BWA" "BVT" "BRA" "IOT" "BRN" "BGR" "BFA" "BDI" "KHM" "CMR" "CAN" "CPV" "CYM" "CAF" "TCD" "CHL" "CHN" "CXR" "CCK" "COL" "COM" "COG" "COD" "COK" "CRI" "CIV" "HRV" "CUB" "CUW" "CYP" "CZE" "DNK" "DJI" "DMA" "DOM" "ECU" "EGY" "SLV" "GNQ" "ERI" "EST" "ETH" "FLK" "FRO" "FJI" "FIN" "FRA" "GUF" "PYF" "ATF" "GAB" "GMB" "GEO" "DEU" "GHA" "GIB" "GRC" "GRL" "GRD" "GLP" "GUM" "GTM" "GGY" "GIN" "GNB" "GUY" "HTI" "HMD" "VAT" "HND" "HKG" "HUN" "ISL" "IND" "IDN" "IRN" "IRQ" "IRL" "IMN" "ISR" "ITA" "JAM" "JPN" "JEY" "JOR" "KAZ" "KEN" "KIR" "PRK" "KOR" "KWT" "KGZ" "LAO" "LVA" "LBN" "LSO" "LBR" "LBY" "LIE" "LTU" "LUX" "MAC" "MKD" "MDG" "MWI" "MYS" "MDV" "MLI" "MLT" "MHL" "MTQ" "MRT" "MUS" "MYT" "MEX" "FSM" "MDA" "MCO" "MNG" "MNE" "MSR" "MAR" "MOZ" "MMR" "NAM" "NRU" "NPL" "NLD" "NCL" "NZL" "NIC" "NER" "NGA" "NIU" "NFK" "MNP" "NOR" "OMN" "PAK" "PLW" "PSE" "PAN" "PNG" "PRY" "PER" "PHL" "PCN" "POL" "PRT" "PRI" "QAT" "SRB" "REU" "ROU" "RUS" "RWA" "BLM" "SHN" "KNA" "LCA" "MAF" "SPM" "VCT" "WSM" "SMR" "STP" "SAU" "SEN" "SYC" "SLE" "SGP" "SXM" "SVK" "SVN" "SLB" "SOM" "ZAF" "SGS" "SSD" "ESP" "LKA" "SDN" "SUR" "SJM" "SWZ" "SWE" "CHE" "SYR" "TWN" "TJK" "TZA" "THA" "TLS" "TGO" "TKL" "TON" "TTO" "TUN" "TUR" "XTX" "TKM" "TCA" "TUV" "UGA" "UKR" "ARE" "GBR" "USA" "UMI" "URY" "UZB" "VUT" "VEN" "VNM" "VGB" "VIR" "WLF" "ESH" "YEM" "ZMB" "ZWE" "XKX" ) ] [ sh:in ( "4" "818" "248" "008" "10" "850" "581" "14" "16" "20" "660" "8" "028" "226" "760" "26" "41" "231" "30" "36" "048" "40" "42" "46" "084" "204" "48" "52" "58" "60" "62" "092" "086" "854" "108" "132" "152" "156" "184" "188" "384" "531" "208" "180" "408" "418" "276" "212" "214" "262" "218" "807" "222" "232" "233" "238" "234" "242" "246" "583" "250" "260" "254" "258" "266" "270" "268" "288" "292" "308" "300" "304" "312" "316" "320" "831" "324" "624" "328" "332" "334" "340" "344" "356" "360" "833" "368" "372" "364" "352" "376" "380" "388" "392" "887" "832" "400" "136" "116" "120" "124" "398" "634" "404" "417" "296" "166" "170" "174" "178" "191" "192" "414" "426" "428" "422" "430" "434" "438" "440" "442" "446" "450" "454" "458" "462" "466" "470" "580" "504" "584" "474" "478" "480" "175" "484" "492" "496" "500" "499" "508" "104" "516" "520" "524" "540" "554" "558" "528" "562" "566" "570" "574" "578" "512" "32" "586" "585" "275" "591" "598" "600" "604" "608" "612" "068" "616" "620" "630" "410" "498" "638" "646" "642" "643" "090" "894" "882" "674" "678" "682" "752" "756" "686" "688" "690" "694" "716" "702" "703" "705" "706" "724" "144" "652" "654" "659" "662" "663" "534" "666" "670" "710" "729" "239" "728" "740" "744" "748" "762" "158" "764" "626" "768" "772" "776" "780" "148" "203" "788" "792" "795" "796" "798" "800" "804" "348" "858" "860" "548" "336" "784" "834" "840" "826" "704" "876" "162" "112" "732" "140" "196" ) ] ) ; + sh:order 0 ; + sh:path gx:countryCode ], + [ sh:datatype xsd:string ; + sh:description "String of a street-address" ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ] ; + sh:targetClass . + +gx:CPU a sh:NodeShape ; + sh:closed false ; + sh:description "Computational processing unit of virtual and physical machines." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class gx:MemorySize ; + sh:description "Last Level Cache size of the CPU." ; + sh:maxCount 1 ; + sh:name "last level cache size" ; + sh:order 7 ; + sh:path gx:lastLevelCacheSize ], + [ sh:class ; + sh:description "Boost frequency of the CPU." ; + sh:maxCount 1 ; + sh:name "boost CPU frequency" ; + sh:order 6 ; + sh:path gx:boostFrequency ], + [ sh:datatype xsd:string ; + sh:description "CPU flags as documented by lscpu and defined in https://github.com/torvalds/linux/blob/master/tools/arch/x86/include/asm/cpufeatures.h. Non-listed flags to be designated as 'other'." ; + sh:name "CPU flags" ; + sh:order 1 ; + sh:path gx:cpuFlag ], + [ sh:datatype xsd:integer ; + sh:description "Number of threads of the CPU." ; + sh:maxCount 1 ; + sh:minInclusive 1 ; + sh:name "Number of threads" ; + sh:order 4 ; + sh:path gx:numberOfThreads ], + [ sh:class ; + sh:description "Base frequency of the CPU." ; + sh:maxCount 1 ; + sh:name "base CPU frequency" ; + sh:order 5 ; + sh:path gx:baseFrequency ], + [ sh:datatype xsd:string ; + sh:description "Vendor of the device." ; + sh:maxCount 1 ; + sh:order 9 ; + sh:path gx:vendor ], + [ sh:description "Architecture of CPU as defined per .name string of structure static const X86CPUDefinition builtin_x86_defs[] defined in https://gitlab.com/qemu-project/qemu/-/blob/master/target/i386/cpu.c. Non-listed architectures to be designated as 'other'" ; + sh:in ( "x86-32" "x86-64" "AArch-32" "AArch-64" "RISC-V" "other" ) ; + sh:maxCount 1 ; + sh:name "CPU architecture" ; + sh:order 0 ; + sh:path gx:cpuArchitecture ], + [ sh:datatype xsd:boolean ; + sh:description "Is simultaneous multithreading (SMT) or hyper threading (HT) active in this CPU? Default \"False\"." ; + sh:maxCount 1 ; + sh:name "smt enabled" ; + sh:order 2 ; + sh:path gx:smtEnabled ], + [ sh:datatype xsd:integer ; + sh:description "Over-subscription means assigning more capacity to virtual machines that the physical device has. Supported over-subscription ratio defines the amount of supported over-subscription as a value larger or equal to 1.0. 1.0 means no over-subscription." ; + sh:maxCount 1 ; + sh:minInclusive 1 ; + sh:name "supported over-subscription ratio" ; + sh:order 12 ; + sh:path gx:supportedOversubscriptionRatio ], + [ sh:datatype xsd:string ; + sh:description "Vendor specific generation of the device." ; + sh:maxCount 1 ; + sh:name "Generation of the device" ; + sh:order 10 ; + sh:path gx:generation ], + [ sh:class ; + sh:description "CPU Thermal Design Power." ; + sh:maxCount 1 ; + sh:name "thermal design power" ; + sh:order 8 ; + sh:path gx:thermalDesignPower ], + [ sh:datatype xsd:integer ; + sh:description "Number of cores of the CPU." ; + sh:maxCount 1 ; + sh:minInclusive 1 ; + sh:name "Number of CPU cores" ; + sh:order 3 ; + sh:path gx:numberOfCores ], + [ sh:datatype xsd:integer ; + sh:description "Over-subscription means assigning more capacity to virtual machines that the physical device has. Default over-subscription ratio defines the amount of default over-subscription as a value larger or equal to 1.0. 1.0 means no over-subscription." ; + sh:maxCount 1 ; + sh:minInclusive 1 ; + sh:name "default over-subscription ratio" ; + sh:order 11 ; + sh:path gx:defaultOversubscriptionRatio ] ; + sh:targetClass gx:CPU . + +gx:ComputeServiceOffering a sh:NodeShape ; + sh:closed false ; + sh:description "A digital service available for order and offering computational capabilities." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Compute Service Offering" ; + sh:property [ sh:description "A list of resolvable links to Gaia-X Credentials of service offerings related to the service and that can exist independently of it." ; + sh:name "depends on" ; + sh:or ( [ sh:class gx:ServiceOffering ] [ sh:class gx:InfrastructureServiceOffering ] [ sh:class gx:ComputeServiceOffering ] [ sh:class gx:VirtualMachineServiceOffering ] ) ; + sh:order 2 ; + sh:path gx:dependsOn ], + [ sh:datatype xsd:string ; + sh:description "Keywords that describe / tag the service." ; + sh:order 8 ; + sh:path gx:keyword ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 13 ; + sh:path gx:description ], + [ sh:description "One or more data protection regimes applying to the service offering." ; + sh:in ( "GDPR2016" "LGPD2019" "PDPA2012" "CCPA2018" "VCDPA2021" ) ; + sh:name "data protection regime" ; + sh:order 6 ; + sh:path gx:dataProtectionRegime ], + [ sh:description "How compute resources of different tenants are separated. Default value = hw-virtualized." ; + sh:in ( "hw-virtualized" "sw-virtualized" "os-virtualized" "os-hw-virtualized" "hw-partitioned" "physical" ) ; + sh:maxCount 1 ; + sh:name "tenant separation" ; + sh:order 0 ; + sh:path gx:tenantSeparation ], + [ sh:class gx:Endpoint ; + sh:description "Endpoint through which the Service Offering can be accessed." ; + sh:maxCount 1 ; + sh:name "endpoint" ; + sh:order 10 ; + sh:path gx:endpoint ], + [ sh:description "A list of resolvable links to Gaia-X Credentials of resources related to the service and that can exist independently of it." ; + sh:name "aggregation of" ; + sh:or ( [ sh:class gx:PhysicalResource ] [ sh:class gx:VirtualResource ] [ sh:class gx:SoftwareResource ] [ sh:class gx:OperatingSystem ] ) ; + sh:order 3 ; + sh:path gx:aggregationOfResources ], + [ sh:class gx:DataAccountExport ; + sh:description "One or more methods to export data out of the service." ; + sh:minCount 1 ; + sh:name "data account export" ; + sh:order 7 ; + sh:path gx:dataAccountExport ], + [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 12 ; + sh:path gx:name ], + [ sh:class gx:LegalPerson ; + sh:description "A resolvable link to Gaia-X Credential of the participant providing the service." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "provided by" ; + sh:order 1 ; + sh:path gx:providedBy ], + [ sh:description "List of Resource references where service is hosted and can be instantiated. Can refer to availabilty zones, data centers, regions, etc." ; + sh:name "hosted on" ; + sh:or ( [ sh:class gx:VirtualResource ] [ sh:class gx:PhysicalResource ] ) ; + sh:order 11 ; + sh:path gx:hostedOn ], + [ sh:description "Provision type of the service" ; + sh:in ( "private" "public" "hybrid" ) ; + sh:maxCount 1 ; + sh:name "provision type" ; + sh:order 9 ; + sh:path gx:provisionType ], + [ sh:class gx:TermsAndConditions ; + sh:description "One or more Terms and Conditions applying to that service." ; + sh:minCount 1 ; + sh:name "terms and conditions" ; + sh:order 4 ; + sh:path gx:serviceOfferingTermsAndConditions ], + [ sh:datatype xsd:string ; + sh:description "Ome or more policies expressed using a DSL (e.g., Rego or ODRL) (access control, throttling, usage, retention, ...). If there is no specified usage policy constraints, the policy should express a simple default: " ; + sh:minCount 1 ; + sh:order 5 ; + sh:path gx:servicePolicy ] ; + sh:targetClass gx:ComputeServiceOffering . + +gx:DataAccountExport a sh:NodeShape ; + sh:closed false ; + sh:description "List of methods to export data from your account out of the service." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:description "Type of Media Types (formerly known as MIME types) as defined by the IANA." ; + sh:in ( "1d-interleaved-parityfec" "cache-manifest" "calendar" "cql" "cql-expression" "cql-identifier" "css" "csv" "csv-schema" "directory - DEPRECATED by RFC6350" "dns" "ecmascript (OBSOLETED in favor of text/javascript)" "encaprtp" "enriched" "example" "fhirpath" "flexfec" "fwdred" "gff3" "grammar-ref-list" "hl7v2" "html" "javascript" "jcr-cnd" "markdown" "mizar" "n3" "parameters" "parityfec" "plain" "provenance-notation" "prs.fallenstein.rst" "prs.lines.tag" "prs.prop.logic" "RED" "rfc822-headers" "richtext" "rtf" "rtp-enc-aescm128" "rtploopback" "rtx" "SGML" "shacl" "shex" "spdx" "strings" "t140" "tab-separated-values" "troff" "turtle" "ulpfec" "uri-list" "vcard" "vnd.a" "vnd.abc" "vnd.ascii-art" "vnd.curl" "vnd.debian.copyright" "vnd.DMClientScript" "vnd.dvb.subtitle" "vnd.esmertec.theme-descriptor" "vnd.exchangeable" "vnd.familysearch.gedcom" "vnd.ficlab.flt" "vnd.fly" "vnd.fmi.flexstor" "vnd.gml" "vnd.graphviz" "vnd.hans" "vnd.hgl" "vnd.in3d.3dml" "vnd.in3d.spot" "vnd.IPTC.NewsML" "vnd.IPTC.NITF" "vnd.latex-z" "vnd.motorola.reflex" "vnd.ms-mediapackage" "vnd.net2phone.commcenter.command" "vnd.radisys.msml-basic-layout" "vnd.senx.warpscript" "vnd.si.uricatalogue" "vnd.sun.j2me.app-descriptor" "vnd.sosi" "vnd.trolltech.linguist" "vnd.wap.si" "vnd.wap.sl" "vnd.wap.wml" "vnd.wap.wmlscript" "vtt" "wgsl" "xml" "xml-external-parsed-entity" "3gpdash-qoe-report+xml" "3gppHal+json" "3gppHalForms+json" "3gpp-ims+xml" "A2L" "ace+cbor" "ace+json" "activemessage" "activity+json" "aif+cbor" "aif+json" "alto-cdni+json" "alto-cdnifilter+json" "alto-costmap+json" "alto-costmapfilter+json" "alto-directory+json" "alto-endpointprop+json" "alto-endpointpropparams+json" "alto-endpointcost+json" "alto-endpointcostparams+json" "alto-error+json" "alto-networkmapfilter+json" "alto-networkmap+json" "alto-propmap+json" "alto-propmapparams+json" "alto-updatestreamcontrol+json" "alto-updatestreamparams+json" "AML" "andrew-inset" "applefile" "at+jwt" "ATF" "ATFX" "atom+xml" "atomcat+xml" "atomdeleted+xml" "atomicmail" "atomsvc+xml" "atsc-dwd+xml" "atsc-dynamic-event-message" "atsc-held+xml" "atsc-rdt+json" "atsc-rsat+xml" "ATXML" "auth-policy+xml" "automationml-aml+xml" "automationml-amlx+zip" "bacnet-xdd+zip" "batch-SMTP" "beep+xml" "calendar+json" "calendar+xml" "call-completion" "CALS-1840" "captive+json" "cbor" "cbor-seq" "cccex" "ccmp+xml" "ccxml+xml" "cda+xml" "CDFX+XML" "cdmi-capability" "cdmi-container" "cdmi-domain" "cdmi-object" "cdmi-queue" "cdni" "CEA" "cea-2018+xml" "cellml+xml" "cfw" "cid-edhoc+cbor-seq" "city+json" "clr" "clue_info+xml" "clue+xml" "cms" "cnrp+xml" "coap-group+json" "coap-payload" "commonground" "concise-problem-details+cbor" "conference-info+xml" "cpl+xml" "cose" "cose-key" "cose-key-set" "cose-x509" "csrattrs" "csta+xml" "CSTAdata+xml" "csvm+json" "cwl" "cwl+json" "cwt" "cybercash" "dash+xml" "dash-patch+xml" "dashdelta" "davmount+xml" "dca-rft" "DCD" "dec-dx" "dialog-info+xml" "dicom" "dicom+json" "dicom+xml" "DII" "DIT" "dns+json" "dns-message" "dots+cbor" "dpop+jwt" "dskpp+xml" "dssc+der" "dssc+xml" "dvcs" "edhoc+cbor-seq" "EDI-consent" "EDIFACT" "EDI-X12" "efi" "elm+json" "elm+xml" "EmergencyCallData.cap+xml" "EmergencyCallData.Comment+xml" "EmergencyCallData.Control+xml" "EmergencyCallData.DeviceInfo+xml" "EmergencyCallData.eCall.MSD" "EmergencyCallData.LegacyESN+json" "EmergencyCallData.ProviderInfo+xml" "EmergencyCallData.ServiceInfo+xml" "EmergencyCallData.SubscriberInfo+xml" "EmergencyCallData.VEDS+xml" "emma+xml" "emotionml+xml" "epp+xml" "epub+zip" "eshop" "exi" "expect-ct-report+json" "express" "fastinfoset" "fastsoap" "fdf" "fdt+xml" "fhir+json" "fhir+xml" "fits" "font-sfnt - DEPRECATED in favor of font/sfnt" "font-tdpfr" "font-woff - DEPRECATED in favor of font/woff" "framework-attributes+xml" "geo+json" "geo+json-seq" "geopackage+sqlite3" "geoxacml+xml" "gltf-buffer" "gml+xml" "gzip" "H224" "held+xml" "hl7v2+xml" "http" "hyperstudio" "ibe-key-request+xml" "ibe-pkg-reply+xml" "ibe-pp-data" "iges" "im-iscomposing+xml" "index" "index.cmd" "index.obj" "index.response" "index.vnd" "inkml+xml" "IOTP" "ipfix" "ipp" "ISUP" "its+xml" "java-archive" "javascript (OBSOLETED in favor of text/javascript)" "jf2feed+json" "jose" "jose+json" "jrd+json" "jscalendar+json" "json" "json-patch+json" "json-seq" "jwk+json" "jwk-set+json" "jwt" "kpml-request+xml" "kpml-response+xml" "ld+json" "lgr+xml" "link-format" "linkset" "linkset+json" "load-control+xml" "logout+jwt" "lost+xml" "lostsync+xml" "lpf+zip" "LXF" "mac-binhex40" "macwriteii" "mads+xml" "manifest+json" "marc" "marcxml+xml" "mathematica" "mathml+xml" "mathml-content+xml" "mathml-presentation+xml" "mbms-associated-procedure-description+xml" "mbms-deregister+xml" "mbms-envelope+xml" "mbms-msk-response+xml" "mbms-msk+xml" "mbms-protection-description+xml" "mbms-reception-report+xml" "mbms-register-response+xml" "mbms-register+xml" "mbms-schedule+xml" "mbms-user-service-description+xml" "mbox" "media_control+xml" "media-policy-dataset+xml" "mediaservercontrol+xml" "merge-patch+json" "metalink4+xml" "mets+xml" "MF4" "mikey" "mipc" "missing-blocks+cbor-seq" "mmt-aei+xml" "mmt-usd+xml" "mods+xml" "moss-keys" "moss-signature" "mosskey-data" "mosskey-request" "mp21" "mp4" "mpeg4-generic" "mpeg4-iod" "mpeg4-iod-xmt" "mrb-consumer+xml" "mrb-publish+xml" "msc-ivr+xml" "msc-mixer+xml" "msword" "mud+json" "multipart-core" "mxf" "n-quads" "n-triples" "nasdata" "news-checkgroups" "news-groupinfo" "news-transmission" "nlsml+xml" "node" "nss" "oauth-authz-req+jwt" "oblivious-dns-message" "ocsp-request" "ocsp-response" "octet-stream" "ODA" "odm+xml" "ODX" "oebps-package+xml" "ogg" "ohttp-keys" "opc-nodeset+xml" "oscore" "oxps" "p21" "p21+zip" "p2p-overlay+xml" "passport" "patch-ops-error+xml" "pdf" "PDX" "pem-certificate-chain" "pgp-encrypted" "pgp-keys" "pgp-signature" "pidf-diff+xml" "pidf+xml" "pkcs10" "pkcs7-mime" "pkcs7-signature" "pkcs8" "pkcs8-encrypted" "pkcs12" "pkix-attr-cert" "pkix-cert" "pkix-crl" "pkix-pkipath" "pkixcmp" "pls+xml" "poc-settings+xml" "postscript" "ppsp-tracker+json" "problem+json" "problem+xml" "provenance+xml" "prs.alvestrand.titrax-sheet" "prs.cww" "prs.cyn" "prs.hpub+zip" "prs.implied-document+xml" "prs.implied-executable" "prs.implied-structure" "prs.nprend" "prs.plucker" "prs.rdf-xml-crypt" "prs.vcfbzip2" "prs.xsf+xml" "pskc+xml" "pvd+json" "rdf+xml" "route-apd+xml" "route-s-tsid+xml" "route-usd+xml" "QSIG" "raptorfec" "rdap+json" "reginfo+xml" "relax-ng-compact-syntax" "remote-printing (OBSOLETE)" "reputon+json" "resource-lists-diff+xml" "resource-lists+xml" "rfc+xml" "riscos" "rlmi+xml" "rls-services+xml" "rpki-checklist" "rpki-ghostbusters" "rpki-manifest" "rpki-publication" "rpki-roa" "rpki-updown" "samlassertion+xml" "samlmetadata+xml" "sarif-external-properties+json" "sarif+json" "sbe" "sbml+xml" "scaip+xml" "scim+json" "scvp-cv-request" "scvp-cv-response" "scvp-vp-request" "scvp-vp-response" "sdp" "secevent+jwt" "senml-etch+cbor" "senml-etch+json" "senml-exi" "senml+cbor" "senml+json" "senml+xml" "sensml-exi" "sensml+cbor" "sensml+json" "sensml+xml" "sep-exi" "sep+xml" "session-info" "set-payment" "set-payment-initiation" "set-registration" "set-registration-initiation" "sgml-open-catalog" "shf+xml" "sieve" "simple-filter+xml" "simple-message-summary" "simpleSymbolContainer" "sipc" "slate" "smil (OBSOLETED in favor of application/smil+xml)" "smil+xml" "smpte336m" "soap+fastinfoset" "soap+xml" "sparql-query" "spdx+json" "sparql-results+xml" "spirits-event+xml" "sql" "srgs" "srgs+xml" "sru+xml" "ssml+xml" "stix+json" "swid+cbor" "swid+xml" "tamp-apex-update" "tamp-apex-update-confirm" "tamp-community-update" "tamp-community-update-confirm" "tamp-error" "tamp-sequence-adjust" "tamp-sequence-adjust-confirm" "tamp-status-query" "tamp-status-response" "tamp-update" "tamp-update-confirm" "taxii+json" "td+json" "tei+xml" "TETRA_ISI" "thraud+xml" "timestamp-query" "timestamp-reply" "timestamped-data" "tlsrpt+gzip" "tlsrpt+json" "tm+json" "tnauthlist" "token-introspection+jwt" "trickle-ice-sdpfrag" "trig" "ttml+xml" "tve-trigger" "tzif" "tzif-leap" "urc-grpsheet+xml" "urc-ressheet+xml" "urc-targetdesc+xml" "urc-uisocketdesc+xml" "vcard+json" "vcard+xml" "vemmi" "vnd.1000minds.decision-model+xml" "vnd.1ob" "vnd.3gpp.5gnas" "vnd.3gpp.access-transfer-events+xml" "vnd.3gpp.bsf+xml" "vnd.3gpp.crs+xml" "vnd.3gpp.current-location-discovery+xml" "vnd.3gpp.GMOP+xml" "vnd.3gpp.gtpc" "vnd.3gpp.interworking-data" "vnd.3gpp.lpp" "vnd.3gpp.mc-signalling-ear" "vnd.3gpp.mcdata-affiliation-command+xml" "vnd.3gpp.mcdata-info+xml" "vnd.3gpp.mcdata-msgstore-ctrl-request+xml" "vnd.3gpp.mcdata-payload" "vnd.3gpp.mcdata-regroup+xml" "vnd.3gpp.mcdata-service-config+xml" "vnd.3gpp.mcdata-signalling" "vnd.3gpp.mcdata-ue-config+xml" "vnd.3gpp.mcdata-user-profile+xml" "vnd.3gpp.mcptt-affiliation-command+xml" "vnd.3gpp.mcptt-floor-request+xml" "vnd.3gpp.mcptt-info+xml" "vnd.3gpp.mcptt-location-info+xml" "vnd.3gpp.mcptt-mbms-usage-info+xml" "vnd.3gpp.mcptt-regroup+xml" "vnd.3gpp.mcptt-service-config+xml" "vnd.3gpp.mcptt-signed+xml" "vnd.3gpp.mcptt-ue-config+xml" "vnd.3gpp.mcptt-ue-init-config+xml" "vnd.3gpp.mcptt-user-profile+xml" "vnd.3gpp.mcvideo-affiliation-command+xml" "vnd.3gpp.mcvideo-affiliation-info+xml (OBSOLETED in favor of application/vnd.3gpp.mcvideo-info+xml)" "vnd.3gpp.mcvideo-info+xml" "vnd.3gpp.mcvideo-location-info+xml" "vnd.3gpp.mcvideo-mbms-usage-info+xml" "vnd.3gpp.mcvideo-regroup+xml" "vnd.3gpp.mcvideo-service-config+xml" "vnd.3gpp.mcvideo-transmission-request+xml" "vnd.3gpp.mcvideo-ue-config+xml" "vnd.3gpp.mcvideo-user-profile+xml" "vnd.3gpp.mid-call+xml" "vnd.3gpp.ngap" "vnd.3gpp.pfcp" "vnd.3gpp.pic-bw-large" "vnd.3gpp.pic-bw-small" "vnd.3gpp.pic-bw-var" "vnd.3gpp-prose-pc3a+xml" "vnd.3gpp-prose-pc3ach+xml" "vnd.3gpp-prose-pc3ch+xml" "vnd.3gpp-prose-pc8+xml" "vnd.3gpp-prose+xml" "vnd.3gpp.s1ap" "vnd.3gpp.seal-group-doc+xml" "vnd.3gpp.seal-info+xml" "vnd.3gpp.seal-location-info+xml" "vnd.3gpp.seal-mbms-usage-info+xml" "vnd.3gpp.seal-network-QoS-management-info+xml" "vnd.3gpp.seal-ue-config-info+xml" "vnd.3gpp.seal-unicast-info+xml" "vnd.3gpp.seal-user-profile-info+xml" "vnd.3gpp.sms" "vnd.3gpp.sms+xml" "vnd.3gpp.srvcc-ext+xml" "vnd.3gpp.SRVCC-info+xml" "vnd.3gpp.state-and-event-info+xml" "vnd.3gpp.ussd+xml" "vnd.3gpp.vae-info+xml" "vnd.3gpp-v2x-local-service-information" "vnd.3gpp2.bcmcsinfo+xml" "vnd.3gpp2.sms" "vnd.3gpp2.tcap" "vnd.3gpp.v2x" "vnd.3lightssoftware.imagescal" "vnd.3M.Post-it-Notes" "vnd.accpac.simply.aso" "vnd.accpac.simply.imp" "vnd.acm.addressxfer+json" "vnd.acm.chatbot+json" "vnd.acucobol" "vnd.acucorp" "vnd.adobe.flash.movie" "vnd.adobe.formscentral.fcdt" "vnd.adobe.fxp" "vnd.adobe.partial-upload" "vnd.adobe.xdp+xml" "vnd.aether.imp" "vnd.afpc.afplinedata" "vnd.afpc.afplinedata-pagedef" "vnd.afpc.cmoca-cmresource" "vnd.afpc.foca-charset" "vnd.afpc.foca-codedfont" "vnd.afpc.foca-codepage" "vnd.afpc.modca" "vnd.afpc.modca-cmtable" "vnd.afpc.modca-formdef" "vnd.afpc.modca-mediummap" "vnd.afpc.modca-objectcontainer" "vnd.afpc.modca-overlay" "vnd.afpc.modca-pagesegment" "vnd.age" "vnd.ah-barcode" "vnd.ahead.space" "vnd.airzip.filesecure.azf" "vnd.airzip.filesecure.azs" "vnd.amadeus+json" "vnd.amazon.mobi8-ebook" "vnd.americandynamics.acc" "vnd.amiga.ami" "vnd.amundsen.maze+xml" "vnd.android.ota" "vnd.anki" "vnd.anser-web-certificate-issue-initiation" "vnd.antix.game-component" "vnd.apache.arrow.file" "vnd.apache.arrow.stream" "vnd.apache.thrift.binary" "vnd.apache.thrift.compact" "vnd.apache.thrift.json" "vnd.apexlang" "vnd.api+json" "vnd.aplextor.warrp+json" "vnd.apothekende.reservation+json" "vnd.apple.installer+xml" "vnd.apple.keynote" "vnd.apple.mpegurl" "vnd.apple.numbers" "vnd.apple.pages" "vnd.arastra.swi (OBSOLETED in favor of application/vnd.aristanetworks.swi)" "vnd.aristanetworks.swi" "vnd.artisan+json" "vnd.artsquare" "vnd.astraea-software.iota" "vnd.audiograph" "vnd.autopackage" "vnd.avalon+json" "vnd.avistar+xml" "vnd.balsamiq.bmml+xml" "vnd.banana-accounting" "vnd.bbf.usp.error" "vnd.bbf.usp.msg" "vnd.bbf.usp.msg+json" "vnd.balsamiq.bmpr" "vnd.bekitzur-stech+json" "vnd.belightsoft.lhzd+zip" "vnd.belightsoft.lhzl+zip" "vnd.bint.med-content" "vnd.biopax.rdf+xml" "vnd.blink-idb-value-wrapper" "vnd.blueice.multipass" "vnd.bluetooth.ep.oob" "vnd.bluetooth.le.oob" "vnd.bmi" "vnd.bpf" "vnd.bpf3" "vnd.businessobjects" "vnd.byu.uapi+json" "vnd.cab-jscript" "vnd.canon-cpdl" "vnd.canon-lips" "vnd.capasystems-pg+json" "vnd.cendio.thinlinc.clientconf" "vnd.century-systems.tcp_stream" "vnd.chemdraw+xml" "vnd.chess-pgn" "vnd.chipnuts.karaoke-mmd" "vnd.ciedi" "vnd.cinderella" "vnd.cirpack.isdn-ext" "vnd.citationstyles.style+xml" "vnd.claymore" "vnd.cloanto.rp9" "vnd.clonk.c4group" "vnd.cluetrust.cartomobile-config" "vnd.cluetrust.cartomobile-config-pkg" "vnd.cncf.helm.chart.content.v1.tar+gzip" "vnd.cncf.helm.chart.provenance.v1.prov" "vnd.cncf.helm.config.v1+json" "vnd.coffeescript" "vnd.collabio.xodocuments.document" "vnd.collabio.xodocuments.document-template" "vnd.collabio.xodocuments.presentation" "vnd.collabio.xodocuments.presentation-template" "vnd.collabio.xodocuments.spreadsheet" "vnd.collabio.xodocuments.spreadsheet-template" "vnd.collection.doc+json" "vnd.collection+json" "vnd.collection.next+json" "vnd.comicbook-rar" "vnd.comicbook+zip" "vnd.commerce-battelle" "vnd.commonspace" "vnd.coreos.ignition+json" "vnd.cosmocaller" "vnd.contact.cmsg" "vnd.crick.clicker" "vnd.crick.clicker.keyboard" "vnd.crick.clicker.palette" "vnd.crick.clicker.template" "vnd.crick.clicker.wordbank" "vnd.criticaltools.wbs+xml" "vnd.cryptii.pipe+json" "vnd.crypto-shade-file" "vnd.cryptomator.encrypted" "vnd.cryptomator.vault" "vnd.ctc-posml" "vnd.ctct.ws+xml" "vnd.cups-pdf" "vnd.cups-postscript" "vnd.cups-ppd" "vnd.cups-raster" "vnd.cups-raw" "vnd.cyan.dean.root+xml" "vnd.cybank" "vnd.cyclonedx+json" "vnd.cyclonedx+xml" "vnd.d2l.coursepackage1p0+zip" "vnd.d3m-dataset" "vnd.d3m-problem" "vnd.dart" "vnd.data-vision.rdz" "vnd.datalog" "vnd.datapackage+json" "vnd.dataresource+json" "vnd.dbf" "vnd.debian.binary-package" "vnd.dece.data" "vnd.dece.ttml+xml" "vnd.dece.unspecified" "vnd.dece.zip" "vnd.denovo.fcselayout-link" "vnd.desmume.movie" "vnd.dir-bi.plate-dl-nosuffix" "vnd.dm.delegation+xml" "vnd.dna" "vnd.document+json" "vnd.dolby.mobile.1" "vnd.dolby.mobile.2" "vnd.doremir.scorecloud-binary-document" "vnd.dpgraph" "vnd.dreamfactory" "vnd.drive+json" "vnd.dtg.local" "vnd.dtg.local.flash" "vnd.dtg.local.html" "vnd.dvb.ait" "vnd.dvb.dvbisl+xml" "vnd.dvb.dvbj" "vnd.dvb.esgcontainer" "vnd.dvb.ipdcdftnotifaccess" "vnd.dvb.ipdcesgaccess" "vnd.dvb.ipdcesgaccess2" "vnd.dvb.ipdcesgpdd" "vnd.dvb.ipdcroaming" "vnd.dvb.iptv.alfec-base" "vnd.dvb.iptv.alfec-enhancement" "vnd.dvb.notif-aggregate-root+xml" "vnd.dvb.notif-container+xml" "vnd.dvb.notif-generic+xml" "vnd.dvb.notif-ia-msglist+xml" "vnd.dvb.notif-ia-registration-request+xml" "vnd.dvb.notif-ia-registration-response+xml" "vnd.dvb.notif-init+xml" "vnd.dvb.pfr" "vnd.dvb.service" "vnd.dxr" "vnd.dynageo" "vnd.dzr" "vnd.easykaraoke.cdgdownload" "vnd.ecip.rlp" "vnd.ecdis-update" "vnd.eclipse.ditto+json" "vnd.ecowin.chart" "vnd.ecowin.filerequest" "vnd.ecowin.fileupdate" "vnd.ecowin.series" "vnd.ecowin.seriesrequest" "vnd.ecowin.seriesupdate" "vnd.efi.img" "vnd.efi.iso" "vnd.eln+zip" "vnd.emclient.accessrequest+xml" "vnd.enliven" "vnd.enphase.envoy" "vnd.eprints.data+xml" "vnd.epson.esf" "vnd.epson.msf" "vnd.epson.quickanime" "vnd.epson.salt" "vnd.epson.ssf" "vnd.ericsson.quickcall" "vnd.espass-espass+zip" "vnd.eszigno3+xml" "vnd.etsi.aoc+xml" "vnd.etsi.asic-s+zip" "vnd.etsi.asic-e+zip" "vnd.etsi.cug+xml" "vnd.etsi.iptvcommand+xml" "vnd.etsi.iptvdiscovery+xml" "vnd.etsi.iptvprofile+xml" "vnd.etsi.iptvsad-bc+xml" "vnd.etsi.iptvsad-cod+xml" "vnd.etsi.iptvsad-npvr+xml" "vnd.etsi.iptvservice+xml" "vnd.etsi.iptvsync+xml" "vnd.etsi.iptvueprofile+xml" "vnd.etsi.mcid+xml" "vnd.etsi.mheg5" "vnd.etsi.overload-control-policy-dataset+xml" "vnd.etsi.pstn+xml" "vnd.etsi.sci+xml" "vnd.etsi.simservs+xml" "vnd.etsi.timestamp-token" "vnd.etsi.tsl+xml" "vnd.etsi.tsl.der" "vnd.eu.kasparian.car+json" "vnd.eudora.data" "vnd.evolv.ecig.profile" "vnd.evolv.ecig.settings" "vnd.evolv.ecig.theme" "vnd.exstream-empower+zip" "vnd.exstream-package" "vnd.ezpix-album" "vnd.ezpix-package" "vnd.f-secure.mobile" "vnd.fastcopy-disk-image" "vnd.familysearch.gedcom+zip" "vnd.fdsn.mseed" "vnd.fdsn.seed" "vnd.ffsns" "vnd.ficlab.flb+zip" "vnd.filmit.zfc" "vnd.fints" "vnd.firemonkeys.cloudcell" "vnd.FloGraphIt" "vnd.fluxtime.clip" "vnd.font-fontforge-sfd" "vnd.framemaker" "vnd.freelog.comic" "vnd.frogans.fnc (OBSOLETE)" "vnd.frogans.ltf (OBSOLETE)" "vnd.fsc.weblaunch" "vnd.fujifilm.fb.docuworks" "vnd.fujifilm.fb.docuworks.binder" "vnd.fujifilm.fb.docuworks.container" "vnd.fujifilm.fb.jfi+xml" "vnd.fujitsu.oasys" "vnd.fujitsu.oasys2" "vnd.fujitsu.oasys3" "vnd.fujitsu.oasysgp" "vnd.fujitsu.oasysprs" "vnd.fujixerox.ART4" "vnd.fujixerox.ART-EX" "vnd.fujixerox.ddd" "vnd.fujixerox.docuworks" "vnd.fujixerox.docuworks.binder" "vnd.fujixerox.docuworks.container" "vnd.fujixerox.HBPL" "vnd.fut-misnet" "vnd.futoin+cbor" "vnd.futoin+json" "vnd.fuzzysheet" "vnd.genomatix.tuxedo" "vnd.genozip" "vnd.gentics.grd+json" "vnd.gentoo.catmetadata+xml" "vnd.gentoo.ebuild" "vnd.gentoo.eclass" "vnd.gentoo.gpkg" "vnd.gentoo.manifest" "vnd.gentoo.xpak" "vnd.gentoo.pkgmetadata+xml" "vnd.geo+json (OBSOLETED by [RFC7946] in favor of application/geo+json)" "vnd.geocube+xml (OBSOLETED by request)" "vnd.geogebra.file" "vnd.geogebra.slides" "vnd.geogebra.tool" "vnd.geometry-explorer" "vnd.geonext" "vnd.geoplan" "vnd.geospace" "vnd.gerber" "vnd.globalplatform.card-content-mgt" "vnd.globalplatform.card-content-mgt-response" "vnd.gmx - DEPRECATED" "vnd.gnu.taler.exchange+json" "vnd.gnu.taler.merchant+json" "vnd.google-earth.kml+xml" "vnd.google-earth.kmz" "vnd.gov.sk.e-form+xml" "vnd.gov.sk.e-form+zip" "vnd.gov.sk.xmldatacontainer+xml" "vnd.gpxsee.map+xml" "vnd.grafeq" "vnd.gridmp" "vnd.groove-account" "vnd.groove-help" "vnd.groove-identity-message" "vnd.groove-injector" "vnd.groove-tool-message" "vnd.groove-tool-template" "vnd.groove-vcard" "vnd.hal+json" "vnd.hal+xml" "vnd.HandHeld-Entertainment+xml" "vnd.hbci" "vnd.hc+json" "vnd.hcl-bireports" "vnd.hdt" "vnd.heroku+json" "vnd.hhe.lesson-player" "vnd.hp-HPGL" "vnd.hp-hpid" "vnd.hp-hps" "vnd.hp-jlyt" "vnd.hp-PCL" "vnd.hp-PCLXL" "vnd.hsl" "vnd.httphone" "vnd.hydrostatix.sof-data" "vnd.hyper-item+json" "vnd.hyper+json" "vnd.hyperdrive+json" "vnd.hzn-3d-crossword" "vnd.ibm.afplinedata (OBSOLETED in favor of vnd.afpc.afplinedata)" "vnd.ibm.electronic-media" "vnd.ibm.MiniPay" "vnd.ibm.modcap (OBSOLETED in favor of application/vnd.afpc.modca)" "vnd.ibm.rights-management" "vnd.ibm.secure-container" "vnd.iccprofile" "vnd.ieee.1905" "vnd.igloader" "vnd.imagemeter.folder+zip" "vnd.imagemeter.image+zip" "vnd.immervision-ivp" "vnd.immervision-ivu" "vnd.ims.imsccv1p1" "vnd.ims.imsccv1p2" "vnd.ims.imsccv1p3" "vnd.ims.lis.v2.result+json" "vnd.ims.lti.v2.toolconsumerprofile+json" "vnd.ims.lti.v2.toolproxy.id+json" "vnd.ims.lti.v2.toolproxy+json" "vnd.ims.lti.v2.toolsettings+json" "vnd.ims.lti.v2.toolsettings.simple+json" "vnd.informedcontrol.rms+xml" "vnd.infotech.project" "vnd.infotech.project+xml" "vnd.informix-visionary (OBSOLETED in favor of application/vnd.visionary)" "vnd.innopath.wamp.notification" "vnd.insors.igm" "vnd.intercon.formnet" "vnd.intergeo" "vnd.intertrust.digibox" "vnd.intertrust.nncp" "vnd.intu.qbo" "vnd.intu.qfx" "vnd.ipfs.ipns-record" "vnd.ipld.car" "vnd.ipld.dag-cbor" "vnd.ipld.dag-json" "vnd.ipld.raw" "vnd.iptc.g2.catalogitem+xml" "vnd.iptc.g2.conceptitem+xml" "vnd.iptc.g2.knowledgeitem+xml" "vnd.iptc.g2.newsitem+xml" "vnd.iptc.g2.newsmessage+xml" "vnd.iptc.g2.packageitem+xml" "vnd.iptc.g2.planningitem+xml" "vnd.ipunplugged.rcprofile" "vnd.irepository.package+xml" "vnd.is-xpr" "vnd.isac.fcs" "vnd.jam" "vnd.iso11783-10+zip" "vnd.japannet-directory-service" "vnd.japannet-jpnstore-wakeup" "vnd.japannet-payment-wakeup" "vnd.japannet-registration" "vnd.japannet-registration-wakeup" "vnd.japannet-setstore-wakeup" "vnd.japannet-verification" "vnd.japannet-verification-wakeup" "vnd.jcp.javame.midlet-rms" "vnd.jisp" "vnd.joost.joda-archive" "vnd.jsk.isdn-ngn" "vnd.kahootz" "vnd.kde.karbon" "vnd.kde.kchart" "vnd.kde.kformula" "vnd.kde.kivio" "vnd.kde.kontour" "vnd.kde.kpresenter" "vnd.kde.kspread" "vnd.kde.kword" "vnd.kenameaapp" "vnd.kidspiration" "vnd.Kinar" "vnd.koan" "vnd.kodak-descriptor" "vnd.las" "vnd.las.las+json" "vnd.las.las+xml" "vnd.laszip" "vnd.leap+json" "vnd.liberty-request+xml" "vnd.llamagraphics.life-balance.desktop" "vnd.llamagraphics.life-balance.exchange+xml" "vnd.logipipe.circuit+zip" "vnd.loom" "vnd.lotus-1-2-3" "vnd.lotus-approach" "vnd.lotus-freelance" "vnd.lotus-notes" "vnd.lotus-organizer" "vnd.lotus-screencam" "vnd.lotus-wordpro" "vnd.macports.portpkg" "vnd.mapbox-vector-tile" "vnd.marlin.drm.actiontoken+xml" "vnd.marlin.drm.conftoken+xml" "vnd.marlin.drm.license+xml" "vnd.marlin.drm.mdcf" "vnd.mason+json" "vnd.maxar.archive.3tz+zip" "vnd.maxmind.maxmind-db" "vnd.mcd" "vnd.mdl" "vnd.mdl-mbsdf" "vnd.medcalcdata" "vnd.mediastation.cdkey" "vnd.medicalholodeck.recordxr" "vnd.meridian-slingshot" "vnd.mermaid" "vnd.MFER" "vnd.mfmp" "vnd.micro+json" "vnd.micrografx.flo" "vnd.micrografx.igx" "vnd.microsoft.portable-executable" "vnd.microsoft.windows.thumbnail-cache" "vnd.miele+json" "vnd.mif" "vnd.minisoft-hp3000-save" "vnd.mitsubishi.misty-guard.trustweb" "vnd.Mobius.DAF" "vnd.Mobius.DIS" "vnd.Mobius.MBK" "vnd.Mobius.MQY" "vnd.Mobius.MSL" "vnd.Mobius.PLC" "vnd.Mobius.TXF" "vnd.modl" "vnd.mophun.application" "vnd.mophun.certificate" "vnd.motorola.flexsuite" "vnd.motorola.flexsuite.adsi" "vnd.motorola.flexsuite.fis" "vnd.motorola.flexsuite.gotap" "vnd.motorola.flexsuite.kmr" "vnd.motorola.flexsuite.ttc" "vnd.motorola.flexsuite.wem" "vnd.motorola.iprm" "vnd.mozilla.xul+xml" "vnd.ms-artgalry" "vnd.ms-asf" "vnd.ms-cab-compressed" "vnd.ms-3mfdocument" "vnd.ms-excel" "vnd.ms-excel.addin.macroEnabled.12" "vnd.ms-excel.sheet.binary.macroEnabled.12" "vnd.ms-excel.sheet.macroEnabled.12" "vnd.ms-excel.template.macroEnabled.12" "vnd.ms-fontobject" "vnd.ms-htmlhelp" "vnd.ms-ims" "vnd.ms-lrm" "vnd.ms-office.activeX+xml" "vnd.ms-officetheme" "vnd.ms-playready.initiator+xml" "vnd.ms-powerpoint" "vnd.ms-powerpoint.addin.macroEnabled.12" "vnd.ms-powerpoint.presentation.macroEnabled.12" "vnd.ms-powerpoint.slide.macroEnabled.12" "vnd.ms-powerpoint.slideshow.macroEnabled.12" "vnd.ms-powerpoint.template.macroEnabled.12" "vnd.ms-PrintDeviceCapabilities+xml" "vnd.ms-PrintSchemaTicket+xml" "vnd.ms-project" "vnd.ms-tnef" "vnd.ms-windows.devicepairing" "vnd.ms-windows.nwprinting.oob" "vnd.ms-windows.printerpairing" "vnd.ms-windows.wsd.oob" "vnd.ms-wmdrm.lic-chlg-req" "vnd.ms-wmdrm.lic-resp" "vnd.ms-wmdrm.meter-chlg-req" "vnd.ms-wmdrm.meter-resp" "vnd.ms-word.document.macroEnabled.12" "vnd.ms-word.template.macroEnabled.12" "vnd.ms-works" "vnd.ms-wpl" "vnd.ms-xpsdocument" "vnd.msa-disk-image" "vnd.mseq" "vnd.msign" "vnd.multiad.creator" "vnd.multiad.creator.cif" "vnd.musician" "vnd.music-niff" "vnd.muvee.style" "vnd.mynfc" "vnd.nacamar.ybrid+json" "vnd.ncd.control" "vnd.ncd.reference" "vnd.nearst.inv+json" "vnd.nebumind.line" "vnd.nervana" "vnd.netfpx" "vnd.neurolanguage.nlu" "vnd.nimn" "vnd.nintendo.snes.rom" "vnd.nintendo.nitro.rom" "vnd.nitf" "vnd.noblenet-directory" "vnd.noblenet-sealer" "vnd.noblenet-web" "vnd.nokia.catalogs" "vnd.nokia.conml+wbxml" "vnd.nokia.conml+xml" "vnd.nokia.iptv.config+xml" "vnd.nokia.iSDS-radio-presets" "vnd.nokia.landmark+wbxml" "vnd.nokia.landmark+xml" "vnd.nokia.landmarkcollection+xml" "vnd.nokia.ncd" "vnd.nokia.n-gage.ac+xml" "vnd.nokia.n-gage.data" "vnd.nokia.n-gage.symbian.install (OBSOLETE" "vnd.nokia.pcd+wbxml" "vnd.nokia.pcd+xml" "vnd.nokia.radio-preset" "vnd.nokia.radio-presets" "vnd.novadigm.EDM" "vnd.novadigm.EDX" "vnd.novadigm.EXT" "vnd.ntt-local.content-share" "vnd.ntt-local.file-transfer" "vnd.ntt-local.ogw_remote-access" "vnd.ntt-local.sip-ta_remote" "vnd.ntt-local.sip-ta_tcp_stream" "vnd.oasis.opendocument.base" "vnd.oasis.opendocument.chart" "vnd.oasis.opendocument.chart-template" "vnd.oasis.opendocument.database (OBSOLETED in favor of application/vnd.oasis.opendocument.base)" "vnd.oasis.opendocument.formula" "vnd.oasis.opendocument.formula-template" "vnd.oasis.opendocument.graphics" "vnd.oasis.opendocument.graphics-template" "vnd.oasis.opendocument.image" "vnd.oasis.opendocument.image-template" "vnd.oasis.opendocument.presentation" "vnd.oasis.opendocument.presentation-template" "vnd.oasis.opendocument.spreadsheet" "vnd.oasis.opendocument.spreadsheet-template" "vnd.oasis.opendocument.text" "vnd.oasis.opendocument.text-master" "vnd.oasis.opendocument.text-master-template" "vnd.oasis.opendocument.text-template" "vnd.oasis.opendocument.text-web" "vnd.obn" "vnd.ocf+cbor" "vnd.oci.image.manifest.v1+json" "vnd.oftn.l10n+json" "vnd.oipf.contentaccessdownload+xml" "vnd.oipf.contentaccessstreaming+xml" "vnd.oipf.cspg-hexbinary" "vnd.oipf.dae.svg+xml" "vnd.oipf.dae.xhtml+xml" "vnd.oipf.mippvcontrolmessage+xml" "vnd.oipf.pae.gem" "vnd.oipf.spdiscovery+xml" "vnd.oipf.spdlist+xml" "vnd.oipf.ueprofile+xml" "vnd.oipf.userprofile+xml" "vnd.olpc-sugar" "vnd.oma.bcast.associated-procedure-parameter+xml" "vnd.oma.bcast.drm-trigger+xml" "vnd.oma.bcast.imd+xml" "vnd.oma.bcast.ltkm" "vnd.oma.bcast.notification+xml" "vnd.oma.bcast.provisioningtrigger" "vnd.oma.bcast.sgboot" "vnd.oma.bcast.sgdd+xml" "vnd.oma.bcast.sgdu" "vnd.oma.bcast.simple-symbol-container" "vnd.oma.bcast.smartcard-trigger+xml" "vnd.oma.bcast.sprov+xml" "vnd.oma.bcast.stkm" "vnd.oma.cab-address-book+xml" "vnd.oma.cab-feature-handler+xml" "vnd.oma.cab-pcc+xml" "vnd.oma.cab-subs-invite+xml" "vnd.oma.cab-user-prefs+xml" "vnd.oma.dcd" "vnd.oma.dcdc" "vnd.oma.dd2+xml" "vnd.oma.drm.risd+xml" "vnd.oma.group-usage-list+xml" "vnd.oma.lwm2m+cbor" "vnd.oma.lwm2m+json" "vnd.oma.lwm2m+tlv" "vnd.oma.pal+xml" "vnd.oma.poc.detailed-progress-report+xml" "vnd.oma.poc.final-report+xml" "vnd.oma.poc.groups+xml" "vnd.oma.poc.invocation-descriptor+xml" "vnd.oma.poc.optimized-progress-report+xml" "vnd.oma.push" "vnd.oma.scidm.messages+xml" "vnd.oma.xcap-directory+xml" "vnd.omads-email+xml" "vnd.omads-file+xml" "vnd.omads-folder+xml" "vnd.omaloc-supl-init" "vnd.oma-scws-config" "vnd.oma-scws-http-request" "vnd.oma-scws-http-response" "vnd.onepager" "vnd.onepagertamp" "vnd.onepagertamx" "vnd.onepagertat" "vnd.onepagertatp" "vnd.onepagertatx" "vnd.onvif.metadata" "vnd.openblox.game-binary" "vnd.openblox.game+xml" "vnd.openeye.oeb" "vnd.openstreetmap.data+xml" "vnd.opentimestamps.ots" "vnd.openxmlformats-officedocument.custom-properties+xml" "vnd.openxmlformats-officedocument.customXmlProperties+xml" "vnd.openxmlformats-officedocument.drawing+xml" "vnd.openxmlformats-officedocument.drawingml.chart+xml" "vnd.openxmlformats-officedocument.drawingml.chartshapes+xml" "vnd.openxmlformats-officedocument.drawingml.diagramColors+xml" "vnd.openxmlformats-officedocument.drawingml.diagramData+xml" "vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml" "vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml" "vnd.openxmlformats-officedocument.extended-properties+xml" "vnd.openxmlformats-officedocument.presentationml.commentAuthors+xml" "vnd.openxmlformats-officedocument.presentationml.comments+xml" "vnd.openxmlformats-officedocument.presentationml.handoutMaster+xml" "vnd.openxmlformats-officedocument.presentationml.notesMaster+xml" "vnd.openxmlformats-officedocument.presentationml.notesSlide+xml" "vnd.openxmlformats-officedocument.presentationml.presentation" "vnd.openxmlformats-officedocument.presentationml.presentation.main+xml" "vnd.openxmlformats-officedocument.presentationml.presProps+xml" "vnd.openxmlformats-officedocument.presentationml.slide" "vnd.openxmlformats-officedocument.presentationml.slide+xml" "vnd.openxmlformats-officedocument.presentationml.slideLayout+xml" "vnd.openxmlformats-officedocument.presentationml.slideMaster+xml" "vnd.openxmlformats-officedocument.presentationml.slideshow" "vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml" "vnd.openxmlformats-officedocument.presentationml.slideUpdateInfo+xml" "vnd.openxmlformats-officedocument.presentationml.tableStyles+xml" "vnd.openxmlformats-officedocument.presentationml.tags+xml" "vnd.openxmlformats-officedocument.presentationml.template" "vnd.openxmlformats-officedocument.presentationml.template.main+xml" "vnd.openxmlformats-officedocument.presentationml.viewProps+xml" "vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml" "vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml" "vnd.openxmlformats-officedocument.spreadsheetml.comments+xml" "vnd.openxmlformats-officedocument.spreadsheetml.connections+xml" "vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml" "vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml" "vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml" "vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml" "vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml" "vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml" "vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml" "vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml" "vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml" "vnd.openxmlformats-officedocument.spreadsheetml.sheet" "vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" "vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml" "vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" "vnd.openxmlformats-officedocument.spreadsheetml.table+xml" "vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml" "vnd.openxmlformats-officedocument.spreadsheetml.template" "vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml" "vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml" "vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml" "vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" "vnd.openxmlformats-officedocument.theme+xml" "vnd.openxmlformats-officedocument.themeOverride+xml" "vnd.openxmlformats-officedocument.vmlDrawing" "vnd.openxmlformats-officedocument.wordprocessingml.comments+xml" "vnd.openxmlformats-officedocument.wordprocessingml.document" "vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml" "vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml" "vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml" "vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml" "vnd.openxmlformats-officedocument.wordprocessingml.footer+xml" "vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml" "vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml" "vnd.openxmlformats-officedocument.wordprocessingml.settings+xml" "vnd.openxmlformats-officedocument.wordprocessingml.styles+xml" "vnd.openxmlformats-officedocument.wordprocessingml.template" "vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml" "vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml" "vnd.openxmlformats-package.core-properties+xml" "vnd.openxmlformats-package.digital-signature-xmlsignature+xml" "vnd.openxmlformats-package.relationships+xml" "vnd.oracle.resource+json" "vnd.orange.indata" "vnd.osa.netdeploy" "vnd.osgeo.mapguide.package" "vnd.osgi.bundle" "vnd.osgi.dp" "vnd.osgi.subsystem" "vnd.otps.ct-kip+xml" "vnd.oxli.countgraph" "vnd.pagerduty+json" "vnd.palm" "vnd.panoply" "vnd.paos.xml" "vnd.patentdive" "vnd.patientecommsdoc" "vnd.pawaafile" "vnd.pcos" "vnd.pg.format" "vnd.pg.osasli" "vnd.piaccess.application-licence" "vnd.picsel" "vnd.pmi.widget" "vnd.poc.group-advertisement+xml" "vnd.pocketlearn" "vnd.powerbuilder6" "vnd.powerbuilder6-s" "vnd.powerbuilder7" "vnd.powerbuilder75" "vnd.powerbuilder75-s" "vnd.powerbuilder7-s" "vnd.preminet" "vnd.previewsystems.box" "vnd.proteus.magazine" "vnd.psfs" "vnd.pt.mundusmundi" "vnd.publishare-delta-tree" "vnd.pvi.ptid1" "vnd.pwg-multiplexed" "vnd.pwg-xhtml-print+xml" "vnd.qualcomm.brew-app-res" "vnd.quarantainenet" "vnd.Quark.QuarkXPress" "vnd.quobject-quoxdocument" "vnd.radisys.moml+xml" "vnd.radisys.msml-audit-conf+xml" "vnd.radisys.msml-audit-conn+xml" "vnd.radisys.msml-audit-dialog+xml" "vnd.radisys.msml-audit-stream+xml" "vnd.radisys.msml-audit+xml" "vnd.radisys.msml-conf+xml" "vnd.radisys.msml-dialog-base+xml" "vnd.radisys.msml-dialog-fax-detect+xml" "vnd.radisys.msml-dialog-fax-sendrecv+xml" "vnd.radisys.msml-dialog-group+xml" "vnd.radisys.msml-dialog-speech+xml" "vnd.radisys.msml-dialog-transform+xml" "vnd.radisys.msml-dialog+xml" "vnd.radisys.msml+xml" "vnd.rainstor.data" "vnd.rapid" "vnd.rar" "vnd.realvnc.bed" "vnd.recordare.musicxml" "vnd.recordare.musicxml+xml" "vnd.relpipe" "vnd.RenLearn.rlprint" "vnd.resilient.logic" "vnd.restful+json" "vnd.rig.cryptonote" "vnd.route66.link66+xml" "vnd.rs-274x" "vnd.ruckus.download" "vnd.s3sms" "vnd.sailingtracker.track" "vnd.sar" "vnd.sbm.cid" "vnd.sbm.mid2" "vnd.scribus" "vnd.sealed.3df" "vnd.sealed.csf" "vnd.sealed.doc" "vnd.sealed.eml" "vnd.sealed.mht" "vnd.sealed.net" "vnd.sealed.ppt" "vnd.sealed.tiff" "vnd.sealed.xls" "vnd.sealedmedia.softseal.html" "vnd.sealedmedia.softseal.pdf" "vnd.seemail" "vnd.seis+json" "vnd.sema" "vnd.semd" "vnd.semf" "vnd.shade-save-file" "vnd.shana.informed.formdata" "vnd.shana.informed.formtemplate" "vnd.shana.informed.interchange" "vnd.shana.informed.package" "vnd.shootproof+json" "vnd.shopkick+json" "vnd.shp" "vnd.shx" "vnd.sigrok.session" "vnd.SimTech-MindMapper" "vnd.siren+json" "vnd.smaf" "vnd.smart.notebook" "vnd.smart.teacher" "vnd.smintio.portals.archive" "vnd.snesdev-page-table" "vnd.software602.filler.form+xml" "vnd.software602.filler.form-xml-zip" "vnd.solent.sdkm+xml" "vnd.spotfire.dxp" "vnd.spotfire.sfs" "vnd.sqlite3" "vnd.sss-cod" "vnd.sss-dtf" "vnd.sss-ntf" "vnd.stepmania.package" "vnd.stepmania.stepchart" "vnd.street-stream" "vnd.sun.wadl+xml" "vnd.sus-calendar" "vnd.svd" "vnd.swiftview-ics" "vnd.sybyl.mol2" "vnd.sycle+xml" "vnd.syft+json" "vnd.syncml.dm.notification" "vnd.syncml.dmddf+xml" "vnd.syncml.dmtnds+wbxml" "vnd.syncml.dmtnds+xml" "vnd.syncml.dmddf+wbxml" "vnd.syncml.dm+wbxml" "vnd.syncml.dm+xml" "vnd.syncml.ds.notification" "vnd.syncml+xml" "vnd.tableschema+json" "vnd.tao.intent-module-archive" "vnd.tcpdump.pcap" "vnd.think-cell.ppttc+json" "vnd.tml" "vnd.tmd.mediaflex.api+xml" "vnd.tmobile-livetv" "vnd.tri.onesource" "vnd.trid.tpt" "vnd.triscape.mxs" "vnd.trueapp" "vnd.truedoc" "vnd.ubisoft.webplayer" "vnd.ufdl" "vnd.uiq.theme" "vnd.umajin" "vnd.unity" "vnd.uoml+xml" "vnd.uplanet.alert" "vnd.uplanet.alert-wbxml" "vnd.uplanet.bearer-choice" "vnd.uplanet.bearer-choice-wbxml" "vnd.uplanet.cacheop" "vnd.uplanet.cacheop-wbxml" "vnd.uplanet.channel" "vnd.uplanet.channel-wbxml" "vnd.uplanet.list" "vnd.uplanet.listcmd" "vnd.uplanet.listcmd-wbxml" "vnd.uplanet.list-wbxml" "vnd.uri-map" "vnd.uplanet.signal" "vnd.valve.source.material" "vnd.vcx" "vnd.vd-study" "vnd.vectorworks" "vnd.vel+json" "vnd.verimatrix.vcas" "vnd.veritone.aion+json" "vnd.veryant.thin" "vnd.ves.encrypted" "vnd.vidsoft.vidconference" "vnd.visio" "vnd.visionary" "vnd.vividence.scriptfile" "vnd.vsf" "vnd.wap.sic" "vnd.wap.slc" "vnd.wap.wbxml" "vnd.wap.wmlc" "vnd.wap.wmlscriptc" "vnd.wasmflow.wafl" "vnd.webturbo" "vnd.wfa.dpp" "vnd.wfa.p2p" "vnd.wfa.wsc" "vnd.windows.devicepairing" "vnd.wmc" "vnd.wmf.bootstrap" "vnd.wolfram.mathematica" "vnd.wolfram.mathematica.package" "vnd.wolfram.player" "vnd.wordlift" "vnd.wordperfect" "vnd.wqd" "vnd.wrq-hp3000-labelled" "vnd.wt.stf" "vnd.wv.csp+xml" "vnd.wv.csp+wbxml" "vnd.wv.ssp+xml" "vnd.xacml+json" "vnd.xara" "vnd.xfdl" "vnd.xfdl.webform" "vnd.xmi+xml" "vnd.xmpie.cpkg" "vnd.xmpie.dpkg" "vnd.xmpie.plan" "vnd.xmpie.ppkg" "vnd.xmpie.xlim" "vnd.yamaha.hv-dic" "vnd.yamaha.hv-script" "vnd.yamaha.hv-voice" "vnd.yamaha.openscoreformat.osfpvg+xml" "vnd.yamaha.openscoreformat" "vnd.yamaha.remote-setup" "vnd.yamaha.smaf-audio" "vnd.yamaha.smaf-phrase" "vnd.yamaha.through-ngn" "vnd.yamaha.tunnel-udpencap" "vnd.yaoweme" "vnd.yellowriver-custom-menu" "vnd.youtube.yt (OBSOLETED in favor of video/vnd.youtube.yt)" "vnd.zul" "vnd.zzazz.deck+xml" "voicexml+xml" "voucher-cms+json" "vq-rtcpxr" "wasm" "watcherinfo+xml" "webpush-options+json" "whoispp-query" "whoispp-response" "widget" "wita" "wordperfect5.1" "wsdl+xml" "wspolicy+xml" "x-pki-message" "x-www-form-urlencoded" "x-x509-ca-cert" "x-x509-ca-ra-cert" "x-x509-next-ca-cert" "x400-bp" "xacml+xml" "xcap-att+xml" "xcap-caps+xml" "xcap-diff+xml" "xcap-el+xml" "xcap-error+xml" "xcap-ns+xml" "xcon-conference-info-diff+xml" "xcon-conference-info+xml" "xenc+xml" "xfdf" "xhtml+xml" "xliff+xml" "xml-dtd" "xml-patch+xml" "xmpp+xml" "xop+xml" "xslt+xml" "xv+xml" "yaml" "yang" "yang-data+cbor" "yang-data+json" "yang-data+xml" "yang-patch+json" "yang-patch+xml" "yin+xml" "zip" "zlib" "zstd" ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "format type" ; + sh:order 2 ; + sh:path gx:formatType ], + [ sh:description "Type of data support: digital, physical." ; + sh:in ( "digital" "physical" ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "access type" ; + sh:order 1 ; + sh:path gx:accessType ], + [ sh:description "The mean to request data retrieval: API, email, webform, unregisteredLetter, registeredLetter, supportCenter." ; + sh:in ( "API" "email" "webform" "unregisteredLetter" "registeredLetter" "supportCenter" ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "request type" ; + sh:order 0 ; + sh:path gx:requestType ] ; + sh:targetClass gx:DataAccountExport . + +gx:Endpoint a sh:NodeShape ; + sh:closed false ; + sh:description "An endpoint is a mean to access and interact with a service or a resource." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class gx:StandardConformity ; + sh:description "Provides information about applied standards." ; + sh:minCount 1 ; + sh:name "standard conformity" ; + sh:order 1 ; + sh:path gx:standardConformity ], + [ sh:datatype xsd:string ; + sh:description "The formal description (e.g. openAPI Description) of the endpoint." ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path gx:formalDescription ], + [ sh:datatype xsd:anyURI ; + sh:description "The URL of the endpoint where it can be accessed." ; + sh:maxCount 1 ; + sh:name "endpoint URL" ; + sh:order 0 ; + sh:path gx:endpointURL ] ; + sh:targetClass gx:Endpoint . + +gx:GPU a sh:NodeShape ; + sh:closed false ; + sh:description "Graphical processing unit of virtual and physical machines." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:integer ; + sh:description "Over-subscription means assigning more capacity to virtual machines that the physical device has. Default over-subscription ratio defines the amount of default over-subscription as a value larger or equal to 1.0. 1.0 means no over-subscription." ; + sh:maxCount 1 ; + sh:minInclusive 1 ; + sh:name "default over-subscription ratio" ; + sh:order 6 ; + sh:path gx:defaultOversubscriptionRatio ], + [ sh:description "Interconnection of multiple GPUs within a server system" ; + sh:in ( "NVLink" "RoCE2" "Xe Link" "Infinity Fabric" "other" "none" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path gx:gpuInterconnection ], + [ sh:datatype xsd:string ; + sh:description "Vendor of the device." ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path gx:vendor ], + [ sh:datatype xsd:integer ; + sh:description "Number of processing units, also called compute units, execution units or streaming multiprocessors, of the GPU." ; + sh:maxCount 1 ; + sh:minInclusive 1 ; + sh:name "gpu processing units" ; + sh:order 2 ; + sh:path gx:gpuProcessingUnits ], + [ sh:datatype xsd:string ; + sh:description "Vendor specific generation of the device." ; + sh:maxCount 1 ; + sh:name "Generation of the device" ; + sh:order 5 ; + sh:path gx:generation ], + [ sh:datatype xsd:integer ; + sh:description "Over-subscription means assigning more capacity to virtual machines that the physical device has. Supported over-subscription ratio defines the amount of supported over-subscription as a value larger or equal to 1.0. 1.0 means no over-subscription." ; + sh:maxCount 1 ; + sh:minInclusive 1 ; + sh:name "supported over-subscription ratio" ; + sh:order 7 ; + sh:path gx:supportedOversubscriptionRatio ], + [ sh:datatype xsd:boolean ; + sh:description "If true, GPU is provided via passthrough, otherwise GPU is virtualized." ; + sh:maxCount 1 ; + sh:name "GPU path through" ; + sh:order 3 ; + sh:path gx:gpuPassthrough ], + [ sh:class gx:MemorySize ; + sh:description "Size of memory of the GPU." ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path gx:gpuMemory ] ; + sh:targetClass gx:GPU . + +gx:InfrastructureServiceOffering a sh:NodeShape ; + sh:closed false ; + sh:description "A digital service available for order and offering computational, storage and/pr network capabilities." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Infrastructure Service Offering" ; + sh:property [ sh:class gx:TermsAndConditions ; + sh:description "One or more Terms and Conditions applying to that service." ; + sh:minCount 1 ; + sh:name "terms and conditions" ; + sh:order 3 ; + sh:path gx:serviceOfferingTermsAndConditions ], + [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 11 ; + sh:path gx:name ], + [ sh:description "A list of resolvable links to Gaia-X Credentials of service offerings related to the service and that can exist independently of it." ; + sh:name "depends on" ; + sh:or ( [ sh:class gx:ServiceOffering ] [ sh:class gx:InfrastructureServiceOffering ] [ sh:class gx:ComputeServiceOffering ] [ sh:class gx:VirtualMachineServiceOffering ] ) ; + sh:order 1 ; + sh:path gx:dependsOn ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 12 ; + sh:path gx:description ], + [ sh:description "One or more data protection regimes applying to the service offering." ; + sh:in ( "GDPR2016" "LGPD2019" "PDPA2012" "CCPA2018" "VCDPA2021" ) ; + sh:name "data protection regime" ; + sh:order 5 ; + sh:path gx:dataProtectionRegime ], + [ sh:class gx:DataAccountExport ; + sh:description "One or more methods to export data out of the service." ; + sh:minCount 1 ; + sh:name "data account export" ; + sh:order 6 ; + sh:path gx:dataAccountExport ], + [ sh:class gx:Endpoint ; + sh:description "Endpoint through which the Service Offering can be accessed." ; + sh:maxCount 1 ; + sh:name "endpoint" ; + sh:order 9 ; + sh:path gx:endpoint ], + [ sh:description "A list of resolvable links to Gaia-X Credentials of resources related to the service and that can exist independently of it." ; + sh:name "aggregation of" ; + sh:or ( [ sh:class gx:PhysicalResource ] [ sh:class gx:VirtualResource ] [ sh:class gx:SoftwareResource ] [ sh:class gx:OperatingSystem ] ) ; + sh:order 2 ; + sh:path gx:aggregationOfResources ], + [ sh:description "Provision type of the service" ; + sh:in ( "private" "public" "hybrid" ) ; + sh:maxCount 1 ; + sh:name "provision type" ; + sh:order 8 ; + sh:path gx:provisionType ], + [ sh:datatype xsd:string ; + sh:description "Keywords that describe / tag the service." ; + sh:order 7 ; + sh:path gx:keyword ], + [ sh:description "List of Resource references where service is hosted and can be instantiated. Can refer to availabilty zones, data centers, regions, etc." ; + sh:name "hosted on" ; + sh:or ( [ sh:class gx:VirtualResource ] [ sh:class gx:PhysicalResource ] ) ; + sh:order 10 ; + sh:path gx:hostedOn ], + [ sh:class gx:LegalPerson ; + sh:description "A resolvable link to Gaia-X Credential of the participant providing the service." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "provided by" ; + sh:order 0 ; + sh:path gx:providedBy ], + [ sh:datatype xsd:string ; + sh:description "Ome or more policies expressed using a DSL (e.g., Rego or ODRL) (access control, throttling, usage, retention, ...). If there is no specified usage policy constraints, the policy should express a simple default: " ; + sh:minCount 1 ; + sh:order 4 ; + sh:path gx:servicePolicy ] ; + sh:targetClass gx:InfrastructureServiceOffering . + +gx:Memory a sh:NodeShape ; + sh:closed false ; + sh:description "Details with respect to properties and capabilities of RAM." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:boolean ; + sh:description "If true, encryption of memory at the hardware level is enabled. Default: False." ; + sh:maxCount 1 ; + sh:name "Hardware Encryption enabled" ; + sh:order 4 ; + sh:path gx:hardwareEncryption ], + [ sh:datatype xsd:integer ; + sh:description "Over-subscription means assigning more capacity to virtual machines that the physical device has. Default over-subscription ratio defines the amount of default over-subscription as a value larger or equal to 1.0. 1.0 means no over-subscription." ; + sh:maxCount 1 ; + sh:minInclusive 1 ; + sh:name "default over-subscription ratio" ; + sh:order 7 ; + sh:path gx:defaultOversubscriptionRatio ], + [ sh:class gx:MemorySize ; + sh:description "Memory size of RAM." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "memory size" ; + sh:order 0 ; + sh:path gx:memorySize ], + [ sh:datatype xsd:string ; + sh:description "Vendor of the device." ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path gx:vendor ], + [ sh:datatype xsd:boolean ; + sh:description "Error connection code allows to detect and correct bit errors in data. True, if error-correction-code is supported by the ram, false otherwise. Default \"False\"" ; + sh:maxCount 1 ; + sh:name "error correction code (ecc)" ; + sh:order 3 ; + sh:path gx:eccEnabled ], + [ sh:description "DRAM technology name defined by JEDEC" ; + sh:in ( "DDR4" "DDR5" "GDDR5" "GDDR6" "other" ) ; + sh:maxCount 1 ; + sh:name "memory class" ; + sh:order 1 ; + sh:path gx:memoryClass ], + [ sh:description "Rank defines the number of memory chip banks and the buffering used to access these." ; + sh:in ( "1R RDIMM" "2R RDIMM" "4R LRDIMM" "8R LRDIMM" "other" ) ; + sh:maxCount 1 ; + sh:name "memory rank" ; + sh:order 2 ; + sh:path gx:memoryRank ], + [ sh:datatype xsd:string ; + sh:description "Vendor specific generation of the device." ; + sh:maxCount 1 ; + sh:name "Generation of the device" ; + sh:order 6 ; + sh:path gx:generation ], + [ sh:datatype xsd:integer ; + sh:description "Over-subscription means assigning more capacity to virtual machines that the physical device has. Supported over-subscription ratio defines the amount of supported over-subscription as a value larger or equal to 1.0. 1.0 means no over-subscription." ; + sh:maxCount 1 ; + sh:minInclusive 1 ; + sh:name "supported over-subscription ratio" ; + sh:order 8 ; + sh:path gx:supportedOversubscriptionRatio ] ; + sh:targetClass gx:Memory . + +gx:ServiceOffering a sh:NodeShape ; + sh:closed false ; + sh:description "A digital service available for order." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Service Offering" ; + sh:property [ sh:datatype xsd:string ; + sh:description "Ome or more policies expressed using a DSL (e.g., Rego or ODRL) (access control, throttling, usage, retention, ...). If there is no specified usage policy constraints, the policy should express a simple default: " ; + sh:minCount 1 ; + sh:order 4 ; + sh:path gx:servicePolicy ], + [ sh:class gx:TermsAndConditions ; + sh:description "One or more Terms and Conditions applying to that service." ; + sh:minCount 1 ; + sh:name "terms and conditions" ; + sh:order 3 ; + sh:path gx:serviceOfferingTermsAndConditions ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 12 ; + sh:path gx:description ], + [ sh:datatype xsd:string ; + sh:description "Keywords that describe / tag the service." ; + sh:order 7 ; + sh:path gx:keyword ], + [ sh:description "A list of resolvable links to Gaia-X Credentials of service offerings related to the service and that can exist independently of it." ; + sh:name "depends on" ; + sh:or ( [ sh:class gx:ServiceOffering ] [ sh:class gx:InfrastructureServiceOffering ] [ sh:class gx:ComputeServiceOffering ] [ sh:class gx:VirtualMachineServiceOffering ] ) ; + sh:order 1 ; + sh:path gx:dependsOn ], + [ sh:description "One or more data protection regimes applying to the service offering." ; + sh:in ( "GDPR2016" "LGPD2019" "PDPA2012" "CCPA2018" "VCDPA2021" ) ; + sh:name "data protection regime" ; + sh:order 5 ; + sh:path gx:dataProtectionRegime ], + [ sh:class gx:LegalPerson ; + sh:description "A resolvable link to Gaia-X Credential of the participant providing the service." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "provided by" ; + sh:order 0 ; + sh:path gx:providedBy ], + [ sh:description "A list of resolvable links to Gaia-X Credentials of resources related to the service and that can exist independently of it." ; + sh:name "aggregation of" ; + sh:or ( [ sh:class gx:PhysicalResource ] [ sh:class gx:VirtualResource ] [ sh:class gx:SoftwareResource ] [ sh:class gx:OperatingSystem ] ) ; + sh:order 2 ; + sh:path gx:aggregationOfResources ], + [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 11 ; + sh:path gx:name ], + [ sh:class gx:Endpoint ; + sh:description "Endpoint through which the Service Offering can be accessed." ; + sh:maxCount 1 ; + sh:name "endpoint" ; + sh:order 9 ; + sh:path gx:endpoint ], + [ sh:description "Provision type of the service" ; + sh:in ( "private" "public" "hybrid" ) ; + sh:maxCount 1 ; + sh:name "provision type" ; + sh:order 8 ; + sh:path gx:provisionType ], + [ sh:description "List of Resource references where service is hosted and can be instantiated. Can refer to availabilty zones, data centers, regions, etc." ; + sh:name "hosted on" ; + sh:or ( [ sh:class gx:VirtualResource ] [ sh:class gx:PhysicalResource ] ) ; + sh:order 10 ; + sh:path gx:hostedOn ], + [ sh:class gx:DataAccountExport ; + sh:description "One or more methods to export data out of the service." ; + sh:minCount 1 ; + sh:name "data account export" ; + sh:order 6 ; + sh:path gx:dataAccountExport ] ; + sh:targetClass gx:ServiceOffering . + +gx:TermsAndConditions a sh:NodeShape ; + sh:closed false ; + sh:description "Terms and Conditions applying to a service offering." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "sha256 hash of the document." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 1 ; + sh:path gx:hash ], + [ sh:datatype xsd:anyURI ; + sh:description "A resolvable link to document." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 0 ; + sh:path gx:url ] ; + sh:targetClass gx:TermsAndConditions . + +gx:VirtualMachineServiceOffering a sh:NodeShape ; + sh:closed false ; + sh:description "A digital service available for order and offering computational capabilities." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Virtual Machine Service Offering" ; + sh:property [ sh:description "A list of resolvable links to Gaia-X Credentials of resources related to the service and that can exist independently of it." ; + sh:name "aggregation of" ; + sh:or ( [ sh:class gx:PhysicalResource ] [ sh:class gx:VirtualResource ] [ sh:class gx:SoftwareResource ] [ sh:class gx:OperatingSystem ] ) ; + sh:order 5 ; + sh:path gx:aggregationOfResources ], + [ sh:datatype xsd:string ; + sh:description "Ome or more policies expressed using a DSL (e.g., Rego or ODRL) (access control, throttling, usage, retention, ...). If there is no specified usage policy constraints, the policy should express a simple default: " ; + sh:minCount 1 ; + sh:order 7 ; + sh:path gx:servicePolicy ], + [ sh:description "One or more data protection regimes applying to the service offering." ; + sh:in ( "GDPR2016" "LGPD2019" "PDPA2012" "CCPA2018" "VCDPA2021" ) ; + sh:name "data protection regime" ; + sh:order 8 ; + sh:path gx:dataProtectionRegime ], + [ sh:class gx:DataAccountExport ; + sh:description "One or more methods to export data out of the service." ; + sh:minCount 1 ; + sh:name "data account export" ; + sh:order 9 ; + sh:path gx:dataAccountExport ], + [ sh:description "List of Resource references where service is hosted and can be instantiated. Can refer to availabilty zones, data centers, regions, etc." ; + sh:name "hosted on" ; + sh:or ( [ sh:class gx:VirtualResource ] [ sh:class gx:PhysicalResource ] ) ; + sh:order 13 ; + sh:path gx:hostedOn ], + [ sh:class gx:VMImage ; + sh:description "Compute Service Code Artifacts" ; + sh:minCount 1 ; + sh:name "code artifact" ; + sh:order 0 ; + sh:path gx:codeArtifact ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 15 ; + sh:path gx:description ], + [ sh:description "A list of resolvable links to Gaia-X Credentials of service offerings related to the service and that can exist independently of it." ; + sh:name "depends on" ; + sh:or ( [ sh:class gx:ServiceOffering ] [ sh:class gx:InfrastructureServiceOffering ] [ sh:class gx:ComputeServiceOffering ] [ sh:class gx:VirtualMachineServiceOffering ] ) ; + sh:order 4 ; + sh:path gx:dependsOn ], + [ sh:description "Provision type of the service" ; + sh:in ( "private" "public" "hybrid" ) ; + sh:maxCount 1 ; + sh:name "provision type" ; + sh:order 11 ; + sh:path gx:provisionType ], + [ sh:class gx:TermsAndConditions ; + sh:description "One or more Terms and Conditions applying to that service." ; + sh:minCount 1 ; + sh:name "terms and conditions" ; + sh:order 6 ; + sh:path gx:serviceOfferingTermsAndConditions ], + [ sh:description "How compute resources of different tenants are separated. Default value = hw-virtualized." ; + sh:in ( "hw-virtualized" "sw-virtualized" "os-virtualized" "os-hw-virtualized" "hw-partitioned" "physical" ) ; + sh:maxCount 1 ; + sh:name "tenant separation" ; + sh:order 2 ; + sh:path gx:tenantSeparation ], + [ sh:class gx:ServerFlavor ; + sh:description "Set of technical requirements or conditions to instantiate this service offering." ; + sh:minCount 1 ; + sh:name "instantiation requirement" ; + sh:order 1 ; + sh:path gx:instantiationReq ], + [ sh:datatype xsd:string ; + sh:description "Keywords that describe / tag the service." ; + sh:order 10 ; + sh:path gx:keyword ], + [ sh:class gx:LegalPerson ; + sh:description "A resolvable link to Gaia-X Credential of the participant providing the service." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "provided by" ; + sh:order 3 ; + sh:path gx:providedBy ], + [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 14 ; + sh:path gx:name ], + [ sh:class gx:Endpoint ; + sh:description "Endpoint through which the Service Offering can be accessed." ; + sh:maxCount 1 ; + sh:name "endpoint" ; + sh:order 12 ; + sh:path gx:endpoint ] ; + sh:targetClass gx:VirtualMachineServiceOffering . + +gx:Disk a sh:NodeShape ; + sh:closed false ; + sh:description "Capabilities of a physical or virtual hard drive." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:integer ; + sh:description "Over-subscription means assigning more capacity to virtual machines that the physical device has. Default over-subscription ratio defines the amount of default over-subscription as a value larger or equal to 1.0. 1.0 means no over-subscription." ; + sh:maxCount 1 ; + sh:minInclusive 1 ; + sh:name "default over-subscription ratio" ; + sh:order 5 ; + sh:path gx:defaultOversubscriptionRatio ], + [ sh:class gx:MemorySize ; + sh:description "The size of the hard drive." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "Disk size" ; + sh:order 0 ; + sh:path gx:diskSize ], + [ sh:datatype xsd:string ; + sh:description "Vendor of the device." ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path gx:vendor ], + [ sh:datatype xsd:string ; + sh:description "Type of disk controller the disk is attached to." ; + sh:maxCount 1 ; + sh:name "Disk Bus Type" ; + sh:order 2 ; + sh:path gx:diskBusType ], + [ sh:datatype xsd:integer ; + sh:description "Over-subscription means assigning more capacity to virtual machines that the physical device has. Supported over-subscription ratio defines the amount of supported over-subscription as a value larger or equal to 1.0. 1.0 means no over-subscription." ; + sh:maxCount 1 ; + sh:minInclusive 1 ; + sh:name "supported over-subscription ratio" ; + sh:order 6 ; + sh:path gx:supportedOversubscriptionRatio ], + [ sh:description "The type of storage drive." ; + sh:in ( "local SSD" "local HDD" "shared network storage" "high-perf NVMe" "other" ) ; + sh:maxCount 1 ; + sh:name "Disk Type" ; + sh:order 1 ; + sh:path gx:diskType ], + [ sh:datatype xsd:string ; + sh:description "Vendor specific generation of the device." ; + sh:maxCount 1 ; + sh:name "Generation of the device" ; + sh:order 4 ; + sh:path gx:generation ] ; + sh:targetClass gx:Disk . + +gx:SoftwareResource a sh:NodeShape ; + sh:closed false ; + sh:description "A Gaia-X Virtual Resource describing an executable program." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Software Resource" ; + sh:property [ sh:description "A list of SPDX identifiers or URL to document." ; + sh:minCount 1 ; + sh:or ( [ sh:in ( "0BSD" "AAL" "Abstyles" "AdaCore-doc" "Adobe-2006" "Adobe-Glyph" "ADSL" "AFL-1.1" "AFL-1.2" "AFL-2.0" "AFL-2.1" "AFL-3.0" "Afmparse" "AGPL-1.0-only" "AGPL-1.0-or-later" "AGPL-3.0-only" "AGPL-3.0-or-later" "Aladdin" "AMDPLPA" "AML" "AMPAS" "ANTLR-PD" "ANTLR-PD-fallback" "Apache-1.0" "Apache-1.1" "Apache-2.0" "APAFML" "APL-1.0" "App-s2p" "APSL-1.0" "APSL-1.1" "APSL-1.2" "APSL-2.0" "Arphic-1999" "Artistic-1.0" "Artistic-1.0-cl8" "Artistic-1.0-Perl" "Artistic-2.0" "ASWF-Digital-Assets-1.0" "ASWF-Digital-Assets-1.1" "Baekmuk" "Bahyph" "Barr" "Beerware" "Bitstream-Charter" "Bitstream-Vera" "BitTorrent-1.0" "BitTorrent-1.1" "blessing" "BlueOak-1.0.0" "Boehm-GC" "Borceux" "Brian-Gladman-3-Clause" "BSD-1-Clause" "BSD-2-Clause" "BSD-2-Clause-Patent" "BSD-2-Clause-Views" "BSD-3-Clause" "BSD-3-Clause-Attribution" "BSD-3-Clause-Clear" "BSD-3-Clause-LBNL" "BSD-3-Clause-Modification" "BSD-3-Clause-No-Military-License" "BSD-3-Clause-No-Nuclear-License" "BSD-3-Clause-No-Nuclear-License-2014" "BSD-3-Clause-No-Nuclear-Warranty" "BSD-3-Clause-Open-MPI" "BSD-4-Clause" "BSD-4-Clause-Shortened" "BSD-4-Clause-UC" "BSD-4.3RENO" "BSD-4.3TAHOE" "BSD-Advertising-Acknowledgement" "BSD-Attribution-HPND-disclaimer" "BSD-Protection" "BSD-Source-Code" "BSL-1.0" "BUSL-1.1" "bzip2-1.0.6" "C-UDA-1.0" "CAL-1.0" "CAL-1.0-Combined-Work-Exception" "Caldera" "CATOSL-1.1" "CC-BY-1.0" "CC-BY-2.0" "CC-BY-2.5" "CC-BY-2.5-AU" "CC-BY-3.0" "CC-BY-3.0-AT" "CC-BY-3.0-DE" "CC-BY-3.0-IGO" "CC-BY-3.0-NL" "CC-BY-3.0-US" "CC-BY-4.0" "CC-BY-NC-1.0" "CC-BY-NC-2.0" "CC-BY-NC-2.5" "CC-BY-NC-3.0" "CC-BY-NC-3.0-DE" "CC-BY-NC-4.0" "CC-BY-NC-ND-1.0" "CC-BY-NC-ND-2.0" "CC-BY-NC-ND-2.5" "CC-BY-NC-ND-3.0" "CC-BY-NC-ND-3.0-DE" "CC-BY-NC-ND-3.0-IGO" "CC-BY-NC-ND-4.0" "CC-BY-NC-SA-1.0" "CC-BY-NC-SA-2.0" "CC-BY-NC-SA-2.0-DE" "CC-BY-NC-SA-2.0-FR" "CC-BY-NC-SA-2.0-UK" "CC-BY-NC-SA-2.5" "CC-BY-NC-SA-3.0" "CC-BY-NC-SA-3.0-DE" "CC-BY-NC-SA-3.0-IGO" "CC-BY-NC-SA-4.0" "CC-BY-ND-1.0" "CC-BY-ND-2.0" "CC-BY-ND-2.5" "CC-BY-ND-3.0" "CC-BY-ND-3.0-DE" "CC-BY-ND-4.0" "CC-BY-SA-1.0" "CC-BY-SA-2.0" "CC-BY-SA-2.0-UK" "CC-BY-SA-2.1-JP" "CC-BY-SA-2.5" "CC-BY-SA-3.0" "CC-BY-SA-3.0-AT" "CC-BY-SA-3.0-DE" "CC-BY-SA-3.0-IGO" "CC-BY-SA-4.0" "CC-PDDC" "CC0-1.0" "CDDL-1.0" "CDDL-1.1" "CDL-1.0" "CDLA-Permissive-1.0" "CDLA-Permissive-2.0" "CDLA-Sharing-1.0" "CECILL-1.0" "CECILL-1.1" "CECILL-2.0" "CECILL-2.1" "CECILL-B" "CECILL-C" "CERN-OHL-1.1" "CERN-OHL-1.2" "CERN-OHL-P-2.0" "CERN-OHL-S-2.0" "CERN-OHL-W-2.0" "CFITSIO" "checkmk" "ClArtistic" "Clips" "CMU-Mach" "CNRI-Jython" "CNRI-Python" "CNRI-Python-GPL-Compatible" "COIL-1.0" "Community-Spec-1.0" "Condor-1.1" "copyleft-next-0.3.0" "copyleft-next-0.3.1" "Cornell-Lossless-JPEG" "CPAL-1.0" "CPL-1.0" "CPOL-1.02" "Crossword" "CrystalStacker" "CUA-OPL-1.0" "Cube" "curl" "D-FSL-1.0" "diffmark" "DL-DE-BY-2.0" "DOC" "Dotseqn" "DRL-1.0" "DSDP" "dtoa" "dvipdfm" "ECL-1.0" "ECL-2.0" "EFL-1.0" "EFL-2.0" "eGenix" "Elastic-2.0" "Entessa" "EPICS" "EPL-1.0" "EPL-2.0" "ErlPL-1.1" "etalab-2.0" "EUDatagrid" "EUPL-1.0" "EUPL-1.1" "EUPL-1.2" "Eurosym" "Fair" "FDK-AAC" "Frameworx-1.0" "FreeBSD-DOC" "FreeImage" "FSFAP" "FSFUL" "FSFULLR" "FSFULLRWD" "FTL" "GD" "GFDL-1.1-invariants-only" "GFDL-1.1-invariants-or-later" "GFDL-1.1-no-invariants-only" "GFDL-1.1-no-invariants-or-later" "GFDL-1.1-only" "GFDL-1.1-or-later" "GFDL-1.2-invariants-only" "GFDL-1.2-invariants-or-later" "GFDL-1.2-no-invariants-only" "GFDL-1.2-no-invariants-or-later" "GFDL-1.2-only" "GFDL-1.2-or-later" "GFDL-1.3-invariants-only" "GFDL-1.3-invariants-or-later" "GFDL-1.3-no-invariants-only" "GFDL-1.3-no-invariants-or-later" "GFDL-1.3-only" "GFDL-1.3-or-later" "Giftware" "GL2PS" "Glide" "Glulxe" "GLWTPL" "gnuplot" "GPL-1.0-only" "GPL-1.0-or-later" "GPL-2.0-only" "GPL-2.0-or-later" "GPL-3.0-only" "GPL-3.0-or-later" "Graphics-Gems" "gSOAP-1.3b" "HaskellReport" "Hippocratic-2.1" "HP-1986" "HPND" "HPND-export-US" "HPND-Markus-Kuhn" "HPND-sell-variant" "HPND-sell-variant-MIT-disclaimer" "HTMLTIDY" "IBM-pibs" "ICU" "IEC-Code-Components-EULA" "IJG" "IJG-short" "ImageMagick" "iMatix" "Imlib2" "Info-ZIP" "Inner-Net-2.0" "Intel" "Intel-ACPI" "Interbase-1.0" "IPA" "IPL-1.0" "ISC" "Jam" "JasPer-2.0" "JPL-image" "JPNIC" "JSON" "Kazlib" "Knuth-CTAN" "LAL-1.2" "LAL-1.3" "Latex2e" "Latex2e-translated-notice" "Leptonica" "LGPL-2.0-only" "LGPL-2.0-or-later" "LGPL-2.1-only" "LGPL-2.1-or-later" "LGPL-3.0-only" "LGPL-3.0-or-later" "LGPLLR" "Libpng" "libpng-2.0" "libselinux-1.0" "libtiff" "libutil-David-Nugent" "LiLiQ-P-1.1" "LiLiQ-R-1.1" "LiLiQ-Rplus-1.1" "Linux-man-pages-1-para" "Linux-man-pages-copyleft" "Linux-man-pages-copyleft-2-para" "Linux-man-pages-copyleft-var" "Linux-OpenIB" "LOOP" "LPL-1.0" "LPL-1.02" "LPPL-1.0" "LPPL-1.1" "LPPL-1.2" "LPPL-1.3a" "LPPL-1.3c" "LZMA-SDK-9.11-to-9.20" "LZMA-SDK-9.22" "MakeIndex" "Martin-Birgmeier" "metamail" "Minpack" "MirOS" "MIT" "MIT-0" "MIT-advertising" "MIT-CMU" "MIT-enna" "MIT-feh" "MIT-Festival" "MIT-Modern-Variant" "MIT-open-group" "MIT-Wu" "MITNFA" "Motosoto" "mpi-permissive" "mpich2" "MPL-1.0" "MPL-1.1" "MPL-2.0" "MPL-2.0-no-copyleft-exception" "mplus" "MS-LPL" "MS-PL" "MS-RL" "MTLL" "MulanPSL-1.0" "MulanPSL-2.0" "Multics" "Mup" "NAIST-2003" "NASA-1.3" "Naumen" "NBPL-1.0" "NCGL-UK-2.0" "NCSA" "Net-SNMP" "NetCDF" "Newsletr" "NGPL" "NICTA-1.0" "NIST-PD" "NIST-PD-fallback" "NIST-Software" "NLOD-1.0" "NLOD-2.0" "NLPL" "Nokia" "NOSL" "Noweb" "NPL-1.0" "NPL-1.1" "NPOSL-3.0" "NRL" "NTP" "NTP-0" "O-UDA-1.0" "OCCT-PL" "OCLC-2.0" "ODbL-1.0" "ODC-By-1.0" "OFFIS" "OFL-1.0" "OFL-1.0-no-RFN" "OFL-1.0-RFN" "OFL-1.1" "OFL-1.1-no-RFN" "OFL-1.1-RFN" "OGC-1.0" "OGDL-Taiwan-1.0" "OGL-Canada-2.0" "OGL-UK-1.0" "OGL-UK-2.0" "OGL-UK-3.0" "OGTSL" "OLDAP-1.1" "OLDAP-1.2" "OLDAP-1.3" "OLDAP-1.4" "OLDAP-2.0" "OLDAP-2.0.1" "OLDAP-2.1" "OLDAP-2.2" "OLDAP-2.2.1" "OLDAP-2.2.2" "OLDAP-2.3" "OLDAP-2.4" "OLDAP-2.5" "OLDAP-2.6" "OLDAP-2.7" "OLDAP-2.8" "OLFL-1.3" "OML" "OpenPBS-2.3" "OpenSSL" "OPL-1.0" "OPL-UK-3.0" "OPUBL-1.0" "OSET-PL-2.1" "OSL-1.0" "OSL-1.1" "OSL-2.0" "OSL-2.1" "OSL-3.0" "Parity-6.0.0" "Parity-7.0.0" "PDDL-1.0" "PHP-3.0" "PHP-3.01" "Plexus" "PolyForm-Noncommercial-1.0.0" "PolyForm-Small-Business-1.0.0" "PostgreSQL" "PSF-2.0" "psfrag" "psutils" "Python-2.0" "Python-2.0.1" "Qhull" "QPL-1.0" "QPL-1.0-INRIA-2004" "Rdisc" "RHeCos-1.1" "RPL-1.1" "RPL-1.5" "RPSL-1.0" "RSA-MD" "RSCPL" "Ruby" "SAX-PD" "Saxpath" "SCEA" "SchemeReport" "Sendmail" "Sendmail-8.23" "SGI-B-1.0" "SGI-B-1.1" "SGI-B-2.0" "SGP4" "SHL-0.5" "SHL-0.51" "SimPL-2.0" "SISSL" "SISSL-1.2" "Sleepycat" "SMLNJ" "SMPPL" "SNIA" "snprintf" "Spencer-86" "Spencer-94" "Spencer-99" "SPL-1.0" "SSH-OpenSSH" "SSH-short" "SSPL-1.0" "SugarCRM-1.1.3" "SunPro" "SWL" "Symlinks" "TAPR-OHL-1.0" "TCL" "TCP-wrappers" "TermReadKey" "TMate" "TORQUE-1.1" "TOSL" "TPDL" "TPL-1.0" "TTWL" "TU-Berlin-1.0" "TU-Berlin-2.0" "UCAR" "UCL-1.0" "Unicode-DFS-2015" "Unicode-DFS-2016" "Unicode-TOU" "UnixCrypt" "Unlicense" "UPL-1.0" "Vim" "VOSTROM" "VSL-1.0" "W3C" "W3C-19980720" "W3C-20150513" "w3m" "Watcom-1.0" "Widget-Workshop" "Wsuipa" "WTFPL" "X11" "X11-distribute-modifications-variant" "Xdebug-1.03" "Xerox" "Xfig" "XFree86-1.1" "xinetd" "xlock" "Xnet" "xpp" "XSkat" "YPL-1.0" "YPL-1.1" "Zed" "Zend-2.0" "Zimbra-1.3" "Zimbra-1.4" "Zlib" "zlib-acknowledgement" "ZPL-1.1" "ZPL-2.0" "ZPL-2.1" ) ] [ sh:datatype xsd:anyURI ] ) ; + sh:order 6 ; + sh:path gx:license ], + [ sh:class gx:Signature ; + sh:description "Details with respect to signature of the software." ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path gx:signature ], + [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 9 ; + sh:path gx:name ], + [ sh:datatype xsd:string ; + sh:description "A list of policy expressed using a DSL (e.g., Rego or ODRL) (access control, throttling, usage, retention, ...). If there is no specified usage policy constraints on the VirtualResource, the policy should express a simple default: allow intent" ; + sh:minCount 1 ; + sh:order 7 ; + sh:path gx:resourcePolicy ], + [ sh:datatype xsd:string ; + sh:description "Version of the software." ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path gx:version ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 10 ; + sh:path gx:description ], + [ sh:description "A resolvable link of resources related to the resource and that can exist independently of it." ; + sh:name "aggregation of" ; + sh:or ( [ sh:class gx:VirtualResource ] [ sh:class gx:PhysicalResource ] ) ; + sh:order 8 ; + sh:path gx:aggregationOfResources ], + [ sh:datatype xsd:string ; + sh:description "Software specific patch number describing patch level of the software." ; + sh:maxCount 1 ; + sh:name "Patch level" ; + sh:order 3 ; + sh:path gx:patchLevel ], + [ sh:class gx:CheckSum ; + sh:description "Details on checksum of the software." ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path gx:checksum ], + [ sh:description "A list of copyright owners either as a free form string or as resolvable link to Gaia-X Credential of participants. A copyright owner is a person or organization that has the right to exploit the resource. Copyright owner does not necessarily refer to the author of the resource, who is a natural person and may differ from copyright owner." ; + sh:minCount 1 ; + sh:name "copyright owned by" ; + sh:or ( [ sh:class gx:LegalPerson ] [ sh:datatype xsd:string ] ) ; + sh:order 5 ; + sh:path gx:copyrightOwnedBy ], + [ sh:datatype xsd:dateTime ; + sh:description "Date and time the software was build, formated according to ISO 8601 (UTC - 24 hours)." ; + sh:maxCount 1 ; + sh:name "Build Date" ; + sh:order 4 ; + sh:path gx:buildDate ] ; + sh:targetClass gx:SoftwareResource . + +gx:OperatingSystem a sh:NodeShape ; + sh:closed false ; + sh:description "A special Gaia-X Software Resource describing an operating system." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Operation System" ; + sh:property [ sh:datatype xsd:dateTime ; + sh:description "Date and time the software was build, formated according to ISO 8601 (UTC - 24 hours)." ; + sh:maxCount 1 ; + sh:name "Build Date" ; + sh:order 5 ; + sh:path gx:buildDate ], + [ sh:class gx:Signature ; + sh:description "Details with respect to signature of the software." ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path gx:signature ], + [ sh:datatype xsd:string ; + sh:description "A list of policy expressed using a DSL (e.g., Rego or ODRL) (access control, throttling, usage, retention, ...). If there is no specified usage policy constraints on the VirtualResource, the policy should express a simple default: allow intent" ; + sh:minCount 1 ; + sh:order 8 ; + sh:path gx:resourcePolicy ], + [ sh:description "A list of copyright owners either as a free form string or as resolvable link to Gaia-X Credential of participants. A copyright owner is a person or organization that has the right to exploit the resource. Copyright owner does not necessarily refer to the author of the resource, who is a natural person and may differ from copyright owner." ; + sh:minCount 1 ; + sh:name "copyright owned by" ; + sh:or ( [ sh:class gx:LegalPerson ] [ sh:datatype xsd:string ] ) ; + sh:order 6 ; + sh:path gx:copyrightOwnedBy ], + [ sh:description "A list of SPDX identifiers or URL to document." ; + sh:minCount 1 ; + sh:or ( [ sh:in ( "0BSD" "AAL" "Abstyles" "AdaCore-doc" "Adobe-2006" "Adobe-Glyph" "ADSL" "AFL-1.1" "AFL-1.2" "AFL-2.0" "AFL-2.1" "AFL-3.0" "Afmparse" "AGPL-1.0-only" "AGPL-1.0-or-later" "AGPL-3.0-only" "AGPL-3.0-or-later" "Aladdin" "AMDPLPA" "AML" "AMPAS" "ANTLR-PD" "ANTLR-PD-fallback" "Apache-1.0" "Apache-1.1" "Apache-2.0" "APAFML" "APL-1.0" "App-s2p" "APSL-1.0" "APSL-1.1" "APSL-1.2" "APSL-2.0" "Arphic-1999" "Artistic-1.0" "Artistic-1.0-cl8" "Artistic-1.0-Perl" "Artistic-2.0" "ASWF-Digital-Assets-1.0" "ASWF-Digital-Assets-1.1" "Baekmuk" "Bahyph" "Barr" "Beerware" "Bitstream-Charter" "Bitstream-Vera" "BitTorrent-1.0" "BitTorrent-1.1" "blessing" "BlueOak-1.0.0" "Boehm-GC" "Borceux" "Brian-Gladman-3-Clause" "BSD-1-Clause" "BSD-2-Clause" "BSD-2-Clause-Patent" "BSD-2-Clause-Views" "BSD-3-Clause" "BSD-3-Clause-Attribution" "BSD-3-Clause-Clear" "BSD-3-Clause-LBNL" "BSD-3-Clause-Modification" "BSD-3-Clause-No-Military-License" "BSD-3-Clause-No-Nuclear-License" "BSD-3-Clause-No-Nuclear-License-2014" "BSD-3-Clause-No-Nuclear-Warranty" "BSD-3-Clause-Open-MPI" "BSD-4-Clause" "BSD-4-Clause-Shortened" "BSD-4-Clause-UC" "BSD-4.3RENO" "BSD-4.3TAHOE" "BSD-Advertising-Acknowledgement" "BSD-Attribution-HPND-disclaimer" "BSD-Protection" "BSD-Source-Code" "BSL-1.0" "BUSL-1.1" "bzip2-1.0.6" "C-UDA-1.0" "CAL-1.0" "CAL-1.0-Combined-Work-Exception" "Caldera" "CATOSL-1.1" "CC-BY-1.0" "CC-BY-2.0" "CC-BY-2.5" "CC-BY-2.5-AU" "CC-BY-3.0" "CC-BY-3.0-AT" "CC-BY-3.0-DE" "CC-BY-3.0-IGO" "CC-BY-3.0-NL" "CC-BY-3.0-US" "CC-BY-4.0" "CC-BY-NC-1.0" "CC-BY-NC-2.0" "CC-BY-NC-2.5" "CC-BY-NC-3.0" "CC-BY-NC-3.0-DE" "CC-BY-NC-4.0" "CC-BY-NC-ND-1.0" "CC-BY-NC-ND-2.0" "CC-BY-NC-ND-2.5" "CC-BY-NC-ND-3.0" "CC-BY-NC-ND-3.0-DE" "CC-BY-NC-ND-3.0-IGO" "CC-BY-NC-ND-4.0" "CC-BY-NC-SA-1.0" "CC-BY-NC-SA-2.0" "CC-BY-NC-SA-2.0-DE" "CC-BY-NC-SA-2.0-FR" "CC-BY-NC-SA-2.0-UK" "CC-BY-NC-SA-2.5" "CC-BY-NC-SA-3.0" "CC-BY-NC-SA-3.0-DE" "CC-BY-NC-SA-3.0-IGO" "CC-BY-NC-SA-4.0" "CC-BY-ND-1.0" "CC-BY-ND-2.0" "CC-BY-ND-2.5" "CC-BY-ND-3.0" "CC-BY-ND-3.0-DE" "CC-BY-ND-4.0" "CC-BY-SA-1.0" "CC-BY-SA-2.0" "CC-BY-SA-2.0-UK" "CC-BY-SA-2.1-JP" "CC-BY-SA-2.5" "CC-BY-SA-3.0" "CC-BY-SA-3.0-AT" "CC-BY-SA-3.0-DE" "CC-BY-SA-3.0-IGO" "CC-BY-SA-4.0" "CC-PDDC" "CC0-1.0" "CDDL-1.0" "CDDL-1.1" "CDL-1.0" "CDLA-Permissive-1.0" "CDLA-Permissive-2.0" "CDLA-Sharing-1.0" "CECILL-1.0" "CECILL-1.1" "CECILL-2.0" "CECILL-2.1" "CECILL-B" "CECILL-C" "CERN-OHL-1.1" "CERN-OHL-1.2" "CERN-OHL-P-2.0" "CERN-OHL-S-2.0" "CERN-OHL-W-2.0" "CFITSIO" "checkmk" "ClArtistic" "Clips" "CMU-Mach" "CNRI-Jython" "CNRI-Python" "CNRI-Python-GPL-Compatible" "COIL-1.0" "Community-Spec-1.0" "Condor-1.1" "copyleft-next-0.3.0" "copyleft-next-0.3.1" "Cornell-Lossless-JPEG" "CPAL-1.0" "CPL-1.0" "CPOL-1.02" "Crossword" "CrystalStacker" "CUA-OPL-1.0" "Cube" "curl" "D-FSL-1.0" "diffmark" "DL-DE-BY-2.0" "DOC" "Dotseqn" "DRL-1.0" "DSDP" "dtoa" "dvipdfm" "ECL-1.0" "ECL-2.0" "EFL-1.0" "EFL-2.0" "eGenix" "Elastic-2.0" "Entessa" "EPICS" "EPL-1.0" "EPL-2.0" "ErlPL-1.1" "etalab-2.0" "EUDatagrid" "EUPL-1.0" "EUPL-1.1" "EUPL-1.2" "Eurosym" "Fair" "FDK-AAC" "Frameworx-1.0" "FreeBSD-DOC" "FreeImage" "FSFAP" "FSFUL" "FSFULLR" "FSFULLRWD" "FTL" "GD" "GFDL-1.1-invariants-only" "GFDL-1.1-invariants-or-later" "GFDL-1.1-no-invariants-only" "GFDL-1.1-no-invariants-or-later" "GFDL-1.1-only" "GFDL-1.1-or-later" "GFDL-1.2-invariants-only" "GFDL-1.2-invariants-or-later" "GFDL-1.2-no-invariants-only" "GFDL-1.2-no-invariants-or-later" "GFDL-1.2-only" "GFDL-1.2-or-later" "GFDL-1.3-invariants-only" "GFDL-1.3-invariants-or-later" "GFDL-1.3-no-invariants-only" "GFDL-1.3-no-invariants-or-later" "GFDL-1.3-only" "GFDL-1.3-or-later" "Giftware" "GL2PS" "Glide" "Glulxe" "GLWTPL" "gnuplot" "GPL-1.0-only" "GPL-1.0-or-later" "GPL-2.0-only" "GPL-2.0-or-later" "GPL-3.0-only" "GPL-3.0-or-later" "Graphics-Gems" "gSOAP-1.3b" "HaskellReport" "Hippocratic-2.1" "HP-1986" "HPND" "HPND-export-US" "HPND-Markus-Kuhn" "HPND-sell-variant" "HPND-sell-variant-MIT-disclaimer" "HTMLTIDY" "IBM-pibs" "ICU" "IEC-Code-Components-EULA" "IJG" "IJG-short" "ImageMagick" "iMatix" "Imlib2" "Info-ZIP" "Inner-Net-2.0" "Intel" "Intel-ACPI" "Interbase-1.0" "IPA" "IPL-1.0" "ISC" "Jam" "JasPer-2.0" "JPL-image" "JPNIC" "JSON" "Kazlib" "Knuth-CTAN" "LAL-1.2" "LAL-1.3" "Latex2e" "Latex2e-translated-notice" "Leptonica" "LGPL-2.0-only" "LGPL-2.0-or-later" "LGPL-2.1-only" "LGPL-2.1-or-later" "LGPL-3.0-only" "LGPL-3.0-or-later" "LGPLLR" "Libpng" "libpng-2.0" "libselinux-1.0" "libtiff" "libutil-David-Nugent" "LiLiQ-P-1.1" "LiLiQ-R-1.1" "LiLiQ-Rplus-1.1" "Linux-man-pages-1-para" "Linux-man-pages-copyleft" "Linux-man-pages-copyleft-2-para" "Linux-man-pages-copyleft-var" "Linux-OpenIB" "LOOP" "LPL-1.0" "LPL-1.02" "LPPL-1.0" "LPPL-1.1" "LPPL-1.2" "LPPL-1.3a" "LPPL-1.3c" "LZMA-SDK-9.11-to-9.20" "LZMA-SDK-9.22" "MakeIndex" "Martin-Birgmeier" "metamail" "Minpack" "MirOS" "MIT" "MIT-0" "MIT-advertising" "MIT-CMU" "MIT-enna" "MIT-feh" "MIT-Festival" "MIT-Modern-Variant" "MIT-open-group" "MIT-Wu" "MITNFA" "Motosoto" "mpi-permissive" "mpich2" "MPL-1.0" "MPL-1.1" "MPL-2.0" "MPL-2.0-no-copyleft-exception" "mplus" "MS-LPL" "MS-PL" "MS-RL" "MTLL" "MulanPSL-1.0" "MulanPSL-2.0" "Multics" "Mup" "NAIST-2003" "NASA-1.3" "Naumen" "NBPL-1.0" "NCGL-UK-2.0" "NCSA" "Net-SNMP" "NetCDF" "Newsletr" "NGPL" "NICTA-1.0" "NIST-PD" "NIST-PD-fallback" "NIST-Software" "NLOD-1.0" "NLOD-2.0" "NLPL" "Nokia" "NOSL" "Noweb" "NPL-1.0" "NPL-1.1" "NPOSL-3.0" "NRL" "NTP" "NTP-0" "O-UDA-1.0" "OCCT-PL" "OCLC-2.0" "ODbL-1.0" "ODC-By-1.0" "OFFIS" "OFL-1.0" "OFL-1.0-no-RFN" "OFL-1.0-RFN" "OFL-1.1" "OFL-1.1-no-RFN" "OFL-1.1-RFN" "OGC-1.0" "OGDL-Taiwan-1.0" "OGL-Canada-2.0" "OGL-UK-1.0" "OGL-UK-2.0" "OGL-UK-3.0" "OGTSL" "OLDAP-1.1" "OLDAP-1.2" "OLDAP-1.3" "OLDAP-1.4" "OLDAP-2.0" "OLDAP-2.0.1" "OLDAP-2.1" "OLDAP-2.2" "OLDAP-2.2.1" "OLDAP-2.2.2" "OLDAP-2.3" "OLDAP-2.4" "OLDAP-2.5" "OLDAP-2.6" "OLDAP-2.7" "OLDAP-2.8" "OLFL-1.3" "OML" "OpenPBS-2.3" "OpenSSL" "OPL-1.0" "OPL-UK-3.0" "OPUBL-1.0" "OSET-PL-2.1" "OSL-1.0" "OSL-1.1" "OSL-2.0" "OSL-2.1" "OSL-3.0" "Parity-6.0.0" "Parity-7.0.0" "PDDL-1.0" "PHP-3.0" "PHP-3.01" "Plexus" "PolyForm-Noncommercial-1.0.0" "PolyForm-Small-Business-1.0.0" "PostgreSQL" "PSF-2.0" "psfrag" "psutils" "Python-2.0" "Python-2.0.1" "Qhull" "QPL-1.0" "QPL-1.0-INRIA-2004" "Rdisc" "RHeCos-1.1" "RPL-1.1" "RPL-1.5" "RPSL-1.0" "RSA-MD" "RSCPL" "Ruby" "SAX-PD" "Saxpath" "SCEA" "SchemeReport" "Sendmail" "Sendmail-8.23" "SGI-B-1.0" "SGI-B-1.1" "SGI-B-2.0" "SGP4" "SHL-0.5" "SHL-0.51" "SimPL-2.0" "SISSL" "SISSL-1.2" "Sleepycat" "SMLNJ" "SMPPL" "SNIA" "snprintf" "Spencer-86" "Spencer-94" "Spencer-99" "SPL-1.0" "SSH-OpenSSH" "SSH-short" "SSPL-1.0" "SugarCRM-1.1.3" "SunPro" "SWL" "Symlinks" "TAPR-OHL-1.0" "TCL" "TCP-wrappers" "TermReadKey" "TMate" "TORQUE-1.1" "TOSL" "TPDL" "TPL-1.0" "TTWL" "TU-Berlin-1.0" "TU-Berlin-2.0" "UCAR" "UCL-1.0" "Unicode-DFS-2015" "Unicode-DFS-2016" "Unicode-TOU" "UnixCrypt" "Unlicense" "UPL-1.0" "Vim" "VOSTROM" "VSL-1.0" "W3C" "W3C-19980720" "W3C-20150513" "w3m" "Watcom-1.0" "Widget-Workshop" "Wsuipa" "WTFPL" "X11" "X11-distribute-modifications-variant" "Xdebug-1.03" "Xerox" "Xfig" "XFree86-1.1" "xinetd" "xlock" "Xnet" "xpp" "XSkat" "YPL-1.0" "YPL-1.1" "Zed" "Zend-2.0" "Zimbra-1.3" "Zimbra-1.4" "Zlib" "zlib-acknowledgement" "ZPL-1.1" "ZPL-2.0" "ZPL-2.1" ) ] [ sh:datatype xsd:anyURI ] ) ; + sh:order 7 ; + sh:path gx:license ], + [ sh:description "The common name of the distribution of the operating system as defined in http://libosinfo.org/." ; + sh:in ( "Alpine Linux" "Arch Linux" "CentOS Linux" "Debian" "Fedora" "FreeBSD" "Gentoo Linux" "Mandrakelinux" "Mandriva Linux" "Mandriva Enterprise Server" "MS-DOS" "NetBSD" "Novell NetWare" "OpenBSD" "OpenSolaris" "openSUSE" "Rocky Linux" "Red Hat Enterprise Linux" "SUSE Linux Enterprise Desktop" "Ubuntu" "Microsoft Windows" ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "Operation System Distribution" ; + sh:order 0 ; + sh:path gx:osDistribution ], + [ sh:datatype xsd:string ; + sh:description "Software specific patch number describing patch level of the software." ; + sh:maxCount 1 ; + sh:name "Patch level" ; + sh:order 4 ; + sh:path gx:patchLevel ], + [ sh:class gx:CheckSum ; + sh:description "Details on checksum of the software." ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path gx:checksum ], + [ sh:description "A resolvable link of resources related to the resource and that can exist independently of it." ; + sh:name "aggregation of" ; + sh:or ( [ sh:class gx:VirtualResource ] [ sh:class gx:PhysicalResource ] ) ; + sh:order 9 ; + sh:path gx:aggregationOfResources ], + [ sh:datatype xsd:string ; + sh:description "Version of the software." ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path gx:version ], + [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 10 ; + sh:path gx:name ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 11 ; + sh:path gx:description ] ; + sh:targetClass gx:OperatingSystem . + +gx:Signature a sh:NodeShape ; + sh:closed false ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Value of the signature" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 0 ; + sh:path gx:signatureValue ], + [ sh:description "Defines the algorithm used to calculate or verify the signature." ; + sh:in ( "RSA-Signature" "ECDSA" "DSA" "other" ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 1 ; + sh:path gx:signatureAlgorithm ] ; + sh:targetClass gx:Signature . + +gx:CheckSum a sh:NodeShape ; + sh:closed false ; + sh:description "Detail on how to calculate or verify a checksum." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:description "Algorithm used to create checksum." ; + sh:in ( "md5" "sha-1" "ripemd-160" "sha-3" "blake2" "blake3" "other" ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 0 ; + sh:path gx:checkSumCalculation ], + [ sh:datatype xsd:string ; + sh:description "Value of the check sum." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 1 ; + sh:path gx:checkSumValue ] ; + sh:targetClass gx:CheckSum . + +gx:MemorySize a sh:NodeShape ; + sh:closed false ; + sh:description "The number of bits, that can be stored on a digital storage." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Memory size" ; + sh:property [ sh:datatype xsd:float ; + sh:description "Value of physical quantity. See https://qudt.org/schema/qudt/value" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:minInclusive 0 ; + sh:order 0 ; + sh:path ], + [ sh:datatype xsd:string ; + sh:description "Unit of physical quantity. See https://qudt.org/schema/qudt/Unit" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 1 ; + sh:path ] ; + sh:targetClass gx:MemorySize . + +gx:LegalPerson a sh:NodeShape ; + sh:closed false ; + sh:description "A legal person, who is uniquely identified by its registration number." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Legal Person" ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 5 ; + sh:path gx:name ], + [ sh:class ; + sh:description "The full legal address of the organization." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "legal address" ; + sh:order 1 ; + sh:path gx:legalAddress ], + [ sh:class ; + sh:description "Full physical location of the headquarter of the organization." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 2 ; + sh:path gx:headquartersAddress ], + [ sh:class gx:LegalPerson ; + sh:description "A list of resolvable links to Gaia-X Credentials of participants with a legal mandate on this entity, e.g., as a subsidiary." ; + sh:order 4 ; + sh:path gx:subOrganisationOf ], + [ sh:class gx:LegalPerson ; + sh:description "A list of resolvable links to Gaia-X Credentials of participants that this entity is a subOrganization of, if any." ; + sh:order 3 ; + sh:path gx:parentOrganizationOf ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 6 ; + sh:path gx:description ], + [ sh:description "Country's registration number, which identifies one specific entity. Valid formats are local, EUID, EORI, vatID, leiCode." ; + sh:minCount 1 ; + sh:name "registration number" ; + sh:or ( [ sh:class gx:LocalRegistrationNumber ] [ sh:class gx:VatID ] [ sh:class gx:LeiCode ] [ sh:class gx:EORI ] [ sh:class gx:EUID ] ) ; + sh:order 0 ; + sh:path gx:registrationNumber ] ; + sh:targetClass gx:LegalPerson . + +gx:PhysicalResource a sh:NodeShape ; + sh:closed false ; + sh:description "A Physical resource is, but not limited to, a datacenter, a bare-metal service, a warehouse, a plant. Those are entities that have a weight and position in physical space." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Physical Resource" ; + sh:property [ sh:class gx:LegalPerson ; + sh:description "A list of resolvable links to Gaia-X Credentials of participant manufacturing the resource." ; + sh:name "manufactured by" ; + sh:order 2 ; + sh:path gx:manufacturedBy ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 6 ; + sh:path gx:description ], + [ sh:class gx:LegalPerson ; + sh:description "A list of resolvable links to Gaia-X Credentials of participant owning the resource." ; + sh:name "owned by" ; + sh:order 1 ; + sh:path gx:ownedBy ], + [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 5 ; + sh:path gx:name ], + [ sh:class gx:LegalPerson ; + sh:description "A list of resolvable links to Gaia-X Credentials of participants maintaining the resource in operational condition and thus having physical access to it." ; + sh:minCount 1 ; + sh:name "maintained by" ; + sh:order 0 ; + sh:path gx:maintainedBy ], + [ sh:description "A resolvable link of resources related to the resource and that can exist independently of it." ; + sh:name "aggregation of" ; + sh:or ( [ sh:class gx:VirtualResource ] [ sh:class gx:PhysicalResource ] ) ; + sh:order 4 ; + sh:path gx:aggregationOfResources ], + [ sh:class ; + sh:description "A list of physical locations." ; + sh:minCount 1 ; + sh:order 3 ; + sh:path gx:location ] ; + sh:targetClass gx:PhysicalResource . + +gx:VirtualResource a sh:NodeShape ; + sh:closed false ; + sh:description "It represents static data in any form and necessary information such as dataset, configuration file, license, keypair, an AI model, neural network weights, etc." ; + sh:ignoredProperties ( rdf:type ) ; + sh:name "Virtual Resource" ; + sh:property [ sh:description "A resolvable link of resources related to the resource and that can exist independently of it." ; + sh:name "aggregation of" ; + sh:or ( [ sh:class gx:VirtualResource ] [ sh:class gx:PhysicalResource ] ) ; + sh:order 3 ; + sh:path gx:aggregationOfResources ], + [ sh:datatype xsd:string ; + sh:description "A list of policy expressed using a DSL (e.g., Rego or ODRL) (access control, throttling, usage, retention, ...). If there is no specified usage policy constraints on the VirtualResource, the policy should express a simple default: allow intent" ; + sh:minCount 1 ; + sh:order 2 ; + sh:path gx:resourcePolicy ], + [ sh:description "A list of copyright owners either as a free form string or as resolvable link to Gaia-X Credential of participants. A copyright owner is a person or organization that has the right to exploit the resource. Copyright owner does not necessarily refer to the author of the resource, who is a natural person and may differ from copyright owner." ; + sh:minCount 1 ; + sh:name "copyright owned by" ; + sh:or ( [ sh:class gx:LegalPerson ] [ sh:datatype xsd:string ] ) ; + sh:order 0 ; + sh:path gx:copyrightOwnedBy ], + [ sh:datatype xsd:string ; + sh:description "A human readable name of the entity." ; + sh:maxCount 1 ; + sh:name "name" ; + sh:order 4 ; + sh:path gx:name ], + [ sh:datatype xsd:string ; + sh:description "A free text description of the entity." ; + sh:maxCount 1 ; + sh:name "description" ; + sh:order 5 ; + sh:path gx:description ], + [ sh:description "A list of SPDX identifiers or URL to document." ; + sh:minCount 1 ; + sh:or ( [ sh:in ( "0BSD" "AAL" "Abstyles" "AdaCore-doc" "Adobe-2006" "Adobe-Glyph" "ADSL" "AFL-1.1" "AFL-1.2" "AFL-2.0" "AFL-2.1" "AFL-3.0" "Afmparse" "AGPL-1.0-only" "AGPL-1.0-or-later" "AGPL-3.0-only" "AGPL-3.0-or-later" "Aladdin" "AMDPLPA" "AML" "AMPAS" "ANTLR-PD" "ANTLR-PD-fallback" "Apache-1.0" "Apache-1.1" "Apache-2.0" "APAFML" "APL-1.0" "App-s2p" "APSL-1.0" "APSL-1.1" "APSL-1.2" "APSL-2.0" "Arphic-1999" "Artistic-1.0" "Artistic-1.0-cl8" "Artistic-1.0-Perl" "Artistic-2.0" "ASWF-Digital-Assets-1.0" "ASWF-Digital-Assets-1.1" "Baekmuk" "Bahyph" "Barr" "Beerware" "Bitstream-Charter" "Bitstream-Vera" "BitTorrent-1.0" "BitTorrent-1.1" "blessing" "BlueOak-1.0.0" "Boehm-GC" "Borceux" "Brian-Gladman-3-Clause" "BSD-1-Clause" "BSD-2-Clause" "BSD-2-Clause-Patent" "BSD-2-Clause-Views" "BSD-3-Clause" "BSD-3-Clause-Attribution" "BSD-3-Clause-Clear" "BSD-3-Clause-LBNL" "BSD-3-Clause-Modification" "BSD-3-Clause-No-Military-License" "BSD-3-Clause-No-Nuclear-License" "BSD-3-Clause-No-Nuclear-License-2014" "BSD-3-Clause-No-Nuclear-Warranty" "BSD-3-Clause-Open-MPI" "BSD-4-Clause" "BSD-4-Clause-Shortened" "BSD-4-Clause-UC" "BSD-4.3RENO" "BSD-4.3TAHOE" "BSD-Advertising-Acknowledgement" "BSD-Attribution-HPND-disclaimer" "BSD-Protection" "BSD-Source-Code" "BSL-1.0" "BUSL-1.1" "bzip2-1.0.6" "C-UDA-1.0" "CAL-1.0" "CAL-1.0-Combined-Work-Exception" "Caldera" "CATOSL-1.1" "CC-BY-1.0" "CC-BY-2.0" "CC-BY-2.5" "CC-BY-2.5-AU" "CC-BY-3.0" "CC-BY-3.0-AT" "CC-BY-3.0-DE" "CC-BY-3.0-IGO" "CC-BY-3.0-NL" "CC-BY-3.0-US" "CC-BY-4.0" "CC-BY-NC-1.0" "CC-BY-NC-2.0" "CC-BY-NC-2.5" "CC-BY-NC-3.0" "CC-BY-NC-3.0-DE" "CC-BY-NC-4.0" "CC-BY-NC-ND-1.0" "CC-BY-NC-ND-2.0" "CC-BY-NC-ND-2.5" "CC-BY-NC-ND-3.0" "CC-BY-NC-ND-3.0-DE" "CC-BY-NC-ND-3.0-IGO" "CC-BY-NC-ND-4.0" "CC-BY-NC-SA-1.0" "CC-BY-NC-SA-2.0" "CC-BY-NC-SA-2.0-DE" "CC-BY-NC-SA-2.0-FR" "CC-BY-NC-SA-2.0-UK" "CC-BY-NC-SA-2.5" "CC-BY-NC-SA-3.0" "CC-BY-NC-SA-3.0-DE" "CC-BY-NC-SA-3.0-IGO" "CC-BY-NC-SA-4.0" "CC-BY-ND-1.0" "CC-BY-ND-2.0" "CC-BY-ND-2.5" "CC-BY-ND-3.0" "CC-BY-ND-3.0-DE" "CC-BY-ND-4.0" "CC-BY-SA-1.0" "CC-BY-SA-2.0" "CC-BY-SA-2.0-UK" "CC-BY-SA-2.1-JP" "CC-BY-SA-2.5" "CC-BY-SA-3.0" "CC-BY-SA-3.0-AT" "CC-BY-SA-3.0-DE" "CC-BY-SA-3.0-IGO" "CC-BY-SA-4.0" "CC-PDDC" "CC0-1.0" "CDDL-1.0" "CDDL-1.1" "CDL-1.0" "CDLA-Permissive-1.0" "CDLA-Permissive-2.0" "CDLA-Sharing-1.0" "CECILL-1.0" "CECILL-1.1" "CECILL-2.0" "CECILL-2.1" "CECILL-B" "CECILL-C" "CERN-OHL-1.1" "CERN-OHL-1.2" "CERN-OHL-P-2.0" "CERN-OHL-S-2.0" "CERN-OHL-W-2.0" "CFITSIO" "checkmk" "ClArtistic" "Clips" "CMU-Mach" "CNRI-Jython" "CNRI-Python" "CNRI-Python-GPL-Compatible" "COIL-1.0" "Community-Spec-1.0" "Condor-1.1" "copyleft-next-0.3.0" "copyleft-next-0.3.1" "Cornell-Lossless-JPEG" "CPAL-1.0" "CPL-1.0" "CPOL-1.02" "Crossword" "CrystalStacker" "CUA-OPL-1.0" "Cube" "curl" "D-FSL-1.0" "diffmark" "DL-DE-BY-2.0" "DOC" "Dotseqn" "DRL-1.0" "DSDP" "dtoa" "dvipdfm" "ECL-1.0" "ECL-2.0" "EFL-1.0" "EFL-2.0" "eGenix" "Elastic-2.0" "Entessa" "EPICS" "EPL-1.0" "EPL-2.0" "ErlPL-1.1" "etalab-2.0" "EUDatagrid" "EUPL-1.0" "EUPL-1.1" "EUPL-1.2" "Eurosym" "Fair" "FDK-AAC" "Frameworx-1.0" "FreeBSD-DOC" "FreeImage" "FSFAP" "FSFUL" "FSFULLR" "FSFULLRWD" "FTL" "GD" "GFDL-1.1-invariants-only" "GFDL-1.1-invariants-or-later" "GFDL-1.1-no-invariants-only" "GFDL-1.1-no-invariants-or-later" "GFDL-1.1-only" "GFDL-1.1-or-later" "GFDL-1.2-invariants-only" "GFDL-1.2-invariants-or-later" "GFDL-1.2-no-invariants-only" "GFDL-1.2-no-invariants-or-later" "GFDL-1.2-only" "GFDL-1.2-or-later" "GFDL-1.3-invariants-only" "GFDL-1.3-invariants-or-later" "GFDL-1.3-no-invariants-only" "GFDL-1.3-no-invariants-or-later" "GFDL-1.3-only" "GFDL-1.3-or-later" "Giftware" "GL2PS" "Glide" "Glulxe" "GLWTPL" "gnuplot" "GPL-1.0-only" "GPL-1.0-or-later" "GPL-2.0-only" "GPL-2.0-or-later" "GPL-3.0-only" "GPL-3.0-or-later" "Graphics-Gems" "gSOAP-1.3b" "HaskellReport" "Hippocratic-2.1" "HP-1986" "HPND" "HPND-export-US" "HPND-Markus-Kuhn" "HPND-sell-variant" "HPND-sell-variant-MIT-disclaimer" "HTMLTIDY" "IBM-pibs" "ICU" "IEC-Code-Components-EULA" "IJG" "IJG-short" "ImageMagick" "iMatix" "Imlib2" "Info-ZIP" "Inner-Net-2.0" "Intel" "Intel-ACPI" "Interbase-1.0" "IPA" "IPL-1.0" "ISC" "Jam" "JasPer-2.0" "JPL-image" "JPNIC" "JSON" "Kazlib" "Knuth-CTAN" "LAL-1.2" "LAL-1.3" "Latex2e" "Latex2e-translated-notice" "Leptonica" "LGPL-2.0-only" "LGPL-2.0-or-later" "LGPL-2.1-only" "LGPL-2.1-or-later" "LGPL-3.0-only" "LGPL-3.0-or-later" "LGPLLR" "Libpng" "libpng-2.0" "libselinux-1.0" "libtiff" "libutil-David-Nugent" "LiLiQ-P-1.1" "LiLiQ-R-1.1" "LiLiQ-Rplus-1.1" "Linux-man-pages-1-para" "Linux-man-pages-copyleft" "Linux-man-pages-copyleft-2-para" "Linux-man-pages-copyleft-var" "Linux-OpenIB" "LOOP" "LPL-1.0" "LPL-1.02" "LPPL-1.0" "LPPL-1.1" "LPPL-1.2" "LPPL-1.3a" "LPPL-1.3c" "LZMA-SDK-9.11-to-9.20" "LZMA-SDK-9.22" "MakeIndex" "Martin-Birgmeier" "metamail" "Minpack" "MirOS" "MIT" "MIT-0" "MIT-advertising" "MIT-CMU" "MIT-enna" "MIT-feh" "MIT-Festival" "MIT-Modern-Variant" "MIT-open-group" "MIT-Wu" "MITNFA" "Motosoto" "mpi-permissive" "mpich2" "MPL-1.0" "MPL-1.1" "MPL-2.0" "MPL-2.0-no-copyleft-exception" "mplus" "MS-LPL" "MS-PL" "MS-RL" "MTLL" "MulanPSL-1.0" "MulanPSL-2.0" "Multics" "Mup" "NAIST-2003" "NASA-1.3" "Naumen" "NBPL-1.0" "NCGL-UK-2.0" "NCSA" "Net-SNMP" "NetCDF" "Newsletr" "NGPL" "NICTA-1.0" "NIST-PD" "NIST-PD-fallback" "NIST-Software" "NLOD-1.0" "NLOD-2.0" "NLPL" "Nokia" "NOSL" "Noweb" "NPL-1.0" "NPL-1.1" "NPOSL-3.0" "NRL" "NTP" "NTP-0" "O-UDA-1.0" "OCCT-PL" "OCLC-2.0" "ODbL-1.0" "ODC-By-1.0" "OFFIS" "OFL-1.0" "OFL-1.0-no-RFN" "OFL-1.0-RFN" "OFL-1.1" "OFL-1.1-no-RFN" "OFL-1.1-RFN" "OGC-1.0" "OGDL-Taiwan-1.0" "OGL-Canada-2.0" "OGL-UK-1.0" "OGL-UK-2.0" "OGL-UK-3.0" "OGTSL" "OLDAP-1.1" "OLDAP-1.2" "OLDAP-1.3" "OLDAP-1.4" "OLDAP-2.0" "OLDAP-2.0.1" "OLDAP-2.1" "OLDAP-2.2" "OLDAP-2.2.1" "OLDAP-2.2.2" "OLDAP-2.3" "OLDAP-2.4" "OLDAP-2.5" "OLDAP-2.6" "OLDAP-2.7" "OLDAP-2.8" "OLFL-1.3" "OML" "OpenPBS-2.3" "OpenSSL" "OPL-1.0" "OPL-UK-3.0" "OPUBL-1.0" "OSET-PL-2.1" "OSL-1.0" "OSL-1.1" "OSL-2.0" "OSL-2.1" "OSL-3.0" "Parity-6.0.0" "Parity-7.0.0" "PDDL-1.0" "PHP-3.0" "PHP-3.01" "Plexus" "PolyForm-Noncommercial-1.0.0" "PolyForm-Small-Business-1.0.0" "PostgreSQL" "PSF-2.0" "psfrag" "psutils" "Python-2.0" "Python-2.0.1" "Qhull" "QPL-1.0" "QPL-1.0-INRIA-2004" "Rdisc" "RHeCos-1.1" "RPL-1.1" "RPL-1.5" "RPSL-1.0" "RSA-MD" "RSCPL" "Ruby" "SAX-PD" "Saxpath" "SCEA" "SchemeReport" "Sendmail" "Sendmail-8.23" "SGI-B-1.0" "SGI-B-1.1" "SGI-B-2.0" "SGP4" "SHL-0.5" "SHL-0.51" "SimPL-2.0" "SISSL" "SISSL-1.2" "Sleepycat" "SMLNJ" "SMPPL" "SNIA" "snprintf" "Spencer-86" "Spencer-94" "Spencer-99" "SPL-1.0" "SSH-OpenSSH" "SSH-short" "SSPL-1.0" "SugarCRM-1.1.3" "SunPro" "SWL" "Symlinks" "TAPR-OHL-1.0" "TCL" "TCP-wrappers" "TermReadKey" "TMate" "TORQUE-1.1" "TOSL" "TPDL" "TPL-1.0" "TTWL" "TU-Berlin-1.0" "TU-Berlin-2.0" "UCAR" "UCL-1.0" "Unicode-DFS-2015" "Unicode-DFS-2016" "Unicode-TOU" "UnixCrypt" "Unlicense" "UPL-1.0" "Vim" "VOSTROM" "VSL-1.0" "W3C" "W3C-19980720" "W3C-20150513" "w3m" "Watcom-1.0" "Widget-Workshop" "Wsuipa" "WTFPL" "X11" "X11-distribute-modifications-variant" "Xdebug-1.03" "Xerox" "Xfig" "XFree86-1.1" "xinetd" "xlock" "Xnet" "xpp" "XSkat" "YPL-1.0" "YPL-1.1" "Zed" "Zend-2.0" "Zimbra-1.3" "Zimbra-1.4" "Zlib" "zlib-acknowledgement" "ZPL-1.1" "ZPL-2.0" "ZPL-2.1" ) ] [ sh:datatype xsd:anyURI ] ) ; + sh:order 1 ; + sh:path gx:license ] ; + sh:targetClass gx:VirtualResource . + diff --git a/generator/common/gx_schema.py b/generator/common/gx_schema.py index 543b40a..57a648a 100644 --- a/generator/common/gx_schema.py +++ b/generator/common/gx_schema.py @@ -1,5 +1,5 @@ # Auto generated from gaia-x.yaml by pythongen.py version: 0.0.1 -# Generation date: 2023-11-17T10:12:38 +# Generation date: 2023-12-19T11:59:13 # Schema: gaia-x # # id: http://w3id.org/gaia-x/gx-trust-framework/gaia-x @@ -91,7 +91,7 @@ class Address(YAMLRoot): class_model_uri: ClassVar[URIRef] = GX.Address countryCode: str = None - gps: Optional[str] = None + gps: Optional[Union[Union[dict, "GPSLocation"], List[Union[dict, "GPSLocation"]]]] = empty_list() streetAddress: Optional[str] = None postalCode: Optional[str] = None locality: Optional[str] = None @@ -102,8 +102,7 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if not isinstance(self.countryCode, str): self.countryCode = str(self.countryCode) - if self.gps is not None and not isinstance(self.gps, str): - self.gps = str(self.gps) + self._normalize_inlined_as_dict(slot_name="gps", slot_type=GPSLocation, key_name="latitude", keyed=False) if self.streetAddress is not None and not isinstance(self.streetAddress, str): self.streetAddress = str(self.streetAddress) @@ -117,6 +116,78 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): super().__post_init__(**kwargs) +@dataclass +class GPSLocation(YAMLRoot): + """ + Physical GPS coordinates in ISO 6709:2008/Cor 1:2009 format. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = GX.GPSLocation + class_class_curie: ClassVar[str] = "gx:GPSLocation" + class_name: ClassVar[str] = "GPSLocation" + class_model_uri: ClassVar[URIRef] = GX.GPSLocation + + latitude: str = None + longitude: str = None + altitude: Optional[str] = None + crs: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.latitude): + self.MissingRequiredField("latitude") + if not isinstance(self.latitude, str): + self.latitude = str(self.latitude) + + if self._is_empty(self.longitude): + self.MissingRequiredField("longitude") + if not isinstance(self.longitude, str): + self.longitude = str(self.longitude) + + if self.altitude is not None and not isinstance(self.altitude, str): + self.altitude = str(self.altitude) + + if self.crs is not None and not isinstance(self.crs, str): + self.crs = str(self.crs) + + super().__post_init__(**kwargs) + + +@dataclass +class GPSUnit(YAMLRoot): + """ + Definition of a geographical point. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = GX.GPSUnit + class_class_curie: ClassVar[str] = "gx:GPSUnit" + class_name: ClassVar[str] = "GPSUnit" + class_model_uri: ClassVar[URIRef] = GX.GPSUnit + + degrees: int = None + minutes: Optional[int] = None + seconds: Optional[int] = None + decimals: Optional[float] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.degrees): + self.MissingRequiredField("degrees") + if not isinstance(self.degrees, int): + self.degrees = int(self.degrees) + + if self.minutes is not None and not isinstance(self.minutes, int): + self.minutes = int(self.minutes) + + if self.seconds is not None and not isinstance(self.seconds, int): + self.seconds = int(self.seconds) + + if self.decimals is not None and not isinstance(self.decimals, float): + self.decimals = float(self.decimals) + + super().__post_init__(**kwargs) + + @dataclass class GaiaXEntity(YAMLRoot): """ @@ -241,7 +312,7 @@ class Device(YAMLRoot): vendor: Optional[str] = None generation: Optional[str] = None defaultOversubscriptionRatio: Optional[int] = None - supportedOversubscriptionRatio: Optional[Union[int, List[int]]] = empty_list() + supportedOversubscriptionRatio: Optional[int] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self.vendor is not None and not isinstance(self.vendor, str): @@ -253,9 +324,8 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self.defaultOversubscriptionRatio is not None and not isinstance(self.defaultOversubscriptionRatio, int): self.defaultOversubscriptionRatio = int(self.defaultOversubscriptionRatio) - if not isinstance(self.supportedOversubscriptionRatio, list): - self.supportedOversubscriptionRatio = [self.supportedOversubscriptionRatio] if self.supportedOversubscriptionRatio is not None else [] - self.supportedOversubscriptionRatio = [v if isinstance(v, int) else int(v) for v in self.supportedOversubscriptionRatio] + if self.supportedOversubscriptionRatio is not None and not isinstance(self.supportedOversubscriptionRatio, int): + self.supportedOversubscriptionRatio = int(self.supportedOversubscriptionRatio) super().__post_init__(**kwargs) @@ -388,7 +458,7 @@ class GPU(Device): class_model_uri: ClassVar[URIRef] = GX.GPU gpuMemory: Optional[Union[dict, "MemorySize"]] = None - gpuInterconnection: Optional[str] = "\"none\"" + gpuInterconnection: Optional[Union[str, "GPUInterconnetionTypes"]] = "none" gpuProcessingUnits: Optional[int] = None gpuPassthrough: Optional[Union[bool, Bool]] = False @@ -396,8 +466,8 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self.gpuMemory is not None and not isinstance(self.gpuMemory, MemorySize): self.gpuMemory = MemorySize(**as_dict(self.gpuMemory)) - if self.gpuInterconnection is not None and not isinstance(self.gpuInterconnection, str): - self.gpuInterconnection = str(self.gpuInterconnection) + if self.gpuInterconnection is not None and not isinstance(self.gpuInterconnection, GPUInterconnetionTypes): + self.gpuInterconnection = GPUInterconnetionTypes(self.gpuInterconnection) if self.gpuProcessingUnits is not None and not isinstance(self.gpuProcessingUnits, int): self.gpuProcessingUnits = int(self.gpuProcessingUnits) @@ -695,7 +765,7 @@ class Quantity(YAMLRoot): class_model_uri: ClassVar[URIRef] = GX.Quantity value: float = None - unit: Union[str, URI] = None + unit: str = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.value): @@ -705,8 +775,8 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.unit): self.MissingRequiredField("unit") - if not isinstance(self.unit, URI): - self.unit = URI(self.unit) + if not isinstance(self.unit, str): + self.unit = str(self.unit) super().__post_init__(**kwargs) @@ -724,7 +794,7 @@ class Frequency(Quantity): class_model_uri: ClassVar[URIRef] = GX.Frequency value: float = None - unit: Union[str, URI] = None + unit: str = None @dataclass class MemorySize(Quantity): @@ -739,7 +809,7 @@ class MemorySize(Quantity): class_model_uri: ClassVar[URIRef] = GX.MemorySize value: float = None - unit: Union[str, URI] = None + unit: str = None @dataclass class Power(Quantity): @@ -754,7 +824,7 @@ class Power(Quantity): class_model_uri: ClassVar[URIRef] = GX.Power value: float = None - unit: Union[str, URI] = None + unit: str = None class Participant(GaiaXEntity): """ @@ -1064,7 +1134,7 @@ class PXEImage(Image): copyrightOwnedBy: Union[str, List[str]] = None license: Union[str, List[str]] = None resourcePolicy: Union[str, List[str]] = None - pxeImageDiskFormat: Optional[Union[str, "PXEDiskType"]] = "\"ISO\"" + pxeImageDiskFormat: Optional[Union[str, "PXEDiskType"]] = "ISO" def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self.pxeImageDiskFormat is not None and not isinstance(self.pxeImageDiskFormat, PXEDiskType): @@ -1140,7 +1210,7 @@ class ServiceOffering(GaiaXEntity): providedBy: Union[str, LegalPersonRegistrationNumber] = None serviceOfferingTermsAndConditions: Union[Union[dict, "TermsAndConditions"], List[Union[dict, "TermsAndConditions"]]] = None dataAccountExport: Union[Union[dict, "DataAccountExport"], List[Union[dict, "DataAccountExport"]]] = None - servicePolicy: Union[str, List[str]] = "\"default:allow intent.\"" + servicePolicy: Union[str, List[str]] = "default:allow intent" dependsOn: Optional[Union[str, List[str]]] = empty_list() aggregationOfResources: Optional[Union[str, List[str]]] = empty_list() dataProtectionRegime: Optional[Union[Union[str, "PersonalDataProtectionRegime"], List[Union[str, "PersonalDataProtectionRegime"]]]] = empty_list() @@ -1213,7 +1283,7 @@ class InfrastructureServiceOffering(ServiceOffering): providedBy: Union[str, LegalPersonRegistrationNumber] = None serviceOfferingTermsAndConditions: Union[Union[dict, "TermsAndConditions"], List[Union[dict, "TermsAndConditions"]]] = None dataAccountExport: Union[Union[dict, "DataAccountExport"], List[Union[dict, "DataAccountExport"]]] = None - servicePolicy: Union[str, List[str]] = "\"default:allow intent.\"" + servicePolicy: Union[str, List[str]] = "default:allow intent" @dataclass class ComputeServiceOffering(InfrastructureServiceOffering): @@ -1230,7 +1300,7 @@ class ComputeServiceOffering(InfrastructureServiceOffering): providedBy: Union[str, LegalPersonRegistrationNumber] = None serviceOfferingTermsAndConditions: Union[Union[dict, "TermsAndConditions"], List[Union[dict, "TermsAndConditions"]]] = None dataAccountExport: Union[Union[dict, "DataAccountExport"], List[Union[dict, "DataAccountExport"]]] = None - servicePolicy: Union[str, List[str]] = "\"default:allow intent.\"" + servicePolicy: Union[str, List[str]] = "default:allow intent" tenantSeparation: Optional[Union[str, "TenantSeparation"]] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @@ -1257,7 +1327,7 @@ class VirtualMachineServiceOffering(ComputeServiceOffering): dataAccountExport: Union[Union[dict, "DataAccountExport"], List[Union[dict, "DataAccountExport"]]] = None codeArtifact: Union[Union[dict, "VMImage"], List[Union[dict, "VMImage"]]] = None instantiationReq: Union[Union[dict, "ServerFlavor"], List[Union[dict, "ServerFlavor"]]] = None - servicePolicy: Union[str, List[str]] = "\"default:allow intent.\"" + servicePolicy: Union[str, List[str]] = "default:allow intent" def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.codeArtifact): @@ -1368,6 +1438,117 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): super().__post_init__(**kwargs) +@dataclass +class DataResource(VirtualResource): + """ + A dataset exposed through a service instance. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = GX.DataResource + class_class_curie: ClassVar[str] = "gx:DataResource" + class_name: ClassVar[str] = "DataResource" + class_model_uri: ClassVar[URIRef] = GX.DataResource + + copyrightOwnedBy: Union[str, List[str]] = None + license: Union[str, List[str]] = None + resourcePolicy: Union[str, List[str]] = None + producedBy: Union[str, LegalPersonRegistrationNumber] = None + exposedThrough: Union[Union[dict, "DataExchangeComponent"], List[Union[dict, "DataExchangeComponent"]]] = None + containsPII: Union[bool, Bool] = None + obsoleteDateTime: Optional[Union[str, XSDDateTime]] = None + expirationDateTime: Optional[Union[str, XSDDateTime]] = None + dataController: Optional[Union[Union[dict, Participant], List[Union[dict, Participant]]]] = empty_list() + consent: Optional[Union[Union[dict, "Consent"], List[Union[dict, "Consent"]]]] = empty_list() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.producedBy): + self.MissingRequiredField("producedBy") + if not isinstance(self.producedBy, LegalPersonRegistrationNumber): + self.producedBy = LegalPersonRegistrationNumber(self.producedBy) + + if self._is_empty(self.exposedThrough): + self.MissingRequiredField("exposedThrough") + if not isinstance(self.exposedThrough, list): + self.exposedThrough = [self.exposedThrough] if self.exposedThrough is not None else [] + self.exposedThrough = [v if isinstance(v, DataExchangeComponent) else DataExchangeComponent(**as_dict(v)) for v in self.exposedThrough] + + if self._is_empty(self.containsPII): + self.MissingRequiredField("containsPII") + if not isinstance(self.containsPII, Bool): + self.containsPII = Bool(self.containsPII) + + if self.obsoleteDateTime is not None and not isinstance(self.obsoleteDateTime, XSDDateTime): + self.obsoleteDateTime = XSDDateTime(self.obsoleteDateTime) + + if self.expirationDateTime is not None and not isinstance(self.expirationDateTime, XSDDateTime): + self.expirationDateTime = XSDDateTime(self.expirationDateTime) + + if not isinstance(self.dataController, list): + self.dataController = [self.dataController] if self.dataController is not None else [] + self.dataController = [v if isinstance(v, Participant) else Participant(**as_dict(v)) for v in self.dataController] + + self._normalize_inlined_as_dict(slot_name="consent", slot_type=Consent, key_name="legalBasis", keyed=False) + + super().__post_init__(**kwargs) + + +@dataclass +class Consent(YAMLRoot): + """ + Information on the legitimate processing of information related to PII. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = GX.Consent + class_class_curie: ClassVar[str] = "gx:Consent" + class_name: ClassVar[str] = "Consent" + class_model_uri: ClassVar[URIRef] = GX.Consent + + legalBasis: str = None + dataProtectionContactPoint: Union[str, List[str]] = None + purpose: Union[str, List[str]] = None + consentWithdrawalContactPoint: Union[str, List[str]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.legalBasis): + self.MissingRequiredField("legalBasis") + if not isinstance(self.legalBasis, str): + self.legalBasis = str(self.legalBasis) + + if self._is_empty(self.dataProtectionContactPoint): + self.MissingRequiredField("dataProtectionContactPoint") + if not isinstance(self.dataProtectionContactPoint, list): + self.dataProtectionContactPoint = [self.dataProtectionContactPoint] if self.dataProtectionContactPoint is not None else [] + self.dataProtectionContactPoint = [v if isinstance(v, str) else str(v) for v in self.dataProtectionContactPoint] + + if self._is_empty(self.purpose): + self.MissingRequiredField("purpose") + if not isinstance(self.purpose, list): + self.purpose = [self.purpose] if self.purpose is not None else [] + self.purpose = [v if isinstance(v, str) else str(v) for v in self.purpose] + + if self._is_empty(self.consentWithdrawalContactPoint): + self.MissingRequiredField("consentWithdrawalContactPoint") + if not isinstance(self.consentWithdrawalContactPoint, list): + self.consentWithdrawalContactPoint = [self.consentWithdrawalContactPoint] if self.consentWithdrawalContactPoint is not None else [] + self.consentWithdrawalContactPoint = [v if isinstance(v, str) else str(v) for v in self.consentWithdrawalContactPoint] + + super().__post_init__(**kwargs) + + +class DataExchangeComponent(YAMLRoot): + """ + A service/resource used to make a data resource available. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = GX.DataExchangeComponent + class_class_curie: ClassVar[str] = "gx:DataExchangeComponent" + class_name: ClassVar[str] = "DataExchangeComponent" + class_model_uri: ClassVar[URIRef] = GX.DataExchangeComponent + + @dataclass class VMImage(Image): """ @@ -4043,7 +4224,7 @@ class EncryptionAlgorithm(EnumDefinitionImpl): description="TBD") other = PermissibleValue( text="other", - description="Algorithm for enchryption not further described.") + description="Algorithm for encryption not further described.") _defn = EnumDefinition( name="EncryptionAlgorithm", @@ -4148,6 +4329,24 @@ def _addvals(cls): setattr(cls, "high-perf NVMe", PermissibleValue(text="high-perf NVMe")) +class GPUInterconnetionTypes(EnumDefinitionImpl): + + NVLink = PermissibleValue(text="NVLink") + RoCE2 = PermissibleValue(text="RoCE2") + other = PermissibleValue(text="other") + none = PermissibleValue(text="none") + + _defn = EnumDefinition( + name="GPUInterconnetionTypes", + ) + + @classmethod + def _addvals(cls): + setattr(cls, "Xe Link", + PermissibleValue(text="Xe Link")) + setattr(cls, "Infinity Fabric", + PermissibleValue(text="Infinity Fabric")) + class UpdateFrequency(EnumDefinitionImpl): """ Possible values for image's update frequency. @@ -5190,6 +5389,9 @@ class OSDistribution(EnumDefinitionImpl): OpenSolaris = PermissibleValue(text="OpenSolaris") openSUSE = PermissibleValue(text="openSUSE") Ubuntu = PermissibleValue(text="Ubuntu") + CirrOS = PermissibleValue(text="CirrOS") + AlmaLinux = PermissibleValue(text="AlmaLinux") + others = PermissibleValue(text="others") _defn = EnumDefinition( name="OSDistribution", @@ -8568,14 +8770,14 @@ class slots: slots.value = Slot(uri=QUDT.value, name="value", curie=QUDT.curie('value'), model_uri=GX.value, domain=None, range=float) -slots.unit = Slot(uri=QUDT.Unit, name="unit", curie=QUDT.curie('Unit'), - model_uri=GX.unit, domain=None, range=Union[str, URI]) +slots.unit = Slot(uri=QUDT.unit, name="unit", curie=QUDT.curie('unit'), + model_uri=GX.unit, domain=None, range=str) slots.address__countryCode = Slot(uri=GX.countryCode, name="address__countryCode", curie=GX.curie('countryCode'), model_uri=GX.address__countryCode, domain=None, range=str) slots.address__gps = Slot(uri=GX.gps, name="address__gps", curie=GX.curie('gps'), - model_uri=GX.address__gps, domain=None, range=Optional[str]) + model_uri=GX.address__gps, domain=None, range=Optional[Union[Union[dict, GPSLocation], List[Union[dict, GPSLocation]]]]) slots.address__streetAddress = Slot(uri=VCARD['street-address'], name="address__streetAddress", curie=VCARD.curie('street-address'), model_uri=GX.address__streetAddress, domain=None, range=Optional[str]) @@ -8586,6 +8788,31 @@ class slots: slots.address__locality = Slot(uri=VCARD.locality, name="address__locality", curie=VCARD.curie('locality'), model_uri=GX.address__locality, domain=None, range=Optional[str]) +slots.gPSLocation__latitude = Slot(uri=GX.latitude, name="gPSLocation__latitude", curie=GX.curie('latitude'), + model_uri=GX.gPSLocation__latitude, domain=None, range=str) + +slots.gPSLocation__longitude = Slot(uri=GX.longitude, name="gPSLocation__longitude", curie=GX.curie('longitude'), + model_uri=GX.gPSLocation__longitude, domain=None, range=str) + +slots.gPSLocation__altitude = Slot(uri=GX.altitude, name="gPSLocation__altitude", curie=GX.curie('altitude'), + model_uri=GX.gPSLocation__altitude, domain=None, range=Optional[str]) + +slots.gPSLocation__crs = Slot(uri=GX.crs, name="gPSLocation__crs", curie=GX.curie('crs'), + model_uri=GX.gPSLocation__crs, domain=None, range=Optional[str], + pattern=re.compile(r'^CRS')) + +slots.gPSUnit__degrees = Slot(uri=GX.degrees, name="gPSUnit__degrees", curie=GX.curie('degrees'), + model_uri=GX.gPSUnit__degrees, domain=None, range=int) + +slots.gPSUnit__minutes = Slot(uri=GX.minutes, name="gPSUnit__minutes", curie=GX.curie('minutes'), + model_uri=GX.gPSUnit__minutes, domain=None, range=Optional[int]) + +slots.gPSUnit__seconds = Slot(uri=GX.seconds, name="gPSUnit__seconds", curie=GX.curie('seconds'), + model_uri=GX.gPSUnit__seconds, domain=None, range=Optional[int]) + +slots.gPSUnit__decimals = Slot(uri=GX.decimals, name="gPSUnit__decimals", curie=GX.curie('decimals'), + model_uri=GX.gPSUnit__decimals, domain=None, range=Optional[float]) + slots.gaiaXEntity__name = Slot(uri=GX.name, name="gaiaXEntity__name", curie=GX.curie('name'), model_uri=GX.gaiaXEntity__name, domain=None, range=Optional[str]) @@ -8647,7 +8874,7 @@ class slots: model_uri=GX.device__defaultOversubscriptionRatio, domain=None, range=Optional[int]) slots.device__supportedOversubscriptionRatio = Slot(uri=GX.supportedOversubscriptionRatio, name="device__supportedOversubscriptionRatio", curie=GX.curie('supportedOversubscriptionRatio'), - model_uri=GX.device__supportedOversubscriptionRatio, domain=None, range=Optional[Union[int, List[int]]]) + model_uri=GX.device__supportedOversubscriptionRatio, domain=None, range=Optional[int]) slots.disk__diskSize = Slot(uri=GX.diskSize, name="disk__diskSize", curie=GX.curie('diskSize'), model_uri=GX.disk__diskSize, domain=None, range=Union[dict, MemorySize]) @@ -8671,7 +8898,7 @@ class slots: model_uri=GX.gPU__gpuMemory, domain=None, range=Optional[Union[dict, MemorySize]]) slots.gPU__gpuInterconnection = Slot(uri=GX.gpuInterconnection, name="gPU__gpuInterconnection", curie=GX.curie('gpuInterconnection'), - model_uri=GX.gPU__gpuInterconnection, domain=None, range=Optional[str]) + model_uri=GX.gPU__gpuInterconnection, domain=None, range=Optional[Union[str, "GPUInterconnetionTypes"]]) slots.gPU__gpuProcessingUnits = Slot(uri=GX.gpuProcessingUnits, name="gPU__gpuProcessingUnits", curie=GX.curie('gpuProcessingUnits'), model_uri=GX.gPU__gpuProcessingUnits, domain=None, range=Optional[int]) @@ -8907,6 +9134,39 @@ class slots: slots.standardConformity__publisher = Slot(uri=GX.publisher, name="standardConformity__publisher", curie=GX.curie('publisher'), model_uri=GX.standardConformity__publisher, domain=None, range=Optional[str]) +slots.dataResource__producedBy = Slot(uri=GX.producedBy, name="dataResource__producedBy", curie=GX.curie('producedBy'), + model_uri=GX.dataResource__producedBy, domain=None, range=Union[str, LegalPersonRegistrationNumber]) + +slots.dataResource__exposedThrough = Slot(uri=GX.exposedThrough, name="dataResource__exposedThrough", curie=GX.curie('exposedThrough'), + model_uri=GX.dataResource__exposedThrough, domain=None, range=Union[Union[dict, DataExchangeComponent], List[Union[dict, DataExchangeComponent]]]) + +slots.dataResource__obsoleteDateTime = Slot(uri=GX.obsoleteDateTime, name="dataResource__obsoleteDateTime", curie=GX.curie('obsoleteDateTime'), + model_uri=GX.dataResource__obsoleteDateTime, domain=None, range=Optional[Union[str, XSDDateTime]]) + +slots.dataResource__expirationDateTime = Slot(uri=GX.expirationDateTime, name="dataResource__expirationDateTime", curie=GX.curie('expirationDateTime'), + model_uri=GX.dataResource__expirationDateTime, domain=None, range=Optional[Union[str, XSDDateTime]]) + +slots.dataResource__containsPII = Slot(uri=GX.containsPII, name="dataResource__containsPII", curie=GX.curie('containsPII'), + model_uri=GX.dataResource__containsPII, domain=None, range=Union[bool, Bool]) + +slots.dataResource__dataController = Slot(uri=GX.dataController, name="dataResource__dataController", curie=GX.curie('dataController'), + model_uri=GX.dataResource__dataController, domain=None, range=Optional[Union[Union[dict, Participant], List[Union[dict, Participant]]]]) + +slots.dataResource__consent = Slot(uri=GX.consent, name="dataResource__consent", curie=GX.curie('consent'), + model_uri=GX.dataResource__consent, domain=None, range=Optional[Union[Union[dict, Consent], List[Union[dict, Consent]]]]) + +slots.consent__legalBasis = Slot(uri=GX.legalBasis, name="consent__legalBasis", curie=GX.curie('legalBasis'), + model_uri=GX.consent__legalBasis, domain=None, range=str) + +slots.consent__dataProtectionContactPoint = Slot(uri=GX.dataProtectionContactPoint, name="consent__dataProtectionContactPoint", curie=GX.curie('dataProtectionContactPoint'), + model_uri=GX.consent__dataProtectionContactPoint, domain=None, range=Union[str, List[str]]) + +slots.consent__purpose = Slot(uri=GX.purpose, name="consent__purpose", curie=GX.curie('purpose'), + model_uri=GX.consent__purpose, domain=None, range=Union[str, List[str]]) + +slots.consent__consentWithdrawalContactPoint = Slot(uri=GX.consentWithdrawalContactPoint, name="consent__consentWithdrawalContactPoint", curie=GX.curie('consentWithdrawalContactPoint'), + model_uri=GX.consent__consentWithdrawalContactPoint, domain=None, range=Union[str, List[str]]) + slots.vMImage__vmImageDiskFormat = Slot(uri=GX.vmImageDiskFormat, name="vMImage__vmImageDiskFormat", curie=GX.curie('vmImageDiskFormat'), model_uri=GX.vMImage__vmImageDiskFormat, domain=None, range=Optional[Union[str, "VMDiskType"]]) diff --git a/generator/discovery/openstack/discovery_vm_images.py b/generator/discovery/openstack/discovery_vm_images.py index 2bec6ca..82f6146 100644 --- a/generator/discovery/openstack/discovery_vm_images.py +++ b/generator/discovery/openstack/discovery_vm_images.py @@ -1,3 +1,5 @@ +import typing + from generator.common.gx_schema import Architectures as cpu_arch_types from generator.common.gx_schema import CPU from generator.common.gx_schema import Disk @@ -12,14 +14,15 @@ import generator.common.const as const +from typing import Dict class VmDiscovery(): - def __init__(self, conn: Connection) -> None: + def __init__(self, conn: Connection, config: Dict) -> None: self.conn = conn + self.config = config - - #def collect_vm_images(self, conn: Connection) -> List[str]: + # def collect_vm_images(self, conn: Connection) -> List[str]: def discover_vm_images(self) -> List[GX_Image]: """ Return one credential for each VM image provided by openstack cloud accessible via given CONNECTION. @@ -36,23 +39,43 @@ def discover_vm_images(self) -> List[GX_Image]: def _convert_to_gx_image(self, os_image: OS_Image) -> GX_Image: """ - Converts image properties coming from Openstack to Gaia-X Credential compliant VM image. + Converts Openstack image to a Gaia-X virtual machine image. @param os_image: Openstack image properties - @return: Gaia-X compliant virtual machine image + @return: Gaia-X virtual machine image """ # collect all properties cpu_req = self._get_cpu_req(os_image.architecture) ram_req = self._get_min_ram_req(os_image.min_ram) root_disk_req = self._get_min_disk_req(os_image.min_disk) - - return GX_Image(copyrightOwnedBy='TBA', - license="TBA", - resourcePolicy=const.DEFAULT_RESOURCE_POLICY, - cpuReq=cpu_req, - ramReq=ram_req, - rootDiskReq=root_disk_req, - version=os_image.os_version) + operatingSystem = self._get_operation_system_info(os_image.os_version, os_image.os_distro) + + #license = operatingSystem.license + #copyright_owner = operatingSystem.copyrightOwnedBy + #resource_policy= const.DEFAULT_RESOURCE_POLICY + + # read mandatory attributes from config or use default values + try: + license = self.config[const.CONFIG_VM_IMAGE][os_image.name][const.CONFIG_LICENSE] + except KeyError: + pass + try: + copyright_owner = self.config[const.CONFIG_VM_IMAGE][os_image.name][const.CONFIG_COPYRIGHT] + except KeyError: + pass + try: + resource_policy = self.config[const.CONFIG_VM_IMAGE][os_image.name][const.CONFIG_RESOURCE_POLICY] + except KeyError: + pass + + #return GX_Image(copyrightOwnedBy=copyright_owner, + # license=license, + # resourcePolicy=resource_policy, + # cpuReq=cpu_req, + # ramReq=ram_req, + # rootDiskReq=root_disk_req, + # operatingSystem=operatingSystem, + # version=os_image.os_version)# @staticmethod def _get_cpu_req(arch: str) -> CPU: @@ -70,18 +93,145 @@ def _get_cpu_req(arch: str) -> CPU: def _get_min_ram_req(min_ram_size: str) -> Memory: # Memory size tend to be measured in MB (1,000,000 bytes) and not MiB (1.048576 bytes) the RAM industry. # But OpenStack uses MiB. - size = MemorySize(value = float(min_ram_size * 1.048576), unit=const.UNIT_MB) - return Memory(memorySize = size) + size = MemorySize(value=float(min_ram_size * 1.048576), unit=const.UNIT_MB) + return Memory(memorySize=size) @staticmethod def _get_min_disk_req(disk_size: str) -> Disk: - size = MemorySize(value = float(disk_size * 1.073741824), unit=const.UNIT_GB) - return Disk(diskSize = size) + size = MemorySize(value=float(disk_size * 1.073741824), unit=const.UNIT_GB) + return Disk(diskSize=size) - - def _get_operation_system(os_version: str, os_distro: str) -> OperatingSystem: + def _get_operation_system_info(self, os_version: str, os_distro: str) -> OperatingSystem: + # Copyright owner and license not supported as Image properties, currently --> Default values are used if os_distro == "arch": - return OperatingSystem(version=os_version, os_distro="Arch Linux") + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_ARCH, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_ARCH), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_ARCH), + license=self._get_license(const.CONFIG_OS_ARCH)) if os_distro == "centos": - return OperatingSystem(version=os_version, os_distro="CentOS Linux") + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_CENTOS, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_CENTOS), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_CENTOS), + license=self._get_license(const.CONFIG_OS_CENTOS)) + if os_distro == "debian": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_DEBIAN, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_DEBIAN), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_DEBIAN), + license=self._get_license(const.CONFIG_OS_DEBIAN)) + if os_distro == "fedora": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_FEDORA, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_FEDORA), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_FEDORA), + license=self._get_license(const.CONFIG_OS_FEDORA)) + if os_distro == "freebsd": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_FREEBSD, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_FREEBSD), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_FREEBSD), + license=self._get_license(const.CONFIG_OS_FREEBSD)) + if os_distro == "gentoo": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_GENTOO, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_GENTOO), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_GENTOO), + license=self._get_license(const.CONFIG_OS_GENTOO)) + if os_distro == "mandrake": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_MANDRAKE, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_MANDRAKE), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_MANDRAKE), + license=self._get_license(const.CONFIG_OS_MANDRAKE)) + if os_distro == "mandriva": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_MANDRIVA, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_MANDRIVA), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_MANDRIVA), + license=self._get_license(const.CONFIG_OS_MANDRIVA)) + if os_distro == "mes": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_MES, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_MES), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_MES), + license=self._get_license(const.CONFIG_OS_MES)) + if os_distro == "msdos": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_MSDOS, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_MSDOS), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_MSDOS), + license=self._get_license(const.CONFIG_OS_MSDOS)) + if os_distro == "netbsd": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_NETBSD, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_NETBSD), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_NETBSD), + license=self._get_license(const.CONFIG_OS_NETBSD)) + if os_distro == "netware": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_NOVELL, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_NOVELL), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_NOVELL), + license=self._get_license(const.CONFIG_OS_NOVELL)) + if os_distro == "openbsd": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_OPENBSD, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_OPENBSD), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_OPENBSD), + license=self._get_license(const.CONFIG_OS_OPENBSD)) + if os_distro == "opensolaris": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_SOLARIS, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_SOLARIS), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_SOLARIS), + license=self._get_license(const.CONFIG_OS_SOLARIS)) + if os_distro == "opensuse": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_OPEN_SUSE, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_OPEN_SUSE), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_OPEN_SUSE), + license=self._get_license(const.CONFIG_OS_OPEN_SUSE)) + if os_distro == "rocky": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_ROCKY, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_ROCKY), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_ROCKY), + license=self._get_license(const.CONFIG_OS_ROCKY)) + if os_distro == "rhel": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_RHEL, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_RHEL), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_RHEL), + license=self._get_license(const.CONFIG_OS_RHEL)) + if os_distro == "sled": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_SLED, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_SLED), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_SLED), + license=self._get_license(const.CONFIG_OS_SLED)) + if os_distro == "ubuntu": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_UBUNTU, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_UBUNTU), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_UBUNTU), + license=self._get_license(const.CONFIG_OS_UBUNTU)) + if os_distro == "windows": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_WINDOWS, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_WINDOWS), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_WINDOWS), + license=self._get_license(const.CONFIG_OS_WINDOWS)) + if os_distro == "cirros": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_CIRROS, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_CIRROS), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_CIRROS), + license=self._get_license(const.CONFIG_OS_CIRROS)) + if os_distro == "almalinux": + return OperatingSystem(version=os_version, osDistribution=const.CONFIG_OS_ALMALINUX, + resourcePolicy=self._get_resource_policy(const.CONFIG_OS_ALMALINUX), + copyrightOwnedBy=self._get_copyrightowner(const.CONFIG_OS_ALMALINUX), + license=self._get_license(const.CONFIG_OS_ALMALINUX)) + + raise ValueError("Unsupported value for operating system distribution found: '" + os_distro + "'") + + def _get_resource_policy(self, os: str) -> str: + policy = self.config[const.CONFIG_VM_IMAGE][os][const.CONFIG_RESOURCE_POLICY] + if policy == "DEFAULT": + return const.DEFAULT_RESOURCE_POLICY + else: + return policy + + def _get_copyrightowner(self, os: str) -> str: + return self.config[const.CONFIG_VM_IMAGE][os][const.CONFIG_COPYRIGHT] + + def _get_license(self, os: str) -> str: + return self.config[const.CONFIG_VM_IMAGE][os][const.CONFIG_LICENSE] + + + + + + diff --git a/generator/discovery/openstack/opentack_discovery.py b/generator/discovery/openstack/opentack_discovery.py index b7feca9..9bd08ca 100644 --- a/generator/discovery/openstack/opentack_discovery.py +++ b/generator/discovery/openstack/opentack_discovery.py @@ -1,20 +1,23 @@ import openstack from openstack.connection import Connection +from typing import Dict import sys from generator.discovery.openstack.discovery_vm_images import VmDiscovery class OsCloud: "Abstraction for openStack cloud with all its services" - def __init__(self, conn: Connection) -> None: + def __init__(self, conn: Connection, config: Dict) -> None: # import copy self.conn = conn self.auth = conn.auth self.regions = list(conn.identity.regions()) + self.config = config def discover_properties(self): - vm_dis = VmDiscovery(self.conn) - vm_dis.discover_vm_images() + vm_dis = VmDiscovery(self.conn, self.config) + creds = vm_dis.discover_vm_images() + print(creds) # Create per region service catalogs