PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX woc: <http://rdf.webofcode.org/woc/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

woc:LocalVariableDeclarationStatement a rdfs:Class ;
  rdfs:label "Local Variable Declaration Statement"@en ;
  rdfs:comment "A local variable declaration"@en ;
  rdfs:subClassOf woc:VariableDeclarationStatement .

woc:hasLabel a rdf:Property ;
  rdfs:label "label"@en ;
  rdfs:comment "Links a labeled statement to its label"@en ;
  rdfs:domain woc:Statement ;
  rdfs:range xsd:string .

woc:isSubStatementOf a rdf:Property ;
  rdfs:label "is substatement of"@en ;
  rdfs:comment "The isSubStatementOf property relates a statement to the method, constructor or statement it is contained in."@en ;
  rdfs:domain woc:Statement ;
  rdfs:range <https://w3id.org/linkml/Any> ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#isPartOf> .

woc:isThenBranchOf a rdf:Property ;
  rdfs:label "is then branch of"@en ;
  rdfs:comment "The isThenBranchOf property relates a statement enclosed in a then branch to the corresponding If-then-else statement"@en ;
  rdfs:domain woc:Statement ;
  rdfs:range woc:IfThenElseStatement ;
  rdfs:subPropertyOf woc:isSubStatementOf .

woc:hasSubExpression a rdf:Property ;
  rdfs:label "has subexpression"@en ;
  rdfs:comment "The hasSubExpression property relates a statement or expression to the expressions it contains."@en ;
  rdfs:range woc:Expression ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#hasPart> .

woc:hasInitializer a rdf:Property ;
  rdfs:label "has initializer"@en ;
  rdfs:comment "The hasInitializer property relates a variable declaration to the expression assigned to the declared variable"@en ;
  rdfs:domain woc:VariableDeclarationStatement ;
  rdfs:range woc:Expression ;
  rdfs:subPropertyOf woc:hasSubExpression .

woc:hasLine a rdf:Property ;
  rdfs:label "line"@en ;
  rdfs:comment "Links a statement to the line it starts in"@en ;
  rdfs:range xsd:int .

woc:hasPreviousStatement a rdf:Property ;
  rdfs:label "has previous statement"@en ;
  rdfs:comment "The hasPreviousStatement property relates a statement to the previous one."@en ;
  rdfs:domain woc:Statement ;
  rdfs:range woc:Statement ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#previous> .

woc:isReferencedBy a rdf:Property ;
  rdfs:label "is referenced by"@en ;
  rdfs:comment "The isReferencedBy property relates a code element to the elements it is referenced by."@en ;
  rdfs:domain woc:CodeElement ;
  rdfs:range woc:CodeElement .

woc:references a rdf:Property ;
  rdfs:label "references"@en ;
  rdfs:comment "The references property relates a method or a constructor to the types, methods, constructors and fields it references."@en ;
  rdfs:domain woc:CodeElement ;
  rdfs:range woc:CodeElement .

woc:hasAnnotation a rdf:Property ;
  rdfs:label "has annotation"@en ;
  rdfs:comment "The hasAnnotation property relates a code element to its annotations"@en ;
  rdfs:domain woc:CodeElement ;
  rdfs:range woc:AnnotationType .

woc:isElseBranchOf a rdf:Property ;
  rdfs:label "is else branch of"@en ;
  rdfs:comment "The isElseBranchOf property relates the statement in an else branch to the corresponding If-then-else statement"@en ;
  rdfs:domain woc:Statement ;
  rdfs:range woc:IfThenElseStatement ;
  rdfs:subPropertyOf woc:isSubStatementOf .

woc:hasPosition a rdf:Property ;
  rdfs:label "position"@en ;
  rdfs:comment "Links a element to its position"@en ;
  rdfs:domain woc:CodeElement ;
  rdfs:range xsd:int .

woc:isDeclaredBy a rdf:Property ;
  rdfs:label "is declared by"@en ;
  rdfs:comment "The isDeclaredBy property relates a code element to the element it is declared by."@en ;
  rdfs:domain woc:CodeElement ;
  rdfs:range woc:CodeElement , woc:Executable ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#isPartOf> .

woc:hasName a rdf:Property ;
  rdfs:label "name"@en ;
  rdfs:comment "Links a element to its name"@en ;
  rdfs:range xsd:string .

woc:hasSourceCode a rdf:Property ;
  rdfs:label "source code"@en ;
  rdfs:comment "Links a element to its source code"@en ;
  rdfs:domain woc:CodeElement ;
  rdfs:range xsd:string .

woc:declares a rdf:Property ;
  rdfs:label "declares"@en ;
  rdfs:comment "The declares property relates a code element to the elements it declares. For instance, a class is linked to its fields, methods and constructors."@en ;
  rdfs:domain woc:CodeElement ;
  rdfs:range woc:CodeElement ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#hasPart> .

woc:hasNextStatement a rdf:Property ;
  rdfs:label "next"@en ;
  rdfs:comment "The hasNextStatement property relates a statement to the next statement to be executed."@en ;
  rdfs:domain woc:Statement ;
  rdfs:range woc:Statement , woc:LabeledBlock ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#next> .

woc:hasSubStatement a rdf:Property ;
  rdfs:label "has substatement"@en ;
  rdfs:comment "The hasSubStatement property relates a statment to its sub-statements."@en ;
  rdfs:range woc:Statement ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#hasPart> .

woc:CaseLabeledBlock a rdfs:Class ;
  rdfs:label "Case Labeled Block"@en ;
  rdfs:comment "A case-labeled list of statements"@en ;
  rdfs:subClassOf woc:LabeledBlock .

woc:isSwitchLabelOf a rdf:Property ;
  rdfs:label "is switch label of"@en ;
  rdfs:comment "The isSwitchLabelOf property relates a case labeled block or a default block to the corresponding switch statement."@en ;
  rdfs:domain woc:LabeledBlock ;
  rdfs:range woc:SwitchStatement ;
  rdfs:subPropertyOf woc:isSubStatementOf .

woc:hasEndLine a rdf:Property ;
  rdfs:label "end line"@en ;
  rdfs:comment "Links a statement to the number of the last line it covers"@en ;
  rdfs:domain woc:BlockStatement ;
  rdfs:range xsd:int .

woc:isBodyOf a rdf:Property ;
  rdfs:label "is body of"@en ;
  rdfs:comment "The isBodyOf property relates a block to the exexcutable or statement it is the body of."@en ;
  rdfs:domain woc:BlockStatement ;
  rdfs:range <https://w3id.org/linkml/Any> ;
  rdfs:subPropertyOf woc:isSubStatementOf .

woc:Parameter a rdfs:Class ;
  rdfs:label "Parameter"@en ;
  rdfs:comment "A formal parameter"@en ;
  rdfs:subClassOf woc:Variable .

woc:hasDeclaration a rdf:Property ;
  rdfs:label "has declaration"@en ;
  rdfs:comment "The hasDeclaration property relates a variable to the statement it was declared by."@en ;
  rdfs:domain woc:Variable ;
  rdfs:range woc:VariableDeclarationStatement , woc:ClassDeclarationStatement , woc:FieldDeclarationStatement .

woc:isReturnedBy a rdf:Property ;
  rdfs:label "is returned by"@en ;
  rdfs:comment "The isReturnedBy property relates a variable to the methods that return that variable."@en ;
  rdfs:domain woc:Variable ;
  rdfs:range woc:Method .

woc:hasType a rdf:Property ;
  rdfs:label "has type"@en ;
  rdfs:comment "The hasType property relates an expression, a variable or a method to its type."@en ;
  rdfs:range woc:Type .

woc:isParameterOf a rdf:Property ;
  rdfs:label "is parameter of"@en ;
  rdfs:comment "The isParameterOf property relates a parameter to the corresponding executable."@en ;
  rdfs:domain woc:Parameter ;
  rdfs:range woc:Executable .

woc:Interface a rdfs:Class ;
  rdfs:label "Interface"@en ;
  rdfs:comment "An interface"@en ;
  rdfs:subClassOf woc:ComplexType .

woc:isReturnTypeOf a rdf:Property ;
  rdfs:label "is return type of"@en ;
  rdfs:comment "The isReturnTypeOf property relates a type to the methods that return objects of that type."@en ;
  rdfs:domain woc:Type ;
  rdfs:range woc:Method ;
  rdfs:subPropertyOf woc:isTypeOf .

woc:hasModifier a rdf:Property ;
  rdfs:label "has modifier"@en ;
  rdfs:comment "The hasGenericType property relates a modifiable element to its modifiers"@en ;
  rdfs:domain woc:Modifiable ;
  rdfs:range woc:Modifier .

woc:hasMethod a rdf:Property ;
  rdfs:label "has method"@en ;
  rdfs:comment "The ihasMehtod property relates a class to its methods."@en ;
  rdfs:domain woc:ComplexType ;
  rdfs:range woc:Method ;
  rdfs:subPropertyOf woc:declares .

woc:hasSubClass a rdf:Property ;
  rdfs:label "has subclass"@en ;
  rdfs:comment "The hasSubClass property relates a class to its direct sub-classes"@en ;
  rdfs:range <https://w3id.org/linkml/Any> ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#generalizes> .

woc:hasFormalTypeParameter a rdf:Property ;
  rdfs:label "has formal type parameter"@en ;
  rdfs:comment "The hasFormalTypeParameter property relates a class, an interface, an enumeration, a constructor or a method to the formal type parameters it declares"@en ;
  rdfs:range woc:TypeVariable .

woc:hasSimpleName a rdf:Property ;
  rdfs:label "has simple name"@en ;
  rdfs:comment "Links a class, enum or interface to its simple name. For instance, the simple name of the class java.lang.String is \"String\""@en ;
  rdfs:domain woc:ComplexType ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf woc:hasName .

woc:extends a rdf:Property ;
  rdfs:label "extends"@en ;
  rdfs:comment "The extends property relates a class, an interface, a type variable or a wildacard to the types it extends."@en ;
  rdfs:range woc:Interface , woc:Class , <https://w3id.org/linkml/Any> ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#specializes> .

woc:isImplementedBy a rdf:Property ;
  rdfs:label "is implemented by"@en ;
  rdfs:comment "The isImplementedBy property relates an interface to the classes implementig that interface"@en ;
  rdfs:domain woc:Interface ;
  rdfs:range woc:Class ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#generalizes> .

woc:isTypeOf a rdf:Property ;
  rdfs:label "is type of"@en ;
  rdfs:comment "The isTypeOf property relates a type to the elements of that type."@en ;
  rdfs:domain woc:Type ;
  rdfs:range xsd:string .

woc:hasField a rdf:Property ;
  rdfs:label "has field"@en ;
  rdfs:comment "The hasField property relates a class to its fields"@en ;
  rdfs:domain woc:ComplexType ;
  rdfs:range woc:Field ;
  rdfs:subPropertyOf woc:declares .

woc:hasCanonicalName a rdf:Property ;
  rdfs:label "has canonical name"@en ;
  rdfs:comment "Links a class, enum or interface to its canonical name. For instance, the class Java.lang.String is linked to the string \"java.lang.string\""@en ;
  rdfs:domain woc:ComplexType ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf woc:hasName .

woc:hasPackage a rdf:Property ;
  rdfs:label "has package"@en ;
  rdfs:comment "The hasPackage property relates a class, interface, enum or annotation to the package it is declared by."@en ;
  rdfs:domain woc:CodeElement ;
  rdfs:range woc:Package ;
  rdfs:subPropertyOf woc:isDeclaredBy .

woc:Variable a rdfs:Class ;
  rdfs:label "Variable"@en ;
  rdfs:comment "A variable"@en ;
  rdfs:subClassOf woc:CodeElement .

woc:LocalVariable a rdfs:Class ;
  rdfs:label "Local Variable"@en ;
  rdfs:comment "A local variable"@en ;
  rdfs:subClassOf woc:Variable .

woc:ReturnStatement a rdfs:Class ;
  rdfs:label "Return Statement"@en ;
  rdfs:comment "A return statement"@en ;
  rdfs:subClassOf woc:BranchingStatement .

woc:hasReturnedExpression a rdf:Property ;
  rdfs:label "has returned expression"@en ;
  rdfs:comment "The hasReturnedExpression property relates a return statement to the returned expression"@en ;
  rdfs:domain woc:ReturnStatement ;
  rdfs:range woc:Expression ;
  rdfs:subPropertyOf woc:hasSubExpression .

woc:Method a rdfs:Class ;
  rdfs:label "Method"@en ;
  rdfs:comment "A Method"@en ;
  rdfs:subClassOf woc:Executable .

woc:hasBody a rdf:Property ;
  rdfs:label "has body"@en ;
  rdfs:comment "The hasBody property relates an executable or a statement to its body."@en ;
  rdfs:range woc:BlockStatement ;
  rdfs:subPropertyOf woc:hasSubStatement .

woc:throws a rdf:Property ;
  rdfs:label "throws"@en ;
  rdfs:comment "The throws property relates a method or a constructor to the exceptions it declares to throw."@en ;
  rdfs:domain woc:Executable ;
  rdfs:range woc:Class ;
  rdfs:subPropertyOf woc:references .

woc:isVarArgs a rdf:Property ;
  rdfs:label "is var args"@en ;
  rdfs:comment "True if an executable accepts a variable number of parameters, false otherwise"@en ;
  rdfs:domain woc:Executable ;
  rdfs:range xsd:boolean .

woc:overrides a rdf:Property ;
  rdfs:label "overrides"@en ;
  rdfs:comment "The overrides property relates a method to the method it overrides."@en ;
  rdfs:domain woc:Method ;
  rdfs:range woc:Method ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#specializes> .

woc:returns a rdf:Property ;
  rdfs:label "returns"@en ;
  rdfs:comment "The returns property relates a method to the variable it returns, if any."@en ;
  rdfs:domain woc:Method ;
  rdfs:range woc:Variable .

woc:isMethodOf a rdf:Property ;
  rdfs:label "is method of"@en ;
  rdfs:comment "The isMethodOf property relates a method to the class, enum or interface it is declared by."@en ;
  rdfs:domain woc:Method ;
  rdfs:range woc:ComplexType ;
  rdfs:subPropertyOf woc:isDeclaredBy .

woc:constructs a rdf:Property ;
  rdfs:label "constructs"@en ;
  rdfs:comment "The constructs property relates an executable to the classes it constructs."@en ;
  rdfs:domain woc:Executable ;
  rdfs:range woc:Class ;
  rdfs:subPropertyOf woc:references .

woc:hasReturnType a rdf:Property ;
  rdfs:label "has return type"@en ;
  rdfs:comment "The hasReturnType property relates a method to its return type."@en ;
  rdfs:domain woc:Method ;
  rdfs:range woc:Type ;
  rdfs:subPropertyOf woc:hasType .

woc:hasParameter a rdf:Property ;
  rdfs:label "has parameter"@en ;
  rdfs:comment "The hasParameter property relates a constructor or a method to the formal parameters it declares"@en ;
  rdfs:domain woc:Executable ;
  rdfs:range woc:Parameter .

woc:hasReturnDescription a rdf:Property ;
  rdfs:label "has return description"@en ;
  rdfs:comment "the hasReturnDescriptionProperty relates a method to a description of its return value"@en ;
  rdfs:domain woc:Method ;
  rdfs:range xsd:string .

woc:isOverriddenBy a rdf:Property ;
  rdfs:label "is overridden by"@en ;
  rdfs:comment "The isOverridenBy property relates a method to the ones it is overridden by."@en ;
  rdfs:domain woc:Method ;
  rdfs:range woc:Method ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#generalizes> .

woc:ThrowStatement a rdfs:Class ;
  rdfs:label "Throw Statement"@en ;
  rdfs:comment "A throw statement, that is a statement that causes an exception to be thrown"@en ;
  rdfs:subClassOf woc:Statement .

woc:hasThrownExpression a rdf:Property ;
  rdfs:label "has thrown expression"@en ;
  rdfs:comment "The hasThrownExpression property relates a thrown statement to the expression it throws"@en ;
  rdfs:domain woc:ThrowStatement ;
  rdfs:range woc:Expression ;
  rdfs:subPropertyOf woc:hasSubExpression .

woc:CatchBlock a rdfs:Class ;
  rdfs:label "Catch Block"@en ;
  rdfs:comment "A catch block"@en ;
  rdfs:subClassOf woc:BlockStatement .

woc:isCatchClauseOf a rdf:Property ;
  rdfs:label "is catch clause of"@en ;
  rdfs:comment "The isCatchClauseOf property relates a catch clause to the corresponding try statement."@en ;
  rdfs:domain woc:CatchBlock ;
  rdfs:range woc:TryStatement ;
  rdfs:subPropertyOf woc:isSubStatementOf .

woc:hasCatchFormalParameter a rdf:Property ;
  rdfs:label "has catch formal parameter"@en ;
  rdfs:comment "The hasCatchFormalParameter property relates a catch clause to its formal parameters, namely the throwable objects it caughts"@en ;
  rdfs:domain woc:CatchBlock ;
  rdfs:range woc:Class .

woc:DecisionMakingStatement a rdfs:Class ;
  rdfs:label "Decision Making Statement"@en ;
  rdfs:comment "A Decision Making Statement, that is a statement that break up the flow of execution by employing decision making. It can either be a if-then-else statement or a switch statement."@en ;
  rdfs:subClassOf woc:ControlFlowStatement .

woc:ClassInstanceCreationExpression a rdfs:Class ;
  rdfs:label "Class Instance Creation Expression"@en ;
  rdfs:comment "An expression that creates a class instance, in other words a constructor call"@en ;
  rdfs:subClassOf woc:ExecutableInvocationExpression .

woc:isThrownExpressionOf a rdf:Property ;
  rdfs:label "is thrown expression of"@en ;
  rdfs:comment "The isThrownExpressionOf property relates a thrown expression, to the throw statement it is contained in."@en ;
  rdfs:domain woc:Expression ;
  rdfs:range woc:ThrowStatement ;
  rdfs:subPropertyOf woc:isSubExpressionOf .

woc:isAssertExpressionOf a rdf:Property ;
  rdfs:label "is subexpression of"@en ;
  rdfs:comment "The isAssertExpressionOf property relates a boolean expression to the assert statement it is contained in."@en ;
  rdfs:domain woc:Expression ;
  rdfs:range woc:AssertStatement ;
  rdfs:subPropertyOf woc:isSubExpressionOf .

woc:hasArgument a rdf:Property ;
  rdfs:label "has argument"@en ;
  rdfs:comment "The hasArgument property relates an executable invocation to each of its actual arguments."@en ;
  rdfs:domain woc:ExecutableInvocationExpression ;
  rdfs:range woc:ActualArgument .

woc:isForInitOf a rdf:Property ;
  rdfs:label "is for init of"@en ;
  rdfs:comment "The isForInitOf property relates an expression executed as initialization code of a basic for statement to the relative for statement."@en ;
  rdfs:domain woc:Expression ;
  rdfs:range woc:ForStatement ;
  rdfs:subPropertyOf woc:isSubExpressionOf .

woc:isSubExpressionOf a rdf:Property ;
  rdfs:label "is subexpression of"@en ;
  rdfs:comment "The isSubExpressionOf property relates an expression to its parent expression."@en ;
  rdfs:domain woc:Expression ;
  rdfs:range <https://w3id.org/linkml/Any> ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#isPartOf> .

woc:isConditionOf a rdf:Property ;
  rdfs:label "is condition of"@en ;
  rdfs:comment "The isConditionOf property relates a if-then-else statement or a loop to its condition."@en ;
  rdfs:domain woc:Expression ;
  rdfs:range <https://w3id.org/linkml/Any> ;
  rdfs:subPropertyOf woc:isSubExpressionOf .

woc:isInitializerOf a rdf:Property ;
  rdfs:label "is initializer of"@en ;
  rdfs:comment "The isInitializerOf property relates an expression used to initialize a variable, to the statement it is contained in."@en ;
  rdfs:domain woc:Expression ;
  rdfs:range woc:VariableDeclarationStatement ;
  rdfs:subPropertyOf woc:isSubExpressionOf .

woc:invokes a rdf:Property ;
  rdfs:label "invokes"@en ;
  rdfs:comment "The invokes property relates a invocation expression to the invoked executable."@en ;
  rdfs:domain woc:ExecutableInvocationExpression ;
  rdfs:range woc:Executable .

woc:isForUpdateOf a rdf:Property ;
  rdfs:label "is for update of"@en ;
  rdfs:comment "The isForUpdateOf property relates an expression evaluated as update code of a for statement at the end of every iteration, to the corresponding for statement."@en ;
  rdfs:domain woc:Expression ;
  rdfs:range woc:ForStatement ;
  rdfs:subPropertyOf woc:isSubExpressionOf .

woc:isReturnedExpressionOf a rdf:Property ;
  rdfs:label "is returned expression of"@en ;
  rdfs:comment "The isReturnedExpressionOf property relates an expression returned by a method to the return statement it is contained in."@en ;
  rdfs:domain woc:Expression ;
  rdfs:range woc:ReturnStatement ;
  rdfs:subPropertyOf woc:isSubExpressionOf .

woc:isLeftHandSideOf a rdf:Property ;
  rdfs:label "is left hand side of"@en ;
  rdfs:comment "The isLeftHandSideOf property relates an expression that is used as left hand side expression of an assignemnt, to the corresponding assignment expression"@en ;
  rdfs:domain woc:Expression ;
  rdfs:range woc:AssignmentExpression ;
  rdfs:subPropertyOf woc:isSubExpressionOf .

woc:isTargetOf a rdf:Property ;
  rdfs:label "is target of"@en ;
  rdfs:comment "The isTargetOf property relates an expression used as target of a method invocation, to the corresponding method invocation."@en ;
  rdfs:domain woc:Expression ;
  rdfs:range woc:MethodInvocationExpression ;
  rdfs:subPropertyOf woc:isSubExpressionOf .

woc:DeclarationStatement a rdfs:Class ;
  rdfs:label "Declaration statement"@en ;
  rdfs:comment "A statement that holds a declaration"@en ;
  rdfs:subClassOf woc:Statement .

woc:ControlFlowStatement a rdfs:Class ;
  rdfs:label "Control Flow Statement"@en ;
  rdfs:comment """A control flow statement, that is a statement that regulates the order in which statements are executed.
Control Flow Statements break up the flow of execution by employing decision making, looping, or branching."""@en ;
  rdfs:subClassOf woc:Statement .

woc:ComplexType a rdfs:Class ;
  rdfs:label "Complex Type"@en ;
  rdfs:comment "A class or an enumeration or an interface"@en ;
  rdfs:subClassOf woc:Modifiable , woc:Type .

woc:Constructor a rdfs:Class ;
  rdfs:label "Constructor"@en ;
  rdfs:comment "A constructor of a Class"@en ;
  rdfs:subClassOf woc:Executable .

woc:isConstructorOf a rdf:Property ;
  rdfs:label "is constructor of"@en ;
  rdfs:comment "The isConstructorOf property relates a constructor to the class it is declared by."@en ;
  rdfs:domain woc:Constructor ;
  rdfs:range woc:CodeElement ;
  rdfs:subPropertyOf woc:isDeclaredBy .

woc:Enum a rdfs:Class ;
  rdfs:label "Enum"@en ;
  rdfs:comment "An enumeration"@en ;
  rdfs:subClassOf woc:ComplexType .

woc:hasConstructor a rdf:Property ;
  rdfs:label "has constructor"@en ;
  rdfs:comment "The hasConstructor property relates a class to its constructors."@en ;
  rdfs:domain woc:CodeElement ;
  rdfs:range woc:Constructor ;
  rdfs:subPropertyOf woc:declares .

woc:BlockStatement a rdfs:Class ;
  rdfs:label "Block Statement"@en ;
  rdfs:comment "A block"@en ;
  rdfs:subClassOf woc:Statement .

woc:IfThenElseStatement a rdfs:Class ;
  rdfs:label "If-then-else statement"@en ;
  rdfs:comment "A If-then-else statement"@en ;
  rdfs:subClassOf woc:DecisionMakingStatement .

woc:hasElseBranch a rdf:Property ;
  rdfs:label "has else branch"@en ;
  rdfs:comment "The hasElseBranch property relates a if-then-else statement to the statement in the else branch."@en ;
  rdfs:domain woc:IfThenElseStatement ;
  rdfs:range woc:Statement ;
  rdfs:subPropertyOf woc:hasSubStatement .

woc:hasCondition a rdf:Property ;
  rdfs:label "has condition"@en ;
  rdfs:comment "The hasCondition property specifies a condition for a statement to be executed."@en ;
  rdfs:range woc:Expression ;
  rdfs:subPropertyOf woc:hasSubExpression .

woc:hasThenBranch a rdf:Property ;
  rdfs:label "has then branch"@en ;
  rdfs:comment "The hasThenBranch property relates a if-then-else statement to the statement declared in the \"then\" branch"@en ;
  rdfs:domain woc:IfThenElseStatement ;
  rdfs:range woc:Statement ;
  rdfs:subPropertyOf woc:hasSubStatement .

woc:AnonymousClass a rdfs:Class ;
  rdfs:label "Anonymous Class"@en ;
  rdfs:comment "An anonymous class"@en ;
  rdfs:subClassOf woc:Class .

woc:isConstructedBy a rdf:Property ;
  rdfs:label "is constructed by"@en ;
  rdfs:comment "The isConstructedBy property relates a class to the executables that instantiates objects of that class."@en ;
  rdfs:domain woc:Class ;
  rdfs:range woc:Executable ;
  rdfs:subPropertyOf woc:isReferencedBy .

woc:implements a rdf:Property ;
  rdfs:label "implements"@en ;
  rdfs:comment "The implements property relates a class to each implemented interface."@en ;
  rdfs:domain woc:Class ;
  rdfs:range woc:Interface ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#specializes> .

woc:isThrownBy a rdf:Property ;
  rdfs:label "is thrown by"@en ;
  rdfs:comment "The isThrownBy property relates an exception to the executables it is thrown by."@en ;
  rdfs:domain woc:Class ;
  rdfs:range woc:Executable ;
  rdfs:subPropertyOf woc:isReferencedBy .

woc:GradleProject a rdfs:Class ;
  rdfs:label "Gradle Project"@en ;
  rdfs:comment "A gradle project"@en ;
  rdfs:subClassOf woc:Project .

woc:hasSubProject a rdf:Property ;
  rdfs:label "has subproject"@en ;
  rdfs:comment "The hasSubProject property relates a project to its subprojects"@en ;
  rdfs:domain woc:Project ;
  rdfs:range woc:Project ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#hasPart> .

woc:isProjectOf a rdf:Property ;
  rdfs:label "is project of"@en ;
  rdfs:comment "The isProjectOf property relates a project to the packages it contains."@en ;
  rdfs:domain woc:Project ;
  rdfs:range woc:Package ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#hasPart> .

woc:hasBuildFile a rdf:Property ;
  rdfs:label "build file"@en ;
  rdfs:comment "Links a project to the content of its build file."@en ;
  rdfs:domain woc:Project ;
  rdfs:range xsd:string .

woc:hasDependency a rdf:Property ;
  rdfs:label "has dependency"@en ;
  rdfs:comment "The hasDependency property relates a project to its dependencies."@en ;
  rdfs:domain woc:Project ;
  rdfs:range woc:Library .

woc:isSubProjectOf a rdf:Property ;
  rdfs:label "is subproject of"@en ;
  rdfs:comment "The isSubProjectOf property relates a project to its parent project."@en ;
  rdfs:domain woc:Project ;
  rdfs:range woc:Project ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#isPartOf> .

woc:ExecutableInvocationExpression a rdfs:Class ;
  rdfs:label "Executable invocation expression"@en ;
  rdfs:comment "An invocation of either a method or a constructor."@en ;
  rdfs:subClassOf woc:Expression .

woc:ContinueStatement a rdfs:Class ;
  rdfs:label "Continue Statement"@en ;
  rdfs:comment "A continue statement"@en ;
  rdfs:subClassOf woc:BranchingStatement .

woc:hasTargetedLabel a rdf:Property ;
  rdfs:label "targeted label"@en ;
  rdfs:comment "Links a break statement or a continue statement to the label it targets, if any"@en ;
  rdfs:range xsd:string .

woc:AssertStatement a rdfs:Class ;
  rdfs:label "Assert Statement"@en ;
  rdfs:comment "An assert statement"@en ;
  rdfs:subClassOf woc:Statement .

woc:hasAssertExpression a rdf:Property ;
  rdfs:label "has assert expression"@en ;
  rdfs:comment "The hasAssertExpression property relates an assert statement to the boolean expression asserted to be true"@en ;
  rdfs:domain woc:AssertStatement ;
  rdfs:range woc:Expression ;
  rdfs:subPropertyOf woc:hasSubExpression .

woc:FinallyBlock a rdfs:Class ;
  rdfs:label "Finally Block"@en ;
  rdfs:comment "A finally block"@en ;
  rdfs:subClassOf woc:BlockStatement .

woc:isFinallyClauseOf a rdf:Property ;
  rdfs:label "is finally clause of"@en ;
  rdfs:comment "The isFinallyClauseOf property relates the statement enclosed in a finally clause to the corresponding try statement."@en ;
  rdfs:domain woc:FinallyBlock ;
  rdfs:range woc:TryStatement ;
  rdfs:subPropertyOf woc:isSubStatementOf .

woc:DefaultLabeledBlock a rdfs:Class ;
  rdfs:label "Default Labeled Block"@en ;
  rdfs:comment "A default-labeled block"@en ;
  rdfs:subClassOf woc:LabeledBlock .

woc:Expression a rdfs:Class ;
  rdfs:label "Expression"@en ;
  rdfs:comment "A generic expression"@en ;
  rdfs:subClassOf woc:CodeElement .

woc:Modifier a rdfs:Class ;
  rdfs:label "Modifier"@en ;
  rdfs:comment "A modifier"@en ;
  rdfs:subClassOf woc:CodeElement .

woc:isModifierOf a rdf:Property ;
  rdfs:label "is modifier of"@en ;
  rdfs:comment "The isModifierOf property relates a modifier to the corresponding modifiable element."@en ;
  rdfs:domain woc:Modifier ;
  rdfs:range woc:Modifiable .

woc:AssignmentExpression a rdfs:Class ;
  rdfs:label "Assignment Expression"@en ;
  rdfs:comment """An assignment expression. It involves one of the following operators:
=, *=, /=, %=, +=, -=, <<=, >>=, >>>=, &=, ^=, |="""@en ;
  rdfs:subClassOf woc:Expression .

woc:hasLeftHandSide a rdf:Property ;
  rdfs:label "has left hand side"@en ;
  rdfs:comment "The hasLeftHandSide property relates a assignement expression to the left hand side expression it contains"@en ;
  rdfs:domain woc:AssignmentExpression ;
  rdfs:range woc:Expression ;
  rdfs:subPropertyOf woc:hasSubExpression .

woc:ArrayType a rdfs:Class ;
  rdfs:label "Array Type"@en ;
  rdfs:comment "An array type"@en ;
  rdfs:subClassOf woc:Type .

woc:hasDimensions a rdf:Property ;
  rdfs:label "dimensions"@en ;
  rdfs:comment "Links an array to the number of its dimensions. As an example, an array of type \"int[][][]\" has a dimensions count of 3"@en ;
  rdfs:domain woc:ArrayType ;
  rdfs:range xsd:int .

woc:isArrayOf a rdf:Property ;
  rdfs:label "is array of"@en ;
  rdfs:comment "The isArrayOf property relates an arrray to the type of its elements at the finest grain. For instance, an array of type \"int[][][]\" is linked to the type \"int\". The number of dimensions of the array is specified by the dimensions property."@en ;
  rdfs:domain woc:ArrayType ;
  rdfs:range woc:Type .

woc:Library a rdfs:Class ;
  rdfs:label "Library"@en ;
  rdfs:comment "A library"@en .

woc:isDependencyOf a rdf:Property ;
  rdfs:label "is dependency of"@en ;
  rdfs:comment "The isDependencyOf property relates a library to the projects that depend on this library."@en ;
  rdfs:domain woc:Library ;
  rdfs:range woc:Project .

woc:TypeVariable a rdfs:Class ;
  rdfs:label "Type Variable"@en ;
  rdfs:comment "A type variable is an unqualified identifier used as a type. It is introduced by the declaration of a generic class, interface, method, or constructor"@en ;
  rdfs:subClassOf woc:Type .

woc:LabeledBlock a rdfs:Class ;
  rdfs:label "Labeled Block"@en ;
  rdfs:comment "A labeled block of code, namely a case-labeled block or a default-labeled block"@en ;
  rdfs:subClassOf woc:BlockStatement .

woc:ClassDeclarationStatement a rdfs:Class ;
  rdfs:label "Class Declaration Statement"@en ;
  rdfs:comment "A statement that corresponds to the declaration of a local class"@en ;
  rdfs:subClassOf woc:DeclarationStatement .

woc:MethodInvocationExpression a rdfs:Class ;
  rdfs:label "Method Invocation Expression"@en ;
  rdfs:comment "A method call"@en ;
  rdfs:subClassOf woc:ExecutableInvocationExpression .

woc:hasTarget a rdf:Property ;
  rdfs:label "has target"@en ;
  rdfs:comment "The hasTarget property relates a method invocation expression to its target."@en ;
  rdfs:domain woc:MethodInvocationExpression ;
  rdfs:range woc:Expression ;
  rdfs:subPropertyOf woc:hasSubExpression .

woc:WhileStatement a rdfs:Class ;
  rdfs:label "While Statement"@en ;
  rdfs:comment "A while statement"@en ;
  rdfs:subClassOf woc:LoopStatement .

woc:TypeArgument a rdfs:Class ;
  rdfs:label "Type Argument"@en ;
  rdfs:comment "This class defines the actual type argument of a parameterized type"@en ;
  rdfs:subClassOf woc:CodeElement .

woc:Statement a rdfs:Class ;
  rdfs:label "Statement"@en ;
  rdfs:comment "A generic statement"@en ;
  rdfs:subClassOf woc:CodeElement .

woc:Wildcard a rdfs:Class ;
  rdfs:label "Wildcard"@en ;
  rdfs:comment "A wildcard"@en ;
  rdfs:subClassOf woc:Type .

woc:hasSuperBound a rdf:Property ;
  rdfs:label "has super bound"@en ;
  rdfs:comment "The hasSuperBound property relates a lower bounded wildcard to its bouds."@en ;
  rdfs:domain woc:Wildcard ;
  rdfs:range woc:Type ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#generalizes> .

woc:Field a rdfs:Class ;
  rdfs:label "Field"@en ;
  rdfs:comment "A class field"@en ;
  rdfs:subClassOf woc:Modifiable , woc:Variable .

woc:isFieldOf a rdf:Property ;
  rdfs:label "is field of"@en ;
  rdfs:comment "The isFieldOf property relates a field to the class, interface or enum it is declared by."@en ;
  rdfs:domain woc:Field ;
  rdfs:range woc:ComplexType ;
  rdfs:subPropertyOf woc:isDeclaredBy .

woc:Package a rdfs:Class ;
  rdfs:label "Package"@en ;
  rdfs:comment "A Package"@en ;
  rdfs:subClassOf woc:CodeElement .

woc:hasProject a rdf:Property ;
  rdfs:label "has project"@en ;
  rdfs:comment "The hasProject property relates a package to the project it belongs to."@en ;
  rdfs:domain woc:Package ;
  rdfs:range woc:Project ;
  rdfs:subPropertyOf <http://rdf-vocabulary.ddialliance.org/xkos#isPartOf> .

woc:isPackageOf a rdf:Property ;
  rdfs:label "is package of"@en ;
  rdfs:comment "The isPackageOf property relates a package to the types it declares."@en ;
  rdfs:domain woc:Package ;
  rdfs:range woc:CodeElement ;
  rdfs:subPropertyOf woc:declares .

woc:Executable a rdfs:Class ;
  rdfs:label "Executable"@en ;
  rdfs:comment "An executable block of code, namely a Method or a Constructor"@en ;
  rdfs:subClassOf woc:CodeElement , woc:Modifiable .

woc:Project a rdfs:Class ;
  rdfs:label "Project"@en ;
  rdfs:comment "A project"@en .

woc:MavenProject a rdfs:Class ;
  rdfs:label "Maven Project"@en ;
  rdfs:comment "A maven project"@en ;
  rdfs:subClassOf woc:Project .

woc:ParameterizedType a rdfs:Class ;
  rdfs:label "Parameterized Type"@en ;
  rdfs:comment "A parameterized type is a particular parameterization of a generic type denoted by a specified list of type arguments"@en ;
  rdfs:subClassOf woc:Type .

woc:hasActualTypeArgument a rdf:Property ;
  rdfs:label "has actual type argument"@en ;
  rdfs:comment "The hasActualTypeArgument property relates a parameterized type to each of its actual type arguments"@en ;
  rdfs:domain woc:ParameterizedType ;
  rdfs:range woc:TypeArgument .

woc:hasGenericType a rdf:Property ;
  rdfs:label "has generic type"@en ;
  rdfs:comment "The hasGenericType property relates a parameterized type to the generic type it is a parameterization of"@en ;
  rdfs:domain woc:ParameterizedType ;
  rdfs:range xsd:string .

woc:BranchingStatement a rdfs:Class ;
  rdfs:label "Branching Statement"@en ;
  rdfs:comment "A branching statement, namely a break statement, a continue statement or a return statement"@en ;
  rdfs:subClassOf woc:ControlFlowStatement .

woc:LoopStatement a rdfs:Class ;
  rdfs:label "Loop Statement"@en ;
  rdfs:comment "A loop statement."@en ;
  rdfs:subClassOf woc:ControlFlowStatement .

woc:ForEachStatement a rdfs:Class ;
  rdfs:label "ForEach Statement"@en ;
  rdfs:comment "A for-each statement, also known as enhanced for statement"@en ;
  rdfs:subClassOf woc:LoopStatement .

woc:hasVariable a rdf:Property ;
  rdfs:label "has variable"@en ;
  rdfs:comment "The hasVariable property relates a for-each statement to the local variable it declares."@en ;
  rdfs:domain woc:ForEachStatement ;
  rdfs:range woc:LocalVariable .

woc:TryStatement a rdfs:Class ;
  rdfs:label "Try Statement"@en ;
  rdfs:comment "A try statement"@en ;
  rdfs:subClassOf woc:Statement .

woc:hasCatchClause a rdf:Property ;
  rdfs:label "has catch clause"@en ;
  rdfs:comment "The hasCatchClause property relates a try statement to the relative catch clauses."@en ;
  rdfs:domain woc:TryStatement ;
  rdfs:range woc:CatchBlock ;
  rdfs:subPropertyOf woc:hasSubStatement .

woc:hasFinallyClause a rdf:Property ;
  rdfs:label "has finally clause"@en ;
  rdfs:comment "The hasFinallyClause property relates a try statemet to its finally clause."@en ;
  rdfs:domain woc:TryStatement ;
  rdfs:range woc:FinallyBlock ;
  rdfs:subPropertyOf woc:hasSubStatement .

woc:hasResource a rdf:Property ;
  rdfs:label "has resource"@en ;
  rdfs:comment "The hasResource property relates a try statement to each local variable declared to act as resource for the try statement"@en ;
  rdfs:domain woc:TryStatement ;
  rdfs:range woc:LocalVariable .

woc:ForStatement a rdfs:Class ;
  rdfs:label "For Statement"@en ;
  rdfs:comment "A for statement"@en ;
  rdfs:subClassOf woc:LoopStatement .

woc:hasForUpdate a rdf:Property ;
  rdfs:label "has for update"@en ;
  rdfs:comment "The hasForUpdate property relates a basic for statement to each expression evaluated as update code at the end of every iteration"@en ;
  rdfs:domain woc:ForStatement ;
  rdfs:range woc:Expression ;
  rdfs:subPropertyOf woc:hasSubExpression .

woc:hasForInit a rdf:Property ;
  rdfs:label "has for init"@en ;
  rdfs:comment "The hasForInit property relates a basic for statement to each statement expression executed as initialization code, before the first iteration step is performed"@en ;
  rdfs:domain woc:ForStatement ;
  rdfs:range woc:Expression ;
  rdfs:subPropertyOf woc:hasSubExpression .

woc:SynchronizedStatement a rdfs:Class ;
  rdfs:label "Synchronized Statement"@en ;
  rdfs:comment """A synchronized statement, that is a statement that acquires a mutual-exclusion lock on behalf of the executiing-thread, executes a block, then release the lock.
In java it is of the form:
synchronized <Expression> <Block>"""@en ;
  rdfs:subClassOf woc:Statement .

woc:Class a rdfs:Class ;
  rdfs:label "Class"@en ;
  rdfs:comment "A class"@en ;
  rdfs:subClassOf woc:ComplexType .

woc:FieldDeclarationStatement a rdfs:Class ;
  rdfs:label "Field Declaration"@en ;
  rdfs:comment "The declaration of a field"@en ;
  rdfs:subClassOf woc:VariableDeclarationStatement .

woc:AnnotationType a rdfs:Class ;
  rdfs:label "Annotation"@en ;
  rdfs:comment "An annotation"@en ;
  rdfs:subClassOf woc:Type .

woc:isAnnotationOf a rdf:Property ;
  rdfs:label "is annotation of"@en ;
  rdfs:comment "The isAnnotationOf property relates an annotation to the annotated code element."@en ;
  rdfs:domain woc:AnnotationType ;
  rdfs:range woc:CodeElement .

woc:BreakStatement a rdfs:Class ;
  rdfs:label "Break Statement"@en ;
  rdfs:comment "The BreakStatement class represents a break statement. The break statement has two forms: labeled and unlabeled. In case a break statement is labeled, the label is defined through the targetedLabel property"@en ;
  rdfs:subClassOf woc:BranchingStatement .

<https://w3id.org/linkml/Any> a rdfs:Class ;
  rdfs:comment "An unconstrained type or object"@en .

woc:CodeElement a rdfs:Class ;
  rdfs:label "Code Element"@en ;
  rdfs:comment "A generic element in source code"@en .

woc:SwitchStatement a rdfs:Class ;
  rdfs:label "Switch Statement"@en ;
  rdfs:comment "A switch statement"@en ;
  rdfs:subClassOf woc:DecisionMakingStatement .

woc:hasSwitchLabel a rdf:Property ;
  rdfs:label "has switch label"@en ;
  rdfs:comment "The hasSwitchLabel property relates a switch statement to its cases."@en ;
  rdfs:domain woc:SwitchStatement ;
  rdfs:range woc:LabeledBlock ;
  rdfs:subPropertyOf woc:hasSubStatement .

woc:DoStatement a rdfs:Class ;
  rdfs:label "Do Statement"@en ;
  rdfs:comment "A do-while statement"@en ;
  rdfs:subClassOf woc:LoopStatement .

woc:Modifiable a rdfs:Class ;
  rdfs:label "Modifiable"@en ;
  rdfs:comment "An element that can have a modifier"@en ;
  rdfs:subClassOf woc:CodeElement .

woc:ActualArgument a rdfs:Class ;
  rdfs:label "Actual Argument"@en ;
  rdfs:comment "The actual argument of a method"@en ;
  rdfs:subClassOf woc:Expression .

woc:ExpressionStatement a rdfs:Class ;
  rdfs:label "Expression statement"@en ;
  rdfs:comment "An expression statement. that is a statement that wraps an expression"@en ;
  rdfs:subClassOf woc:Statement .

woc:Type a rdfs:Class ;
  rdfs:label "Type"@en ;
  rdfs:comment "A type"@en ;
  rdfs:subClassOf woc:CodeElement .

woc:VariableDeclarationStatement a rdfs:Class ;
  rdfs:label "Variable Declaration"@en ;
  rdfs:comment "A statement that represents the declaration of a variable"@en ;
  rdfs:subClassOf woc:DeclarationStatement .

<http://rdf-vocabulary.ddialliance.org/xkos#generalizes> a rdf:Property ;
  rdfs:range <https://w3id.org/linkml/Any> .

<http://rdf-vocabulary.ddialliance.org/xkos#hasPart> a rdf:Property ;
  rdfs:range <https://w3id.org/linkml/Any> .

<http://rdf-vocabulary.ddialliance.org/xkos#isPartOf> a rdf:Property ;
  rdfs:range <https://w3id.org/linkml/Any> .

<http://rdf-vocabulary.ddialliance.org/xkos#next> a rdf:Property ;
  rdfs:range <https://w3id.org/linkml/Any> .

<http://rdf-vocabulary.ddialliance.org/xkos#previous> a rdf:Property ;
  rdfs:range <https://w3id.org/linkml/Any> .

<http://rdf-vocabulary.ddialliance.org/xkos#specializes> a rdf:Property ;
  rdfs:range <https://w3id.org/linkml/Any> .

woc:AccessModifier a rdfs:Class ;
  rdfs:label "Access Modifier"@en ;
  rdfs:comment "An access modifier"@en ;
  rdfs:subClassOf woc:Modifier .

woc:Private a woc:AccessModifier ;
  rdfs:label "Private"@en ;
  rdfs:comment "The private modifier"@en .

woc:Public a woc:AccessModifier ;
  rdfs:label "Public"@en ;
  rdfs:comment "The public modifier"@en .

woc:Protected a woc:AccessModifier ;
  rdfs:label "Protected"@en ;
  rdfs:comment "The protected modifier"@en .

woc:Default a woc:AccessModifier ;
  rdfs:label "Default"@en ;
  rdfs:comment "The default modifier"@en .

woc:PrimitiveType a rdfs:Class ;
  rdfs:label "Primitive Type"@en ;
  rdfs:comment "A primitive type"@en ;
  rdfs:subClassOf woc:Type .

woc:Float a woc:PrimitiveType ;
  rdfs:label "Float"@en ;
  rdfs:comment "The float type"@en .

woc:Short a woc:PrimitiveType ;
  rdfs:label "Short"@en ;
  rdfs:comment "The short type"@en .

woc:Int a woc:PrimitiveType ;
  rdfs:label "Integer"@en ;
  rdfs:comment "The int type"@en .

woc:Boolean a woc:PrimitiveType ;
  rdfs:label "Boolean"@en ;
  rdfs:comment "The boolean type"@en .

woc:Double a woc:PrimitiveType ;
  rdfs:label "Double"@en ;
  rdfs:comment "The double type"@en .

woc:Byte a woc:PrimitiveType ;
  rdfs:label "Byte"@en ;
  rdfs:comment "The byte type"@en .

woc:Char a woc:PrimitiveType ;
  rdfs:label "Character"@en ;
  rdfs:comment "The char type"@en .

woc:Long a woc:PrimitiveType ;
  rdfs:label "Long"@en ;
  rdfs:comment "The long type"@en .
