@prefix : <https://kastle-labl.org/lod/ontology/> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix ns1: <http://ontologydesignpatterns.org/opla-core#> .
@prefix ns2: <http://ontologydesignpatterns.org/opla-cp#> .
@prefix ns3: <http://ontologydesignpatterns.org/opla-sd#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ns1:hasPatternName a owl:AnnotationProperty .

ns2:addressesScenario a owl:AnnotationProperty .

ns2:hasCompetencyQuestion a owl:AnnotationProperty .

ns3:hasConnections a owl:AnnotationProperty .

ns3:hasSchemaDiagramFileName a owl:AnnotationProperty .

dc:contributor a owl:AnnotationProperty .

dc:creator a owl:AnnotationProperty .

owl:Thing rdfs:subClassOf [ a owl:Restriction ;
            owl:allValuesFrom :Name ;
            owl:onProperty :hasName ],
        [ a owl:Restriction ;
            owl:allValuesFrom :Name ;
            owl:onProperty :hasRoleUnderName ],
        [ a owl:Restriction ;
            owl:allValuesFrom :AgentRole ;
            owl:onProperty :providesAgentRole ] .

owl:minQualifiedCardinality a owl:AnnotationProperty .

: a owl:Ontology ;
    ns1:hasPatternName "Role Module Pattern" ;
    ns2:addressesScenario """Use Case\r
                                                                Use Case Description"""^^xsd:string ;
    ns2:hasCompetencyQuestion "cq1"^^xsd:string,
        "cq2"^^xsd:string ;
    ns3:hasConnections """Thing providesAgentRole AgentRole r\r
AgentRole hasRoleUnderName Name r st\r
Agent assumesAgentRole AgentRole st sd iqsf sr\r
Agent hasName Name r e iqsf\r
Name hasNameAsString xsd:string e"""^^xsd:string ;
    ns3:hasSchemaDiagramFileName "M_Role.png"^^xsd:string ;
    dc:contributor "Cogan Shimizu",
        "Pascal Hitzler",
        "Rushrukh Rayan" ;
    dc:creator "Cogan Shimizu",
        "Pascal Hitzler",
        "Rushrukh Rayan" .

:hasNameAsString a owl:ObjectProperty .

:providesAgentRole a owl:ObjectProperty .

<https://kastle-labl.org/lod/ontology/xsd:string> a owl:Class .

:Agent a owl:Class ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:allValuesFrom :AgentRole ;
            owl:onProperty :assumesAgentRole ],
        [ a owl:Restriction ;
            owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ;
            owl:onClass :AgentRole ;
            owl:onProperty :assumesAgentRole ],
        [ a owl:Restriction ;
            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
            owl:onClass :AgentRole ;
            owl:onProperty [ owl:inverseOf :assumesAgentRole ] ],
        [ a owl:Restriction ;
            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
            owl:onClass :Name ;
            owl:onProperty [ owl:inverseOf :hasName ] ],
        [ a owl:Restriction ;
            owl:onProperty :hasName ;
            owl:someValuesFrom :Name ] ;
    owl:disjointWith :AgentRole,
        :Name .

:hasRoleUnderName a owl:ObjectProperty .

:hasName a owl:ObjectProperty ;
    owl:propertyChainAxiom ( :assumesAgentRole :hasRoleUnderName ) .

:AgentRole a owl:Class ;
    owl:disjointWith :Name ;
    skos:editorialNote "Axioms were lost when this pattern was harvested: the OWL API could not read part of the source and substituted placeholder classes in http://org.semanticweb.owlapi/error#, which asserted this class to be a subclass of Error1, Error2 and so on. The placeholders are removed here because they carry no information. What they stood for is still in the source: https://ontologydesignpatterns.org/wiki/Submissions:RoleDependentNames."@en .

:assumesAgentRole a owl:ObjectProperty ;
    owl:propertyChainAxiom ( :hasName [ owl:inverseOf :hasRoleUnderName ] ) .

:Name a owl:Class ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:onProperty :hasNameAsString ;
            owl:someValuesFrom <https://kastle-labl.org/lod/ontology/xsd:string> ] .

[] owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger .

[] a owl:Restriction ;
    rdfs:subClassOf :Agent ;
    owl:onProperty :assumesAgentRole ;
    owl:someValuesFrom :Agent .

