vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/code#> as code {
	extends <http://ua.be/sdo2l/vocabulary/formalisms/text#> as text


    concept CodeData :> text:TextData
    concept CodeLanguage

    enumerated scalar CodeLanguageOption [
        "C",
        "C++",
        "Python",
        "MATLAB"
    ]

    scalar property hasCodeLanguageOption [
        domain CodeLanguage
        range CodeLanguageOption
    ]

    relation entity UsesCodeLanguage [
        from CodeData
        to CodeLanguage
        forward usesCodeLanguage
    ]

    concept CCodeLanguage :> CodeLanguage [
        restricts scalar property hasCodeLanguageOption to "C"
    ]

    concept CCode :> CodeData [
        restricts all relation usesCodeLanguage to CCodeLanguage
    ]

    concept CppCodeLanguage :> CodeLanguage [
        restricts scalar property hasCodeLanguageOption to "C++"
    ]

    concept CppCode :> CodeData [
        restricts all relation usesCodeLanguage to CppCodeLanguage
    ]

    concept PythonCodeLanguage :> CodeLanguage [
        restricts scalar property hasCodeLanguageOption to "Python"
    ]

    concept PythonCode :> CodeData [
        restricts all relation usesCodeLanguage to PythonCodeLanguage
    ]

    concept MATLABCodeLanguage :> CodeLanguage [
        restricts scalar property hasCodeLanguageOption to "MATLAB"
    ]

    concept MATLABCode :> CodeData [
        restricts all relation usesCodeLanguage to MATLABCodeLanguage
    ]


}
