@base . #:ewlNote "Does this mean we should change the namespace too? i.e. we should probably settle on a permanent namespace soon, agree?" #bblfish: yes. Let's get to the point where we feel comfortable. @prefix : . @prefix foaf: . @prefix owl: . @prefix rdf: . @prefix rdfs: . @prefix lifecycle: . @prefix xsd: . @prefix dc: . @prefix dct: . @prefix doap: . @prefix sioc: . @prefix skos: . # To add comments add your own property as a subPropertyOf skos:editorialNote : :ewlNote rdfs:subPropertyOf skos:editorialNote; rdfs:comment "a note by Erling Wegger Linde" . :bblfishNote rdfs:subPropertyOf skos:editorialNote; rdfs:comment "a note by Henry Story" . <> a owl:Ontology; dc:creator ; dc:creator [ foaf:nick "fraktaltek" ]; dc:contributor . :Comitting a owl:Class; rdfs:subClassOf owl:Thing, lifecycle:Action ; :ewlNote "changed from wf:Action to lifecycle:Action, but hasn't thought this through.."@en; . :DocumentVersion a owl:Class ; rdfs:subClassOf :Version, foaf:Document . # Issue and subclasses : :Issue a owl:Class; :ewlNote "Some details here? "@en ; . :Enhancement a owl:Class; rdfs:subClassOf :Issue ; . :Bug a owl:Class; rdfs:subClassOf :Issue ; skos:editorialNote "It is not clear whether we should be specifying subclasses in this ontology, as there may be many ways of doing this, and each project may have its preferred way. It may be on the other hand that an analysis of most bug tracking systems shows them to use similar concepts."@en; :ewlNote "Bug is preferred over Defect as this is a Bug-ontology"@en; . :Task a owl:Class; rdfs:subClassOf :Issue ; :ewlNote "There is an ongoing discussion on whether this class should be a sub or superclass of Issue, or if we could just use wf:Task. However, most issue trackers uses Task as a subClass of an issue, as a task that needs to be executed. This differs from other issues such as Bug and Enhancement. A Bug needs to be resolved, but the actual Task that needs to be executed could perhaps just be to mark it as a duplicate. An Enhancement is something that could be implemented or perhaps rejected. Hence we need to express this use of Task in the issue trackers in Baetle. I'm leaning towards keeping this as a special subClassOf Issue. We should keep Issue as subClassOf wf:Task though as the wf:state property is very useful."@en; . # Ticket :Ticket a owl:Class; rdfs:subClassOf foaf:Document; :ewlNote "TODO: Further details regarding a Ticket.."; . # States :TicketState a owl:Class; rdfs:subClassOf lifecycle:State . :IssueState a owl:Class; rdfs:subClassOf lifecycle:State . :Open a owl:Class; rdfs:subClassOf :TicketState; lifecycle:possibleTransition [ a lifecycle:Transition ; lifecycle:resultingState :Resolved ] ; lifecycle:possibleTransition [ a lifecycle:Transition ; lifecycle:resultingState :Closed ] ; :ewlNote "Maybe leave workflow constraints to the issuetrackers?"@en ; . :New a owl:Class; rdfs:subClassOf :Open . :Unconfirmed a owl:Class; rdfs:subClassOf :Open . :Reopened a owl:Class; rdfs:subClassOf :Open . :Started a owl:Class; rdfs:subClassOf :Open . :Verified a owl:Class; rdfs:subClassOf :Open ; :ewlNote "Not sure about if this should be a subClassOf :Open or not.."@en; . :Resolved a owl:Class; rdfs:subClassOf :TicketState ; lifecycle:possibleTransition [ a lifecycle:Transition ; lifecycle:resultingState :Closed ] ; lifecycle:possibleTransition [ a lifecycle:Transition ; lifecycle:resultingState :Reopened ] ; :ewlNote "Maybe leave workflow constraints to the issuetrackers?"@en ; . :NotReproducible a owl:Class; rdfs:subClassOf :IssueState . :WorksForMe a owl:Class; rdfs:subClassOf :IssueState . :WontFix a owl:Class; rdfs:subClassOf :IssueState . :Incomplete a owl:Class; rdfs:subClassOf :IssueState . :Later a owl:Class; rdfs:subClassOf :IssueState . :Remind a owl:Class; rdfs:subClassOf :IssueState . :Duplicate a owl:Class; rdfs:subClassOf :IssueState; :ewlNote "I admit that this is maybe a TicketState.. but how to display the resolved:duplicate often used in bugtrackers then?"@en ; . :Fixed a owl:Class; rdfs:subClassOf :IssueState . :Closed a owl:Class; rdfs:subClassOf :TicketState ; lifecycle:possibleTransition [ a lifecycle:Transition ; lifecycle:resultingState :Reopened ] ; :ewlNote "Maybe leave workflow constraints to the issuetrackers?"@en ; . # state properties :ticketState a owl:ObjectProperty; rdfs:subPropertyOf lifecycle:state; rdfs:domain :Ticket . :issueState a owl:ObjectProperty; rdfs:subPropertyOf lifecycle:state; rdfs:domain :Issue . # Other classes: :Version a owl:Class . :SoftwarePackage a owl:Class; rdfs:subClassOf :DocumentVersion; rdfs:sublClassOf foaf:Document; . # Properties of Version :id a owl:FunctionalProperty; rdfs:label "id"@en; rdfs:comment "See ยง4.2.6 rfc 4287 spec. All Versions with the same id can be considered to be versions of the resource identified by the id. The id mentions the resource of which it is a representat ion. "@en; rdfs:domain :Version; rdfs:range xsd:anyURI; . # Properties of Issue :issueKey a owl:DatatypeProperty ; rdfs:domain :Issue; :ewlNote "A key that is used to represent this issue in an issuetracker, repository etc. But be aware that this ID may not be unique!"@en; . :reporter a owl:ObjectProperty; rdfs:domain :Ticket; rdfs:range sioc:User; rdfs:comment "the reporter of the bug"@en; . :assigned_to a owl:ObjectProperty ; rdfs:domain :Ticket; rdfs:range sioc:User ; rdfs:comment "the person the bug is assigned to"@en; . :interested a owl:ObjectProperty ; rdfs:domain :Ticket; rdfs:range sioc:User ; rdfs:comment "A user interested in changes to this issue"@en; . :qa_contact a owl:ObjectProperty ; rdfs:domain :Ticket; rdfs:range sioc:User ; rdfs:comment "A contact point"@en; skos:editorialNote "This was available on NetBeans issuezilla. Perhaps it would be better placed somewhere else."@en; . :about a owl:ObjectProperty; :ewlNote "Should we add: rdfs:range SoftwarePackage"@en; . # Regarding attachements to an issue, see the mailing list or wiki :comment a owl:ObjectProperty ; rdfs:label "comment"@en; rdfs:domain :Ticket; rdfs:range sioc:Post ; rdfs:comment "A comment on an Issue"@en; . :contains a owl:ObjectProperty ; :ewlNote "Should we add rdfs:range: DocumentVersion, rdfs:domain: SoftwarePackage"@en; . :blocks a owl:ObjectProperty ; rdfs:label "blocks"; rdfs:comment "this issue is blocking the other"@en; rdfs:domain :Issue; rdfs:range :Issue; skos:editorialNote "the range should perhaps be a wf:Task"@en; skos:editorialNote "Is this the inverse of depends_on?"@en; . :subtask a owl:DatatypeProperty ; rdfs:label "subtask"; rdfs:comment "a subtask of this issue"@en; rdfs:domain :Issue; rdfs:range :Issue; skos:editorialNote "the range should perhaps be an wf:Task"@en; . :depends_on a owl:ObjectProperty ; rdfs:label "depends_on"; rdfs:comment "a task that depends on this one being completed"@en; rdfs:domain :Issue; rdfs:range :Issue; skos:editorialNote "the range and domain should perhaps be an wf:Task"@en; . :causes a owl:ObjectProperty ; rdfs:label "causes"; rdfs:comment "this Issue causes the other one"@en; rdfs:domain :Issue; rdfs:range :Issue; . :duplicate a owl:ObjectProperty ; rdfs:label "duplicate"; rdfs:comment "this Issue is a duplicate of the other."@en; rdfs:domain :Issue; rdfs:range :Issue; skos:editorialNote "should this be a symmetric and transitive property? Without symmetry we can have the direction have some implication as to the which one was the last one being worked on"@en; . :name a owl:ObjectProperty ; skos:editorialNote "Used as an attribute on SoftwarePackage"@en; . :environment a owl:DatatypeProperty ; rdfs:label "environment"; rdfs:domain :Issue; rdfs:comment "description of the environment where the issue was noticed"; skos:editorialNote "this was found in Jira on Sesame. The OS and other relations were not clearly distinguished"; . :relates_to a owl:ObjectProperty ; skos:editorialNote "Domain: Committing, Range: :Issue"; . :resolvedWith a owl:ObjectProperty ; skos:editorialNote "Domain: :Issue, Range: Committting, InverseOf relates_to?"; . :summary a owl:DatatypeProperty ; rdfs:domain :Issue; rdfs:comment "summary of Issue"@en; rdfs:label "summary"@en; . :description a owl:DatatypeProperty ; rdfs:domain :Issue; rdfs:comment "longer description of the Issue"@en; rdfs:label "description"@en; . :target_milestone a owl:ObjectProperty ; :ewlNote "Add more info on this one?"@en ; . # For created and modified use dcterms:created and dcterms:modified :due_date a owl:DatatypeProperty ; rdfs:labed "updated"; rdfs:range xsd:dateTime; rdfs:domain :Ticket; rdfs:comment "date the task is due by"; skos:editorialNote "Should probably have this be on the milestone relations"; . :version a owl:ObjectProperty ; :ewlNote "Do we need this? How do you specify which version of a project an issue is related to?"; . :votes a owl:DatatypeProperty; rdfs:label "votes"; rdfs:range xsd:integer; rdfs:comment "number of votes for the issue"; skos:editorialNote "Should probably use some voting ontology"; . # Priorities :priorityFor a owl:ObjectProperty ; :ewlNote "Following Henry's idea to express priorities as properties instead of classes. This way an issue can be linked to different projects with more expressively"@en . :blockerFor a owl:ObjectProperty; rdfs:subPropertyOf :priorityFor. :criticalFor a owl:ObjectProperty; rdfs:subPropertyOf :priorityFor. :majorFor a owl:ObjectProperty; rdfs:subPropertyOf :priorityFor. :trivialFor a owl:ObjectProperty; rdfs:subPropertyOf :priorityFor. :minorFor a owl:ObjectProperty; rdfs:subPropertyOf :priorityFor.