@prefix : <https://w3id.org/dseco/ontology/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <https://w3id.org/dseco/ontology/> .

<https://w3id.org/dseco/ontology/> rdf:type owl:Ontology ;
                                    owl:versionIRI <https://w3id.org/dseco/ontology/dseco-1.7.0> ;
                                    <http://purl.org/dc/terms/contributor> "Lionel Tailhardat (https://orcid.org/0000-0001-5887-899X)" ;
                                    <http://purl.org/dc/terms/creator> "Didier Bringer (https://orcid.org/0009-0007-9787-2559)" ;
                                    <http://purl.org/dc/terms/description> """The DNS Security Ontology (DSecO) project is a data model for representing and reasoning on Domain Name System (DNS) data.
The ontology is developed using web technologies (e.g. RDF, OWL, SKOS) and is intended as a structure for realizing a DNS Knowledge Graph (KG) for administration and security assessment applications. The model has been developed in collaboration with operational teams, and in connection with third parties linked vocabularies.

Alignment with third parties vocabularies is implemented on a per class or per property basis when relevant (e.g. with `rdfs:subClassOf`, `owl:equivalentClass`).
Directions for direct instanciation of these vocabularies are provided for cases where implementing a class/property alignment is redundant.
Alignment holds for the following vocabulary releases:

- [ORG](https://www.w3.org/TR/vocab-org/) 0.8
- [UCO](https://github.com/ucoProject/uco) Release-0.8.0
"""@en ;
                                    <http://purl.org/dc/terms/issued> "2022-05-10"^^xsd:date ;
                                    <http://purl.org/dc/terms/license> <https://spdx.org/licenses/BSD-4-Clause> ;
                                    <http://purl.org/dc/terms/modified> "2025-11-25"^^xsd:date ;
                                    <http://purl.org/dc/terms/publisher> <https://www.orange.com/> ;
                                    <http://purl.org/dc/terms/title> "The DNS Security Ontology"@en ;
                                    <http://purl.org/ontology/bibo/status> <http://purl.org/ontology/bibo/status/draft> ;
                                    <http://purl.org/vocab/vann/preferredNamespacePrefix> "dseco" ;
                                    <http://purl.org/vocab/vann/preferredNamespaceUri> "https://w3id.org/dseco/ontology/" ;
                                    rdfs:seeAlso <https://w3id.org/dseco/doc/> ;
                                    owl:priorVersion <https://w3id.org/dseco/ontology/dseco-1.6.1> ;
                                    owl:versionInfo "v1.7.0" ;
                                    <http://www.w3.org/2004/02/skos/core#changeNote> """Changes in v1.7.0:

- Added rename dseco:whoisdomain in dseco:ZONE
- Added observable:IPAddress observable:IPAddressFacet 
- Added observable:IPv4Address observable:IPv6Address
- Added dseco:is_part_of, observable:NetworkSubnet 
- Added observable:IPAddress dseco:is_part_of observable:NetworkSubnet
- Added observable:AutonomousSystem core:hasFacet observable:AutonomousSystemFacet
- Added observable:IPAddress dseco:hasAS observable:AutonomousSystem
- Added observable:NetworkSubnet dseco:hasAS observable:AutonomousSystem 
- Added observable:AutonomousSystem dseco::originates observable:NetworkSubnet
- Added dseco:CVE
- Added dseco:COMPONENT 
- Added dseco:FQDN  dseco:is_hosted_by dseco:COMPONENT
- Added dseco:COMPONENT dseco:is_included_in dseco:COMPONENT
- Added dseco:COMPONENT dseco:dependsOn dseco:COMPONENT
- Added dseco:COMPONENT :hasServiceId xsd:string
- Added dseco:COMPONENT :hasBomRef xsd:string
- Added skos:example in each Classe or Property
- Added SHACL shapes for new properties
- Added rmls mappings to build the toy dataset



"""@en .

#################################################################
#    Annotation properties
#################################################################

###  http://purl.org/dc/terms/contributor
<http://purl.org/dc/terms/contributor> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/creator
<http://purl.org/dc/terms/creator> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/description
<http://purl.org/dc/terms/description> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/issued
<http://purl.org/dc/terms/issued> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/license
<http://purl.org/dc/terms/license> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/modified
<http://purl.org/dc/terms/modified> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/publisher
<http://purl.org/dc/terms/publisher> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/title
<http://purl.org/dc/terms/title> rdf:type owl:AnnotationProperty .


###  http://purl.org/ontology/bibo/status
<http://purl.org/ontology/bibo/status> rdf:type owl:AnnotationProperty .


###  http://purl.org/vocab/vann/preferredNamespacePrefix
<http://purl.org/vocab/vann/preferredNamespacePrefix> rdf:type owl:AnnotationProperty .


###  http://purl.org/vocab/vann/preferredNamespaceUri
<http://purl.org/vocab/vann/preferredNamespaceUri> rdf:type owl:AnnotationProperty .


###  http://www.w3.org/2003/06/sw-vocab-status/ns#term_status
<http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> rdf:type owl:AnnotationProperty .


###  http://www.w3.org/2004/02/skos/core#changeNote
<http://www.w3.org/2004/02/skos/core#changeNote> rdf:type owl:AnnotationProperty .


###  http://www.w3.org/2004/02/skos/core#example
<http://www.w3.org/2004/02/skos/core#example> rdf:type owl:AnnotationProperty .


###  http://www.w3.org/ns/shacl#datatype
<http://www.w3.org/ns/shacl#datatype> rdf:type owl:AnnotationProperty .


###  http://www.w3.org/ns/shacl#flags
<http://www.w3.org/ns/shacl#flags> rdf:type owl:AnnotationProperty .


###  http://www.w3.org/ns/shacl#maxCount
<http://www.w3.org/ns/shacl#maxCount> rdf:type owl:AnnotationProperty .


###  http://www.w3.org/ns/shacl#message
<http://www.w3.org/ns/shacl#message> rdf:type owl:AnnotationProperty .


###  http://www.w3.org/ns/shacl#name
<http://www.w3.org/ns/shacl#name> rdf:type owl:AnnotationProperty .


###  http://www.w3.org/ns/shacl#path
<http://www.w3.org/ns/shacl#path> rdf:type owl:AnnotationProperty .


###  http://www.w3.org/ns/shacl#pattern
<http://www.w3.org/ns/shacl#pattern> rdf:type owl:AnnotationProperty .


###  http://www.w3.org/ns/shacl#property
<http://www.w3.org/ns/shacl#property> rdf:type owl:AnnotationProperty .


###  http://www.w3.org/ns/shacl#targetClass
<http://www.w3.org/ns/shacl#targetClass> rdf:type owl:AnnotationProperty .


#################################################################
#    Datatypes
#################################################################

###  http://www.w3.org/2001/XMLSchema#date
xsd:date rdf:type rdfs:Datatype .


#################################################################
#    Object Properties
#################################################################

###  https://w3id.org/dseco/ontology/dependsOn
:dependsOn rdf:type owl:ObjectProperty ;
           rdfs:domain :COMPONENT ;
           rdfs:range :COMPONENT ;
           rdfs:comment "A COMPONENT depends on another COMPONENT."@en ;
           rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
           rdfs:label "dependsOn" ;
           <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
           <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using dependsOn property
                :COMPONENT_1212 a :COMPONENT ;
                    :dependsOn :COMPONENT_3434 .
                """@en .


###  https://w3id.org/dseco/ontology/hasAS
:hasAS rdf:type owl:ObjectProperty ;
       owl:inverseOf :originates ;
       rdf:type owl:FunctionalProperty ;
       rdfs:domain [ rdf:type owl:Class ;
                     owl:unionOf ( <https://ontology.unifiedcyberontology.org/uco/observable/IPAddress>
                                   <https://ontology.unifiedcyberontology.org/uco/observable/NetworkSubnet>
                                 )
                   ] .


###  https://w3id.org/dseco/ontology/hasOrgu
:hasOrgu rdf:type owl:ObjectProperty ;
         rdfs:domain <https://ontology.unifiedcyberontology.org/uco/observable/AutonomousSystem> ;
         rdfs:range <http://www.w3.org/ns/org#OrganizationalUnit> ;
         rdfs:comment "An AS belongs to an organizational Unit."@en ;
         rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
         rdfs:label "hasOrgu" ;
         <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
         <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using hasOrgu property
                :AS_64496 a observable:AutonomousSystem ;
                    :hasOrgu :ORGU_network_provider .
                """@en .


###  https://w3id.org/dseco/ontology/is_AAAA_to
:is_AAAA_to rdf:type owl:ObjectProperty ;
            rdfs:domain :FQDN ;
            rdfs:range <https://ontology.unifiedcyberontology.org/uco/observable/IPv6Address> ;
            rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
            rdfs:label "is_AAAA_to" ;
            <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
            <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using is_AAAA_to property
                :FQDN_example.com a :FQDN ;
                    :is_AAAA_to :IP_::1 .
                """@en .


###  https://w3id.org/dseco/ontology/is_A_to
:is_A_to rdf:type owl:ObjectProperty ;
         rdfs:domain :FQDN ;
         rdfs:range <https://ontology.unifiedcyberontology.org/uco/observable/IPv4Address> ;
         rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
         rdfs:label "is_A_to" ;
         <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
         <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using is_A_to property
                :FQDN_example.com a :FQDN ;
                    :is_A_to :IP_192.0.2.1 .
                """@en .


###  https://w3id.org/dseco/ontology/is_CNAME_of
:is_CNAME_of rdf:type owl:ObjectProperty ;
             rdfs:domain :FQDN ;
             rdfs:range :FQDN ;
             rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
             rdfs:label "is_CNAME_of" ;
             <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
             <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using is_CNAME_of property
                :FQDN_alias.example.com a :FQDN ;
                    :is_CNAME_of :FQDN_target.example.com .
                """@en .


###  https://w3id.org/dseco/ontology/is_CNAME_of_CNAME_of
:is_CNAME_of_CNAME_of rdf:type owl:ObjectProperty ;
                      owl:propertyChainAxiom ( :is_CNAME_of
                                               :is_CNAME_of
                                             ) ;
                      rdfs:comment "To test inferences."@en ;
                      rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
                      rdfs:label "is_CNAME_of_CNAME_of" ;
                      <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
                      <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using is_CNAME_of_CNAME_of property
                :FQDN_example.com a :FQDN ;
                    :is_CNAME_of_CNAME_of :FQDN_example2.com .
                """@en .


###  https://w3id.org/dseco/ontology/is_hosted_by
:is_hosted_by rdf:type owl:ObjectProperty ;
              rdfs:domain :FQDN ;
              rdfs:range :COMPONENT ;
              rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
              rdfs:label "is_hosted_by" ;
              <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
              <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using is_hosted_by property
                :FQDN_alias.example.com a :FQDN ;
                    :is_hosted_by :COMPONENT_1212 .
                """@en .


###  https://w3id.org/dseco/ontology/is_in_zone
:is_in_zone rdf:type owl:ObjectProperty ,
                     owl:FunctionalProperty ;
            rdfs:domain :FQDN ;
            rdfs:range :ZONE ;
            rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
            rdfs:label "is_in_zone" ;
            <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
            <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using is_in_zone property
                :FQDN_example.com a :FQDN ;
                    :is_in_zone :ZONE_example.com .
                """@en .


###  https://w3id.org/dseco/ontology/is_included_in
:is_included_in rdf:type owl:ObjectProperty ;
                rdfs:domain :COMPONENT ;
                rdfs:range :COMPONENT ;
                rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
                rdfs:label "is_included_in" ;
                <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
                <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using is_included_in property
                :COMPONENT_1212 a :COMPONENT ;
                    :is_included_in :COMPONENT_3434 .
                """@en .


###  https://w3id.org/dseco/ontology/is_part_of
:is_part_of rdf:type owl:ObjectProperty ,
                     owl:FunctionalProperty ;
            rdfs:domain <https://ontology.unifiedcyberontology.org/uco/observable/IPAddress> ;
            rdfs:range <https://ontology.unifiedcyberontology.org/uco/observable/NetworkSubnet> ;
            rdfs:comment "A network subnet associated to an ip address."@en ,
                         "Un subnet associé à une adresse ip."@fr ;
            rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
            rdfs:label "is_part_of" ;
            <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
            <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using is_part_of property
                :IP_12.12.12.1 a observable:IPAddress ;
                    :is_part_of <:SUBNET_12.12.12.0/24> .
                """@en .


###  https://w3id.org/dseco/ontology/managedBy
:managedBy rdf:type owl:ObjectProperty ;
           rdfs:domain :ZONE ;
           rdfs:range <http://www.w3.org/ns/org#OrganizationalUnit> ;
           rdfs:comment "The Agent or Owner that can change entries in the zone."@en ;
           rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
           rdfs:label "managedBy" ;
           <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
           <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using managedBy property
                :ZONE_example.com a :ZONE ;
                    :managedBy :ORGU_internal .
                """@en .


###  https://w3id.org/dseco/ontology/originates
:originates rdf:type owl:ObjectProperty ;
            rdfs:domain <https://ontology.unifiedcyberontology.org/uco/observable/AutonomousSystem> ;
            rdfs:range [ rdf:type owl:Class ;
                         owl:unionOf ( <https://ontology.unifiedcyberontology.org/uco/observable/IPAddress>
                                       <https://ontology.unifiedcyberontology.org/uco/observable/NetworkSubnet>
                                     )
                       ] ;
            rdfs:comment "A network entity associated with an Autonomous system."@en ,
                         "Une entité associée à un système autonome."@fr ;
            rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
            rdfs:label "originates" ;
            <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
            <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using originates property
                :AS_64496 a observable:AutonomousSystem ;
                    :originates  <:SUBNET_12.12.12.0/24>.
                """@en .


#################################################################
#    Data properties
#################################################################

###  https://w3id.org/dseco/ontology/FQDN_ends_in_exampleorg
:FQDN_ends_in_exampleorg rdf:type owl:DatatypeProperty ,
                                  owl:FunctionalProperty ;
                         rdfs:domain :FQDN ;
                         rdfs:range xsd:boolean ;
                         rdfs:comment "This property is designed here for illustrative purposes. It is populated by an INSERT WHERE."@en ;
                         rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
                         rdfs:label "FQDN_ends_in_exampleorg" ;
                         <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
                         <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using FQDN_ends_in_exampleorg property
                :FQDN_www.example.org a :FQDN ;
                    :FQDN_ends_in_exampleorg \"true\"^^xsd:boolean .
                """@en .


###  https://w3id.org/dseco/ontology/hasAS
:hasAS rdf:type owl:DatatypeProperty ,
                owl:FunctionalProperty ;
       rdfs:range <https://ontology.unifiedcyberontology.org/uco/observable/AutonomousSystem> .


###  https://w3id.org/dseco/ontology/hasBomRef
:hasBomRef rdf:type owl:DatatypeProperty ,
                    owl:FunctionalProperty ;
           rdfs:domain :COMPONENT ;
           rdfs:range xsd:string ;
           rdfs:comment "La référence BOM associée au composant."@fr ,
                        "The BOM reference associated with the component."@en ;
           rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
           rdfs:label "hasBomRef" ;
           <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
           <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using hasBomRef property
                :COMPONENT_example a :COMPONENT ;
                    :hasBomRef \"BOM-12345\"^^xsd:string .
                """@en .


###  https://w3id.org/dseco/ontology/hasCountry
:hasCountry rdf:type owl:DatatypeProperty ,
                     owl:FunctionalProperty ;
            rdfs:domain <https://ontology.unifiedcyberontology.org/uco/observable/IPAddress> ;
            rdfs:range xsd:string ;
            rdfs:comment "Le pays où se trouve l'entité."@fr ,
                         "The country where the entity is located."@en ;
            rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
            rdfs:label "hasCountry" ;
            <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
            <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using hasCountry property
                :IP_203.0.113.1 a observable:IPAddress ;
                    :hasCountry \"FR\"^^xsd:string .
                """@en .


###  https://w3id.org/dseco/ontology/hasName
:hasName rdf:type owl:DatatypeProperty ,
                  owl:FunctionalProperty ;
         rdfs:domain [ rdf:type owl:Class ;
                       owl:unionOf ( :FQDN
                                     :ZONE
                                   )
                     ] ;
         rdfs:range xsd:string ;
         rdfs:comment "Le domaine de :hasName est spécifié comme une classe anonyme (indiquée par les crochets []) qui est de type owl:Class et qui a une liste owl:unionOf contenant :A et :B. Cela signifie que :hasName peut être utilisée avec des instances de la classe A ou de la classe B."@fr ,
                      "The domain of :hasName is specified as an anonymous class (indicated by the brackets []) that is of type owl:Class and has an owl:unionOf list containing :A and :B. This means that :hasName can be used with instances of class A or class B."@en ;
         rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
         rdfs:label "hasName" ;
         <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
         <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using hasName property
                :FQDN_example.com a :FQDN ;
                    :hasName \"example.com.\"^^xsd:string .
                
                # Can also be used with ZONE
                :ZONE_example.org a :ZONE ;
                    :hasName \"example.org.\"^^xsd:string .
                """@en .


###  https://w3id.org/dseco/ontology/hasServiceId
:hasServiceId rdf:type owl:DatatypeProperty ;
              rdfs:domain [ rdf:type owl:Class ;
                            owl:unionOf ( :COMPONENT
                                          :FQDN
                                        )
                          ] ;
              rdfs:range xsd:string ;
              rdfs:comment "L'identifiant de service associé au FQDN."@fr ,
                           "The service ID associated with the FQDN."@en ;
              rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
              rdfs:label "hasServiceId" ;
              <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
              <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using hasServiceId property
                :FQDN_www.example.org a :FQDN ;
                    :hasServiceId \"123\"^^xsd:string .
                """@en .


###  https://w3id.org/dseco/ontology/isinOurSubnet
:isinOurSubnet rdf:type owl:DatatypeProperty ,
                        owl:FunctionalProperty ;
               rdfs:domain <https://ontology.unifiedcyberontology.org/uco/observable/IPAddress> ;
               rdfs:range xsd:boolean ;
               rdfs:comment "True if the IP is in our subnets. It is populated by a INSERT WHERE query."@en ;
               rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
               rdfs:label "isinOurSubnet" ;
               <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
               <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using isinOurSubnet property
                :IP_198.51.100.1 a observable:IPAddress ;
                    :isinOurSubnet \"true\"^^xsd:boolean .
                """@en .


#################################################################
#    Classes
#################################################################

###  http://purl.org/vocommons/voaf#Vocabulary
<http://purl.org/vocommons/voaf#Vocabulary> rdf:type owl:Class .


###  http://www.w3.org/ns/org#OrganizationalUnit
<http://www.w3.org/ns/org#OrganizationalUnit> rdf:type owl:Class .


###  http://www.w3.org/ns/shacl#NodeShape
<http://www.w3.org/ns/shacl#NodeShape> rdf:type owl:Class .


###  https://ontology.unifiedcyberontology.org/uco/observable/IPAddress
<https://ontology.unifiedcyberontology.org/uco/observable/IPAddress> rdf:type owl:Class .


###  https://ontology.unifiedcyberontology.org/uco/observable/IPv4Address
<https://ontology.unifiedcyberontology.org/uco/observable/IPv4Address> rdf:type owl:Class .


###  https://ontology.unifiedcyberontology.org/uco/observable/IPv6Address
<https://ontology.unifiedcyberontology.org/uco/observable/IPv6Address> rdf:type owl:Class .


###  https://ontology.unifiedcyberontology.org/uco/observable/NetworkSubnet
<https://ontology.unifiedcyberontology.org/uco/observable/NetworkSubnet> rdf:type owl:Class .


###  https://w3id.org/dseco/ontology/COMPONENT
:COMPONENT rdf:type owl:Class ;
           rdfs:comment "A COMPONENT is able of hosting a FQDN, a COMPONENT is made of other COMPONENT s."@en ;
           rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
           rdfs:label "COMPONENT" ;
           <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
           <http://www.w3.org/2004/02/skos/core#example> """
                # Example of a COMPONENT instance
                :COMPONENT_1212 a :COMPONENT .
                based on sbom.json
                """@en .


###  https://w3id.org/dseco/ontology/CVE
:CVE rdf:type owl:Class ;
     rdfs:comment "A CVE (Common Vulnerability Exposure)."@en ;
     rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
     rdfs:label "CVE" ;
     <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
     <http://www.w3.org/2004/02/skos/core#example> """
                # Example of a CVE instance
                :CVE_2025-1212 a :CVE .
                """@en .


###  https://w3id.org/dseco/ontology/FQDN
:FQDN rdf:type owl:Class ;
      rdfs:comment "Fully Qualified Domain Name."@en ;
      rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
      rdfs:label "FQDN" ;
      <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
      <http://www.w3.org/2004/02/skos/core#example> """
                # Example of a FQDN instance
                :FQDN_example.com a :FQDN .
                """@en .


###  https://w3id.org/dseco/ontology/ZONE
:ZONE rdf:type owl:Class ;
      rdfs:comment "A domain zone in DNS context. A DNS zone is an administrative suvdivision of the DNS namespace."@en ;
      rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
      rdfs:label "ZONE" ;
      <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
      <http://www.w3.org/2004/02/skos/core#example> """
                # Example of a ZONE instance
                :ZONE_example.com a :ZONE .
                """@en .


#################################################################
#    Individuals
#################################################################

###  https://ontology.unifiedcyberontology.org/uco/observable/AutonomousSystemShape
<https://ontology.unifiedcyberontology.org/uco/observable/AutonomousSystemShape> rdf:type owl:NamedIndividual ,
                                                                                          <http://www.w3.org/ns/shacl#NodeShape> ;
                                                                                 rdfs:comment "SHACL shape for hasAS."@en ;
                                                                                 <http://www.w3.org/ns/shacl#property> _:genid15 ;
                                                                                 <http://www.w3.org/ns/shacl#targetClass> [ ] .

_:genid15 <http://www.w3.org/ns/shacl#maxCount> 1 ;
           <http://www.w3.org/ns/shacl#name> "Autonomous System Number" ;
           <http://www.w3.org/ns/shacl#path> :hasAS .


###  https://w3id.org/dseco/ontology/
<https://w3id.org/dseco/ontology/> rdf:type owl:NamedIndividual ,
                                            <http://purl.org/vocommons/voaf#Vocabulary> .


###  https://w3id.org/dseco/ontology/CountryShape
:CountryShape rdf:type owl:NamedIndividual ,
                       <http://www.w3.org/ns/shacl#NodeShape> ;
              rdfs:comment "SHACL shape for hasCountry."@en ;
              <http://www.w3.org/ns/shacl#property> _:genid17 ;
              <http://www.w3.org/ns/shacl#targetClass> <https://ontology.unifiedcyberontology.org/uco/observable/IPAddress> .

_:genid17 <http://www.w3.org/ns/shacl#datatype> xsd:string ;
           <http://www.w3.org/ns/shacl#flags> "i" ;
           <http://www.w3.org/ns/shacl#maxCount> 1 ;
           <http://www.w3.org/ns/shacl#name> "Country" ;
           <http://www.w3.org/ns/shacl#path> :hasCountry ;
           <http://www.w3.org/ns/shacl#pattern> "^[A-Z]+$" .


###  https://w3id.org/dseco/ontology/hasOrguShape
:hasOrguShape rdf:type owl:NamedIndividual ,
                       <http://www.w3.org/ns/shacl#NodeShape> ;
              rdfs:comment "SHACL shape for hasOrgu."@en ;
              <http://www.w3.org/ns/shacl#property> _:genid18 ;
              <http://www.w3.org/ns/shacl#targetClass> <https://ontology.unifiedcyberontology.org/uco/observable/AutonomousSystem> .

_:genid18 <http://www.w3.org/ns/shacl#maxCount> 1 ;
           <http://www.w3.org/ns/shacl#message> "An ASN can belong to only one Orgu." ;
           <http://www.w3.org/ns/shacl#path> :hasOrgu .


###  https://w3id.org/dseco/ontology/managedByShape
:managedByShape rdf:type owl:NamedIndividual ,
                         <http://www.w3.org/ns/shacl#NodeShape> ;
                rdfs:comment "SHACL shape for managedBy."@en ;
                <http://www.w3.org/ns/shacl#property> _:genid19 ;
                <http://www.w3.org/ns/shacl#targetClass> :ZONE .

_:genid19 <http://www.w3.org/ns/shacl#maxCount> 1 ;
           <http://www.w3.org/ns/shacl#message> "A ZONE instance can have only one value for managedBy." ;
           <http://www.w3.org/ns/shacl#path> :managedBy .


#################################################################
#    Annotations
#################################################################

:hasAS rdfs:comment "L'Autonomous System Number (ASN) associé à une entité."@fr ,
                    "The Autonomous System Number (ASN) associated with a network entity."@en ;
       rdfs:isDefinedBy <https://w3id.org/dseco/ontology/> ;
       rdfs:label "hasAS" ;
       <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" ;
       <http://www.w3.org/2004/02/skos/core#example> """
                # Example of using hasAS property
                <:SUBNET_12.12.12.0/24> a observable:NetworkSubnet ;
                    :hasAS :AS_64496 .
                """@en .


#################################################################
#    General axioms
#################################################################

[ rdf:type owl:AllDisjointClasses ;
  owl:members ( <http://www.w3.org/ns/org#OrganizationalUnit>
                <https://ontology.unifiedcyberontology.org/uco/observable/AutonomousSystem>
                <https://ontology.unifiedcyberontology.org/uco/observable/IPAddress>
                <https://ontology.unifiedcyberontology.org/uco/observable/NetworkSubnet>
                :COMPONENT
                :CVE
                :FQDN
                :ZONE
              )
] .


###  Generated by the OWL API (version 5.1.18) https://github.com/owlcs/owlapi/
