@prefix :      <http://ontologi.es/profiling#> .
@prefix dc:    <http://purl.org/dc/terms/> .
@prefix doap:  <http://example.com/> .
@prefix foaf:  <http://xmlns.com/foaf/0.1/> .
@prefix pr:    <http://ontologi.es/profiling#pr/> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .

# This vocabulary is too confusing for most mere mortals.
# Consult the documentation instead.

<> a :Profile ;
	rdfs:seeAlso <http://buzzword.org.uk/2009/vocamp-bristol/profiling/usage> ;
	rdfs:comment "Terms beginning with an underscore are abstract. Don't use them.";
	foaf:maker <http://tobyinkster.co.uk/#i> ;
	:required pr:required ;
	:recommended pr:recommended ;
	:optional pr:optional ;
	:forbidden pr:forbidden ;
	:single pr:single ;
	:multi pr:multi ;
	:range pr:range ;
	:comment pr:comment .

:Profile
	a rdfs:Class , pr:URI ;
	rdfs:label "Profile" ;
	rdfs:comment "A profile is a document that defines a dialect of RDF, that datasets can be judged to conform to or not, and applications can advertise themselves as being able to operate on." ;
	pr:recommended
		:required ,
		:recommended ,
		:optional ,
		:forbidden ,
		:single ,
		:multi ,
		:range ,
		:comment ,
		rdfs:label ;
	pr:optional
		:consumer ,
		:producer ,
		foaf:maker ,
		dc:modified ,
		dc:created ;
	pr:single
		:required ,
		:recommended ,
		:optional ,
		:forbidden ,
		:single ,
		:multi ,
		:range ,
		:comment ;
	pr:multi
		:consumer ;
		:producer ;
		:exampleDocument .
		
foaf:Document ;
	pr:optional :respects ;
	pr:multi :respects .

:_ProfileDefinedProperty
	a rdfs:Class ;
	rdfs:subClassOf rdf:Property ;
	rdfs:domain rdfs:Class ;
	rdfs:range rdf:Property .

:_ProfileDefinedRangeProperty
	a rdfs:Class ;
	rdfs:subClassOf rdf:Property ;
	rdfs:domain rdf:Property ;
	rdfs:range :_Range .

:_indicator
	a rdf:Property ;
	rdfs:domain :Profile ;
	rdfs:range :_ProfileDefinedProperty .

:_range_indicator
	a rdf:Property ;
	rdfs:domain :Profile ;
	rdfs:range :_ProfileDefinedRangeProperty .

:_requirement_level_indicator
	rdfs:subPropertyOf :_indicator .
	
:_count_indicator
	rdfs:subPropertyOf :_indicator .

:required
	rdfs:subPropertyOf :_requirement_level_indicator .
	
:recommended
	rdfs:subPropertyOf :_requirement_level_indicator .
	
:optional
	rdfs:subPropertyOf :_requirement_level_indicator .
	
:forbidden
	rdfs:subPropertyOf :_requirement_level_indicator .
	
:single
	rdfs:subPropertyOf :_count_indicator .
	
:multi
	rdfs:subPropertyOf :_count_indicator .

:range
	a rdf:Property ;
	rdfs:domain :Profile ;
	rdfs:range :_range_indicator .

:comment
	rdfs:subPropertyOf :_indicator .

:consumer
	a rdf:Property ;
	rdfs:comment "A consumer of data that conforms to a profile."@en ;
	rdfs:domain :Profile ;
	rdfs:range doap:Project .

:producer
	a rdf:Property ;
	rdfs:comment "A producer of data that conforms to a profile."@en ;
	rdfs:domain :Profile ;
	rdfs:range doap:Project .

:exampleDocument
	a rdf:Property ;
	rdfs:comment "A model document that conforms to a profile."@en ;
	rdfs:domain :Profile ;
	rdfs:range foaf:Document .

:respects
	a rdf:Property ;
	rdfs:domain foaf:Document ;
	rdfs:range :Profile .

:_Range
	a rdfs:Class .

:Literal
	rdfs:subClassOf :_Range .

:NonLiteral
	rdfs:subClassOf :_Range .

:URI
	rdfs:subClassOf :NonLiteral .

:BNode
	rdfs:subClassOf :NonLiteral .

:HTTP_URI
	rdfs:subClassOf :URI .

:MailTo_URI
	rdfs:subClassOf :URI .
