# This ontology.
@prefix dcs:      <http://ontologi.es/doap-changeset#> .

# Related
@prefix event:    <http://purl.org/NET/c4dm/event.owl#> .
@prefix doap:     <http://usefulinc.com/ns/doap#> .
@prefix dbug:     <http://ontologi.es/doap-bugs#> .

# Stock imports.
@prefix dct:      <http://purl.org/dc/terms/> .
@prefix foaf:     <http://xmlns.com/foaf/0.1/> .
@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 xsd:      <http://www.w3.org/2001/XMLSchema#> .

## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##

<http://tobyinkster.co.uk/#i> a foaf:Person .

dcs:
	a owl:Ontology ;
	rdfs:label "DOAP Change Sets"@en ;
	dct:description "An ontology that extends DOAP to describe changesets."@en ;
	dct:created "2010-01-08"^^xsd:date ;
	dct:issued "2010-01-08"^^xsd:date ;
	dct:modified "2010-01-08"^^xsd:date ,
		"2010-01-27"^^xsd:date ,
		"2011-02-15"^^xsd:date , # dcs:Documentation, dcs:Packaging, dcs:SecurityFix, dcs:SecurityRegression
		"2012-04-25"^^xsd:date , # dcs:thanks
		"2012-06-20"^^xsd:date , # dcs:released-by
		"2013-09-03"^^xsd:date , # dcs:Tests, dcs:BackCompat
		"2015-01-15"^^xsd:date , # Syntax errors, add description
		"2015-04-05"^^xsd:date ; # use dcterms, trim imports (drobilla, for LV2)
	dct:creator <http://tobyinkster.co.uk/#i> .

<>
	a foaf:Document ;
	foaf:primaryTopic dcs: .

dcs:ChangeSet
	a owl:Class ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "Change Set"@en ;
	rdfs:comment "A collection of changes. Not necessarily disjoint with foaf:Document!"@en ;
	rdfs:subClassOf rdf:Bag .

dcs:ToDoList
	a owl:Class ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "To-Do List"@en ;
	rdfs:comment "A collection of planned changes."@en ;
	rdfs:subClassOf _:FutureChangeSet .

dcs:WishList
	a owl:Class ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "Wish List"@en ;
	rdfs:comment "A collection of desired changes."@en ;
	rdfs:subClassOf _:FutureChangeSet .

dcs:Change
	a owl:Class ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "Change"@en ;
	rdfs:comment "A change to something. Use rdfs:label to briefly describe the change. Use rdfs:comment for additional information."@en .

dcs:Addition
	a owl:Class ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "Addition"@en ;
	rdfs:comment "A change that added a new feature."@en ;
	rdfs:subClassOf dcs:Change .

dcs:Removal
	a owl:Class ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "Addition"@en ;
	rdfs:comment "A change that removed a feature."@en ;
	rdfs:subClassOf dcs:Change .

dcs:Bugfix
	a owl:Class ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "Bugfix"@en ;
	rdfs:comment "A change that fixed a problem with an existing feature."@en ;
	rdfs:subClassOf dcs:Change .

dcs:Update
	a owl:Class ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "Update"@en ;
	rdfs:comment "A change that brought a feature into compliance with policy or other changes in the external world."@en ;
	rdfs:subClassOf dcs:Change .

dcs:Regression
	a owl:Class ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "Regression"@en ;
	rdfs:comment "A change that caused a problem with an existing feature."@en ;
	rdfs:subClassOf dcs:Change .

dcs:Documentation
	a owl:Class ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "Documentation Change"@en ;
	rdfs:subClassOf dcs:Change .

dcs:Packaging
	a owl:Class ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "Packaging Change"@en ;
	rdfs:subClassOf dcs:Change .

dcs:SecurityFix
	a owl:Class ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "Security Fix"@en ;
	rdfs:comment "A change that fixed or improved a security problem."@en ;
	rdfs:subClassOf dcs:Change .

dcs:SecurityRegression
	a owl:Class ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "Security Regression"@en ;
	rdfs:comment "A change that created or worsened a security problem."@en ;
	rdfs:subClassOf dcs:Change , dcs:Regression .

dcs:Tests
	a owl:Class ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "Tests"@en ;
	rdfs:comment "A change to the test suite."@en ;
	rdfs:subClassOf dcs:Change.

dcs:BackCompat
	a owl:Class ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "Backwards Compatibility"@en ;
	rdfs:comment "A change that breaks backwards compatibility, changing documented or tested behaviour."@en ;
	rdfs:subClassOf dcs:Change.

_:FutureChangeSet
	a owl:Class ;
	rdfs:subClassOf rdf:Bag , dcs:ChangeSet .

_:VersionOrEvent
	a owl:Class ;
	owl:unionOf (doap:Version event:Event) .

dcs:changeset
	a owl:ObjectProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "change set"@en ;
	rdfs:comment "A change set may be associated with a particular software version in which those changes were released; or with an event which caused those changes."@en ;
	rdfs:domain _:VersionOrEvent ;
	rdfs:range dcs:ChangeSet .

dcs:versus
	a owl:ObjectProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "versus"@en ;
	rdfs:comment "The previous version or event which a changeset has changed from."@en ;
	rdfs:domain dcs:ChangeSet ;
	rdfs:range _:VersionOrEvent .

dcs:item
	a owl:ObjectProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "item"@en ;
	rdfs:comment "A change within a change set."@en ;
	rdfs:domain dcs:ChangeSet ;
	rdfs:range dcs:Change ;
	rdfs:subPropertyOf rdfs:member .

dcs:file
	a owl:ObjectProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "file"@en ;
	rdfs:comment "A file involved in the change."@en ;
	rdfs:domain dcs:Change .

dbug:Issue a rdfs:Class .

dcs:fixes
	a owl:ObjectProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "fixes"@en ;
	rdfs:comment "A bug fixed by the change."@en ;
	rdfs:domain dcs:Bugfix ;
	rdfs:range dbug:Issue .

dcs:implements
	a owl:ObjectProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "implements"@en ;
	rdfs:domain dcs:Addition ;
	rdfs:range doap:Specification .

dcs:restores
	a owl:ObjectProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "restores"@en ;
	rdfs:comment "An association between a regression and a later bugfix that fixes it."@en ;
	rdfs:domain dcs:Bugfix ;
	rdfs:range dcs:Regression .

dcs:blame
	a owl:ObjectProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:subPropertyOf dcs:thanks ;
	rdfs:label "blame"@en .

dcs:thanks
	a owl:ObjectProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "thanks"@en ;
	rdfs:comment "More general than dcs:blame - could be used e.g. to indicate who financially sponsored a new feature."@en ;
	rdfs:domain dcs:Change ;
	rdfs:range foaf:Agent .

dcs:checkin
	a owl:DatatypeProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "checkin"@en ;
	rdfs:comment "The identifier used by the project's version control system that records when this change was made."@en ;
	rdfs:domain dcs:Change ;
	rdfs:range xsd:string .

dcs:milestone
	a owl:ObjectProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "milestone"@en ;
	rdfs:domain _:FutureChangeSet ;
	rdfs:range _:VersionOrEvent .

dcs:tasks
	a owl:ObjectProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "tasks"@en ;
	rdfs:domain foaf:Agent ;
	rdfs:range dcs:ToDoList .

dcs:wishes
	a owl:ObjectProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "wishes"@en ;
	rdfs:domain foaf:Person ;
	rdfs:range dcs:WishList .

dcs:requires
	a owl:ObjectProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "requires"@en ;
	rdfs:comment "Indicates that the subject Change cannot/could not be completed without the object Change."@en ;
	rdfs:domain dcs:Change ;
	rdfs:range dcs:Change .

dcs:timescale
	a owl:DatatypeProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "timescale"@en ;
	rdfs:comment "Human-readable description of the approximate time a change/feature should be complete by."@en ;
	rdfs:domain dcs:Change ;
	rdfs:range xsd:string .

dcs:released-by
	a owl:ObjectProperty ;
	rdfs:isDefinedBy dcs: ;
	rdfs:label "released by"@en ;
	rdfs:domain doap:Version ;
	rdfs:range foaf:Person .
