@prefix vaem: <http://www.linkedmodel.org/schema/vaem#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix voag: <http://voag.linkedmodel.org/voag#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dtype: <http://www.linkedmodel.org/schema/dtype#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<http://www.linkedmodel.org/schema/dtype> a owl:Ontology ;
	owl:imports <http://www.linkedmodel.org/schema/vaem> .

dtype:numericUnion a rdfs:Datatype ;
	owl:equivalentClass _:node18rinct11x24 .

_:node18rinct11x24 a rdfs:Datatype ;
	owl:unionOf _:node18rinct11x25 .

_:node18rinct11x25 rdf:first xsd:float ;
	rdf:rest _:node18rinct11x26 .

_:node18rinct11x26 rdf:first xsd:decimal ;
	rdf:rest _:node18rinct11x27 .

_:node18rinct11x27 rdf:first xsd:integer ;
	rdf:rest _:node18rinct11x28 .

_:node18rinct11x28 rdf:first xsd:double ;
	rdf:rest rdf:nil .

dtype:numericUnion rdfs:subClassOf rdfs:Resource ;
	rdfs:label "numeric union"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> .

<http://www.linkedmodel.org/1.1/schema/dtype> owl:versionInfo "Created with TopBraid Composer"^^xsd:string ;
	vaem:revision "1.1"^^xsd:string ;
	vaem:usesNonImportedResource dc:description ;
	rdfs:label "Datatype Ontology"^^xsd:string ;
	vaem:hasGraphRole vaem:SchemaGraph ;
	vaem:dateCreated "2011-05-29"^^vaem:dateUnion ;
	vaem:usesNonImportedResource dc:author ;
	vaem:lastUpdated "2014-06-28"^^vaem:dateUnion ;
	vaem:owner "TopQuadrant"^^xsd:string ;
	vaem:withAttributionTo voag:TopQuadrantAttribution ;
	vaem:usesNonImportedResource dc:title ;
	dc:author "Ralph Hodgson"^^xsd:string ;
	vaem:namespace "http://www.linkedmodel.org/schema/dtype"^^xsd:anyURI ;
	vaem:usesNonImportedResource dc:contributor , dc:subject ;
	vaem:description "The ontology \"dtype\" provides a specification of simple data types such as enumerations and codelists. These are needed in support of the conversion of XML Schemas and UML Models to OWL. The purpose of \"dtype\" is to provide a foundation for expressing rich data types. These data types are typically needed when dealing with OWL representations of data structures derived from XML Schema."^^xsd:string ;
	dc:subject "Datatype schema"^^xsd:string ;
	owl:versionIRI <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:namespacePrefix "dtype"^^xsd:string ;
	vaem:hasLicenseType voag:CC-SHAREALIKE_3PT0-US ;
	vaem:name "DTYPE"^^xsd:string ;
	dc:title "Datatype Ontology"^^xsd:string .

dtype:numericUnion dc:description "A datatype that is the union of numeric xsd data types. \"numericUnion\" is equivalent to the xsd specification that uses an xsd:union of memberTypes=\"xsd:decimal xsd:double xsd:float xsd:integer\"."^^xsd:string .

dtype:Enumeration a owl:Class ;
	rdfs:subClassOf _:node18rinct11x29 .

_:node18rinct11x29 a owl:Restriction ;
	owl:onProperty dtype:defaultValue .

dtype:defaultValue a rdf:Property .

_:node18rinct11x29 owl:maxCardinality "1"^^xsd:nonNegativeInteger .

dtype:Enumeration rdfs:subClassOf _:node18rinct11x30 .

_:node18rinct11x30 a owl:Restriction ;
	owl:onProperty dtype:value .

dtype:value a rdf:Property .

_:node18rinct11x30 owl:allValuesFrom dtype:EnumeratedValue .

dtype:EnumeratedValue a owl:Class .

dtype:Enumeration rdfs:subClassOf _:node18rinct11x31 .

_:node18rinct11x31 a owl:Restriction ;
	owl:onProperty dtype:defaultValue ;
	owl:allValuesFrom dtype:EnumeratedValue .

dtype:Enumeration rdfs:subClassOf owl:Thing ;
	rdfs:label "DTYPE Enumeration"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "A type that serves as a container for the enumerated values of an enumeration. This enables the enumeration itself to be referenceable. One need for this is in determing the default value of an enumeration , another need is in the management of sub-enumerations and composite enumerations."^^xsd:string .

dtype:EnumeratedValue rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> ;
	rdfs:label "DTYPE Enumerated value"^^xsd:string ;
	rdfs:subClassOf owl:Thing ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/1.1/schema/dtype> ;
	dc:description "The base class for datatypes that have values that are restriced to a set of literals or tokens. The members of the restriction may themselve be restriced by facets that apply to scalar data types."^^xsd:string ;
	rdfs:subClassOf _:node18rinct11x32 .

_:node18rinct11x32 a owl:Restriction ;
	owl:onProperty dtype:value ;
	owl:cardinality "1"^^xsd:nonNegativeInteger .

dtype:EnumeratedValue rdfs:subClassOf _:node18rinct11x33 .

_:node18rinct11x33 a owl:Restriction ;
	owl:onProperty vaem:url ;
	owl:minCardinality "0"^^xsd:nonNegativeInteger .

dtype:EnumeratedValue rdfs:subClassOf _:node18rinct11x34 .

_:node18rinct11x34 a owl:Restriction ;
	owl:onProperty dtype:order .

dtype:order a owl:DatatypeProperty .

_:node18rinct11x34 owl:maxCardinality "1"^^xsd:nonNegativeInteger .

dtype:EnumeratedValue rdfs:subClassOf _:node18rinct11x35 .

_:node18rinct11x35 a owl:Restriction ;
	owl:onProperty vaem:name ;
	owl:maxCardinality "1"^^xsd:nonNegativeInteger .

dtype:EnumeratedValue rdfs:subClassOf _:node18rinct11x36 .

_:node18rinct11x36 a owl:Restriction ;
	owl:onProperty vaem:description ;
	owl:maxCardinality "1"^^xsd:nonNegativeInteger .

dtype:EnumeratedValue rdfs:subClassOf _:node18rinct11x37 .

_:node18rinct11x37 a owl:Restriction ;
	owl:onProperty dtype:code .

dtype:code a owl:DatatypeProperty .

_:node18rinct11x37 owl:maxCardinality "1"^^xsd:nonNegativeInteger .

dtype:EnumeratedValue rdfs:subClassOf _:node18rinct11x38 .

_:node18rinct11x38 a owl:Restriction ;
	owl:onProperty dtype:position .

dtype:position a owl:DatatypeProperty .

_:node18rinct11x38 owl:maxCardinality "1"^^xsd:nonNegativeInteger .

dtype:SimpleCodeList a owl:Class ;
	owl:disjointWith dtype:DerivedCodeList .

dtype:DerivedCodeList a owl:Class .

dtype:SimpleCodeList owl:disjointWith dtype:CompositeCodeList .

dtype:CompositeCodeList a owl:Class .

dtype:SimpleCodeList rdfs:subClassOf _:node18rinct11x39 .

_:node18rinct11x39 a owl:Restriction ;
	owl:onProperty dtype:hasMember .

dtype:hasMember a owl:ObjectProperty .

_:node18rinct11x39 owl:allValuesFrom dtype:EnumeratedValue .

dtype:SimpleCodeList rdfs:subClassOf dtype:CodeList .

dtype:CodeList a owl:Class .

dtype:SimpleCodeList rdfs:label "Simple Code List"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "A simple codelist is one made up only of enumerated values."^^xsd:string .

dtype:DerivedCodeList rdfs:isDefinedBy <http://www.linkedmodel.org/1.1/schema/dtype> ;
	owl:disjointWith dtype:SimpleCodeList ;
	rdfs:subClassOf dtype:CodeList ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> ;
	rdfs:label "Derived Code List"^^xsd:string ;
	owl:disjointWith dtype:CompositeCodeList ;
	rdfs:subClassOf _:node18rinct11x40 .

_:node18rinct11x40 a owl:Restriction ;
	owl:onProperty dtype:hasMember ;
	owl:allValuesFrom dtype:ValueReference .

dtype:ValueReference a owl:Class .

dtype:DerivedCodeList vaem:comment "A derived codelist is a sublist of another codelist. The members that it has must be members of the source list."^^xsd:string ;
	rdfs:subClassOf _:node18rinct11x41 .

_:node18rinct11x41 a owl:Restriction ;
	owl:onProperty dtype:derivedFrom .

dtype:derivedFrom a owl:ObjectProperty .

_:node18rinct11x41 owl:allValuesFrom dtype:CodeList .

dtype:DerivedCodeList rdfs:subClassOf _:node18rinct11x42 .

_:node18rinct11x42 a owl:Restriction ;
	owl:onProperty dtype:derivedFrom ;
	owl:maxCardinality "1"^^xsd:nonNegativeInteger .

dtype:ValueReference rdfs:subClassOf _:node18rinct11x43 .

_:node18rinct11x43 a owl:Restriction ;
	owl:onProperty dtype:position ;
	owl:maxCardinality "1"^^xsd:nonNegativeInteger .

dtype:ValueReference rdfs:subClassOf _:node18rinct11x44 .

_:node18rinct11x44 a owl:Restriction ;
	owl:onProperty dtype:refersTo .

dtype:refersTo a owl:ObjectProperty .

_:node18rinct11x44 owl:cardinality "1"^^xsd:nonNegativeInteger .

dtype:ValueReference rdfs:subClassOf _:node18rinct11x45 .

_:node18rinct11x45 a owl:Restriction ;
	owl:onProperty dtype:refersTo ;
	owl:allValuesFrom dtype:EnumeratedValue .

dtype:ValueReference rdfs:subClassOf owl:Thing ;
	rdfs:label "Value Reference"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "A value reference is a pointer to an Enumerated Value. The original position of the value can be overridden by the position attribute."^^xsd:string .

dtype:CompositeCodeList owl:disjointWith dtype:SimpleCodeList , dtype:DerivedCodeList ;
	rdfs:subClassOf _:node18rinct11x46 .

_:node18rinct11x46 a owl:Restriction ;
	owl:onProperty dtype:compositeOf .

dtype:compositeOf a owl:ObjectProperty .

_:node18rinct11x46 owl:allValuesFrom dtype:CodeList .

dtype:CompositeCodeList rdfs:subClassOf dtype:CodeList ;
	rdfs:label "Composite Code List"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "A composite codelist is a codelist made up of other codelists. It does not introduce any new codes."^^xsd:string .

dtype:CodeList rdfs:subClassOf dtype:Enumeration ;
	rdfs:label "Codelist"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "A codelist is a controlled vocabulary of terms that are used to represent permissible values of a variable in information systems. The representaiton of codes in \"dtype\" has been influenced by CCTS and UBL."^^xsd:string .

dtype:refersTo rdfs:label "refers to"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "An indirection pointer for relating a slot in am occurrence data structure, such as \"dtype:ValueReference\" with another resource."^^xsd:string .

dtype:hasMember rdfs:label "has member"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "A property for specifying how member elements make up a data structure."^^xsd:string .

dtype:derivedFrom rdfs:label "derived from"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "A property for specifying a derivation relationship."^^xsd:string .

dtype:compositeOf rdfs:label "composite of"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "Aproperty for constructing composite data structures"^^xsd:string .

dtype:type a owl:ObjectProperty ;
	rdfs:label "datatype"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> .

dtype:value rdfs:label "value"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "The property \"dtype:value\" is a general property that in some cases could have scalar values and in other cases may refer to a first class concept that is a \"value object\". For this reason, the  type of this property is set as \"rdf:Property\" and the property is rangeless."^^xsd:string .

dtype:defaultValue rdfs:label "default value"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "The property \"dtype:defaultValue\" is a general property for specifying a value in situations where none is specified, or can be determined. In some cases of use, this property could have a scalar value and in other cases may need to refer to a first class concept that holds a \"value object\".  For this reason, the  type of this property is set as \"rdf:Property\" and the property is rangeless."^^xsd:string .

dtype:isInvalid a owl:DatatypeProperty ;
	rdfs:range xsd:boolean ;
	rdfs:label "is invalid"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "A boolean flag to state that a value is invalid with respect to its type."^^xsd:string .

dtype:order rdfs:seeAlso dtype:orderIndex .

dtype:orderIndex a owl:AnnotationProperty ;
	rdfs:range xsd:nonNegativeInteger ;
	rdfs:label "order index"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "The property \"dtype:orderIndex\" is an annotation property to specify a position that some value or structure will have. One use is to specify the place that a resource has in a sequence. One use is on property occurrences in class axioms. Here \"vaem:orderIndex\" is placed on a restriction to specify how that property may be transformed into a representation where ordering has some importance, for example, in XML Schema sequences."^^xsd:string .

dtype:order rdfs:range xsd:nonNegativeInteger ;
	rdfs:label "order"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "The property \"dtype:order\" provides a means to specify a precedence. One use of order is in specifying ordered enumerations such as \"voag:ConfidentialityLevel\".  A similar property, but with an important type difference, is \"vaem:orderIndex\". This is for use on property occurrences in class axioms where it can be placed on a restriction to specify how that property may be transformed into other representations where ordering has some importance, for example, in XML Schema sequences.  Whereas \"vaem:order\" is a datatype property, \"vaem:orderIndex\" is an annotation property."^^xsd:string .

dtype:code rdfs:range xsd:anySimpleType ;
	rdfs:label "code"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "A property for expressing an encoded value. The range has been set to \"xsd:anySimpleType\" to allow for a variety of scalar datatypes."^^xsd:string .

dtype:position rdfs:range xsd:nonNegativeInteger ;
	rdfs:label "position"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> .

dtype:literal a owl:DatatypeProperty ;
	rdfs:range xsd:string ;
	rdfs:label "literal"^^xsd:string ;
	rdfs:isDefinedBy <http://www.linkedmodel.org/schema/dtype> , <http://www.linkedmodel.org/1.1/schema/dtype> ;
	vaem:comment "A general purpose property for holding string literals."^^xsd:string .
