@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:  <http://www.w3.org/2002/07/owl#> .
@prefix dc:   <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix :     <http://ontologi.es/lang/core#> .

# This ontology takes the unusual choice of representing not languages
# themselves but sets which correspond to languages. For example,
# when defining a language "Python" using the ontology, you're not
# defining the language itself, but rather the set of all things written
# in Python.

:
	a owl:Ontology ;
	dc:creator <http://tobyinkster.co.uk/#i>,
		[ foaf:name "Ian D Mclean" ] ;
	dc:created "2009-05-19" ;
	dc:modified "2009-05-19" , "2009-05-20" ;
	rdfs:seeAlso <programming-languages> , <data-languages> .

:AnyLanguage
	a owl:Class ;
	rdfs:subClassOf owl:Class ;
	rdfs:label "Any Language" ;
	rdfs:comment "The set of all things written in any language" ;
	rdfs:isDefinedBy : .

:dialect
	a owl:Property ;
	rdfs:subPropertyOf [ owl:inverseOf rdfs:subClassOf ] ;
	rdfs:label "has dialect" ;
	rdfs:comment "The subject has a dialect (subset) which is the object."  ;
	rdfs:domain owl:Class ;
	rdfs:range owl:Class .

:serialisation
	a owl:Property ;
	rdfs:subPropertyOf [ owl:inverseOf rdfs:subClassOf ] ;
	rdfs:label "has serialisation" ;
	rdfs:comment "The subject has a serialisation which is the object." ;
	rdfs:domain owl:Class ;
	rdfs:range owl:Class .

:extension
	a owl:Property ;
	rdfs:subPropertyOf rdfs:subClassOf ;
	rdfs:label "has extension" ;
	rdfs:comment "The subject has an extended version which is the object." ;
	rdfs:domain owl:Class ;
	rdfs:range owl:Class .

:written_in
	a owl:Property ;
	rdfs:subPropertyOf rdf:type ;
	rdfs:label "written in" ;
	rdfs:comment "The subject belongs to the object class by virtue of the fact that it's written in the object class' programming language." ;
	rdfs:domain foaf:Document ;
	rdfs:range owl:Class .
	
:grouping_concept
	a owl:Property ;
	rdfs:label "grouping concept" ;
	rdfs:comment "Members of the subject class are members of that class because they conform to this concept." ;
	rdfs:domain owl:Class .

:MachineLanguage
	a owl:Class ;
	rdfs:subClassOf :AnyLanguage ;
	rdfs:label "Machine Language" ;
	rdfs:comment "The set of all things written in languages designed to be machine-readable." .

:ProgrammingLanguage
	a owl:Class ;
	rdfs:subClassOf :MachineLanguage ;
	rdfs:label "Programming Language" ;
	rdfs:comment "The set of all things written in any programming language" .

:DataLanguage
	a owl:Class ;
	rdfs:subClassOf :MachineLanguage ;
	rdfs:label "Data Language" ;
	rdfs:comment "The set of all things written in any data representation language" .

:HumanLanguage
	a owl:Class ;
	rdfs:subClassOf :AnyLanguage ;
	rdfs:label "Human Language" ;
	rdfs:comment "The set of all things written in languages designed to be primarily consumable by humans." .

:Syntax
	a owl:Class .
	
:Semantics
	a owl:Class .
	
:Vocabulary
	a owl:Class .