@prefix gist: <https://w3id.org/semanticarts/ns/ontology/gist/> .
@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#> .

gist:ControlledVocabulary owl:equivalentClass [ a owl:Class ;
            owl:intersectionOf ( gist:Collection [ a owl:Restriction ;
                        owl:onProperty gist:isGovernedBy ;
                        owl:someValuesFrom [ a owl:Class ;
                                owl:unionOf ( gist:Organization gist:Person ) ] ] [ a owl:Restriction ;
                        owl:onProperty [ owl:inverseOf gist:isMemberOf ] ;
                        owl:someValuesFrom gist:Category ] ) ] .

gist:GeoRoute owl:equivalentClass [ a owl:Class ;
            owl:intersectionOf ( gist:OrderedCollection [ a owl:Restriction ;
                        owl:onProperty [ owl:inverseOf gist:isMemberOf ] ;
                        owl:someValuesFrom gist:GeoPoint ] ) ] .

gist:IntergovernmentalOrganization owl:equivalentClass [ a owl:Class ;
            owl:intersectionOf ( gist:Organization [ a owl:Restriction ;
                        owl:minQualifiedCardinality "2"^^xsd:nonNegativeInteger ;
                        owl:onClass gist:GovernmentOrganization ;
                        owl:onProperty [ owl:inverseOf gist:isMemberOf ] ] ) ] .

gist:UnitGroup rdfs:subClassOf [ a owl:Restriction ;
            owl:onProperty [ owl:inverseOf gist:isMemberOf ] ;
            owl:someValuesFrom gist:UnitOfMeasure ] .

gist:NetworkLink owl:equivalentClass [ a owl:Class ;
            owl:intersectionOf ( gist:Component [ a owl:Restriction ;
                        owl:onProperty gist:isMemberOf ;
                        owl:someValuesFrom gist:Network ] [ a owl:Restriction ;
                        owl:onProperty gist:links ;
                        owl:someValuesFrom gist:NetworkNode ] ) ] .

gist:isFirstMemberOf rdfs:subPropertyOf gist:isMemberOf .

gist:Network owl:equivalentClass [ a owl:Class ;
            owl:intersectionOf ( gist:Composite [ a owl:Restriction ;
                        owl:onProperty [ owl:inverseOf gist:isMemberOf ] ;
                        owl:someValuesFrom [ a owl:Class ;
                                owl:unionOf ( gist:NetworkLink gist:NetworkNode ) ] ] ) ] .

gist:NetworkNode rdfs:subClassOf [ a owl:Restriction ;
            owl:onProperty gist:isMemberOf ;
            owl:someValuesFrom gist:Network ] .

gist:OrderedCollection owl:equivalentClass [ a owl:Class ;
            owl:intersectionOf ( gist:Collection [ a owl:Class ;
                        owl:unionOf ( [ a owl:Restriction ;
                                    owl:onProperty [ owl:inverseOf gist:isFirstMemberOf ] ;
                                    owl:someValuesFrom gist:OrderedMember ] [ a owl:Restriction ;
                                    owl:cardinality "0"^^xsd:nonNegativeInteger ;
                                    owl:onProperty [ owl:inverseOf gist:isMemberOf ] ] ) ] [ a owl:Restriction ;
                        owl:allValuesFrom gist:OrderedMember ;
                        owl:onProperty [ owl:inverseOf gist:isMemberOf ] ] ) ] .

gist:OrderedMember owl:equivalentClass [ a owl:Class ;
            owl:intersectionOf ( gist:Component [ a owl:Class ;
                        owl:unionOf ( [ a owl:Restriction ;
                                    owl:onProperty gist:precedesDirectly ;
                                    owl:someValuesFrom gist:OrderedMember ] [ a owl:Restriction ;
                                    owl:onProperty [ owl:inverseOf gist:precedesDirectly ] ;
                                    owl:someValuesFrom gist:OrderedMember ] [ a owl:Restriction ;
                                    owl:onProperty gist:sequence ;
                                    owl:someValuesFrom xsd:integer ] ) ] [ a owl:Restriction ;
                        owl:onProperty gist:providesOrderFor ;
                        owl:someValuesFrom owl:Thing ] [ a owl:Restriction ;
                        owl:allValuesFrom gist:OrderedCollection ;
                        owl:onProperty gist:isMemberOf ] [ a owl:Restriction ;
                        owl:cardinality "1"^^xsd:nonNegativeInteger ;
                        owl:onProperty gist:isMemberOf ] ) ] .

gist:isMemberOf a owl:ObjectProperty ;
    rdfs:label "is member of"^^xsd:string ;
    rdfs:comment "DEFINITION: Relates a member individual to the thing, such as a collection or organization, that it is a member of."^^xsd:string ;
    rdfs:isDefinedBy <https://w3id.org/semanticarts/ontology/gistCore14.1.0> ;
    skos:definition "Relates a member individual to the thing, such as a collection or organization, that it is a member of."^^xsd:string ;
    skos:prefLabel "is member of"^^xsd:string ;
    gist:rangeIncludes gist:Collection,
        gist:Organization .

