ontology
ontology copied to clipboard
Individuals without definition
Description of the issue
We have in oeo-model a lot of individuals without definition (sorted by types):
- analytical approach #1147
- boolean variable #1148
- data format and file format #1149
- solver #1150
Type | Individual | Updated | Definition |
---|---|---|---|
methodical focus | econometric | ||
methodical focus | monte carlo | ||
methodical focus | spreadsheet | ||
modus | active | ||
modus | inactive | ||
modus | passive | ||
software framework | c++ | #1869 | |
software framework | fortran | #1869 | |
software framework | gams | #1889 | |
software framework | gnu | ||
software framework | java | #1869 | |
software framework | math prog | ||
software framework | matlab | #1869 | |
software framework | modelica | ||
software framework | ms_excel | ||
software framework | php | #1869 | |
software framework | python | #1869 | |
software framework | r | #1869 | |
software framework | ruby | #1869 | |
software framework | vba | #1869 | |
uncertainty approach | deterministic | ||
uncertainty approach | stochastic |
At least some of them are not unambiguous without a definition. Just three examples:
- Does
csv
only include comma-separated values or doescsv
any character-separated values? - What is the difference between
passive
andinactive
? - Why is
spreadsheet
amethodical focus
and not adata format
or asoftware framework
?
Ideas of solution
If you already have ideas for the solution describe them here
Workflow checklist
- [x] I discussed the issue with someone else than me before working on a solution
- [x] I already read the latest version of the workflow for this repository
- [x] The goal of this ontology is clear to me
I am aware that
- [x] every entry in the ontology should have a definition
- [x] classes should arise from concepts rather than from words
@christian-rli : I assigned you to this issue as most of the individuals are related to software and data.
@christian-rli @Ludee : Do you already have some ideas for this issue?
We haven't gotten into this yet @l-emele . As @Ludee is getting into ontology deveopment now however, I think that this might be a good issue to begin with. I put it on our internal agenda.
@Ludee : I assigned this issue now to you. Do you already have some proposals for definitions of these individuals?
@OpenEnergyPlatform/oeo-domain-expert-energy-modelling @OpenEnergyPlatform/oeo-domain-expert-linked-open-data : Any suggestions for definitions? Maybe at least for some of these individuals? We do not necessarily have to implement all at once...
I think, that some of the individuals have the wrong type. I would describe c++
, fortran
, php
, python
etc not as software framework
[^1] but as programming language
[^2]:
[^1]: A software framework is a Software that is generic and can be adapted to a specific application. [^2]: IAO_0000025: A language in which source code is written that is intended to be executed/run by a software interpreter. Programming languages are ways to write instructions that specify what to do, and sometimes, how to do it. (Not yet imported from IAO into OEO.
I will start collecting good definitions now. Not sure how to proceed with the import from IAO.
Thanks for the help @l-emele.
I rushed in the implementation because I thought individuals
are not the same as classes
.
I added a copy of the definitions in the table above.
Another good option would be separate issues for each type.
Thank you very much for your proposals. They are a great start for discussion. Some comments:
abc is an analytical approach and a system design approach that xyz: These definitions break mono-hierarchy. As we dont't have system design approach
in the OEO, I suggest to shorten these definitions to abc is an analytical approach that xyz. Apart from that, I like the definitions of the analytical approach
individuals, as they also show the relations to other things. However, I am asking myself whether these individuals in fact subclasses. @stap-m @jannahastings , what do you think?
The individuals true
and false
are fine to me.
When thinking about the data formats, I am asking myself whether we have here more like a subclass hierarchy. Also I think, we have to distinguish between a data format
and a file
. And then something like file 'has data format' some 'data format'
and `' csv file' 'has data format' some 'csv file format'. What about introducing the following subclass structure:
-
data format
: A data format is a data descriptor that describes in which format the data is encoded. (As it is currently implemented._-
file format
: A file format is a data format that describes in which format data is encoded in a file.-
text file format
: A text file format is a file format that is structured as a sequence of lines of electronic text.-
delimiter separated file format
: A delimiter separated file format is a text file format that uses delimiter-separated values (also DSV) to store two-dimensional arrays of data by separating the values in each row with specific delimiter characters. -
comma separated file format
: A comma separated file format is a delimiter separated file format that uses comma (,) as delimiter.
-
-
binary file format
: A binary file format is a file format that is not a text format. [^1]-
GAMS data exchange format
: A GAMS data exchange format is a binary file format used by General Algebraic Modeling System (GAMS).
-
-
microsoft excel workbook (xls)
: .tbd -
microsoft excel workbook (xlsx)
: tbd Thefile
classes than can be implemented as equivalent classes, e.g. A character separated value file is a file that has a character separated file format with the axiom:'comma separated value file' 'Equivalent To' some (file and 'has data format' some 'comma separated file format'
. However, for that we need to define or import a generalfile
class. Additionally I suggestcsv file
as alternative term tocomma separated file
andcsv
as alternative term to bothcomma separated file
andcomma separated file format
[^1]: Derived from https://en.wikipedia.org/wiki/Binary_file
-
-
Regarding the solvers: I like the definition of gurobi
: Gurobi is a solver to solve numerical programming tasks. ...
Others need some refinement:
-
coin-or lp
: COIN-OR LP (CLP) is an open-source linear programming solver written in C++. ... What about: COIN-OR LP (CLP) is a solver that is written in C++ and has an open source license. This a) explicitly names the precise classsolver
and b) shows the relation toopen source
. -
ibm ilog cplex optimiser
: IBM ILOG CPLEX opimiser (CPLES) is a ~popular~ solver with an API for several programming languages, and also has a modelling language and works with AIMMS, AMPL, GAMS, MPL, OpenOpt, OPL Development Studio, and TOMLAB. Free for academic use. - Similar changes to the other solvers...
Oops, that is now a very long comment. Maybe it is worth to create a separate issue for
- the data/file (format)s
- the solvers
Hi Lukas, thank you for this detailed comment. I had the same thoughts on the data formats and your suggestion includes and combines everything very nicely. Let's discuss them in separate issues.
I'll remove the release milestone from the meta issue, as the sub-issues are tracked and discussions are still ongoing.
In my view the following are not instances of software framework
but programming languages
- c++
- fortran
- java
- php
- python
- r
- ruby
- vba
To me, it is hard to define, what differentiates each of these programming languages. But maybe it is enough, do specify where these programming languages come from. Also as the individuals are proper nouns or abbreviations I suggest to capitalise the labels. So here are some proposals for definitions:
-
C++
: C++ is a programming languages designed by Bjarne Stroustrup and standardised by ISO/IEC. -
Fortran
: Fortran is a programming language designed by John Backus, developed by IBM and standardised by ISO/IEC. -
Java
: Java is a programming language designed by James Gosling and developed by Oracle. -
PHP:
PHP is a programming language designed by Rasmus Lerdorf. -
Python
: Python is a programming language designed by Guido van Rossum and developed by the Python Software Foundation. -
R
: R is a programming language designed by Ross Ihaka and Robert Gentleman and the R Core Team. -
Ruby
: Ruby is a programming language designed by Yukihiro Matsumoto. -
VBA
: VBA is a programming language based on Visual Basic and developed by Microsoft for use within the Microsoft Office software package.
Matlab is a special case, I think there are two entities to differentiate: A software framework and the programming language the software framework uses; Wikipedia describes it as: MATLAB (an abbreviation of "MATrix LABoratory" is a proprietary programming language and numeric computing environment developed by MathWorks. So I suggest two individuals:
- Rename the existing
matlab
toMatlab software framework
and define it as: The Matlab software framework is a proprietary software framework developed by MathWorks that uses the Matlab programming language. - Add an individual:
Matlab programming language
: The Matlab programming language is a programming language developed by MathWorks for use in the Matlab software framework.
Both individuals could get the alternative label Matlab
. The reason to split Matlab into two is that users of the OEO can then differentiate. Also there is third-party that can use code written in the Matlab programming language, for example GNU Octave. R
might be a similar case, but I do not now enough about that programming language.
Sources: Wikipedia pages of the respective programming languages.
For almost a year, no one reacted and especially no one objected to my proposals above. So I will implement the definitions for the programming languages now.
SWO unfortunately has no nice definitions for their classes, but contails classes for plenty of languages. We should map them, once we introduced the "skos:close to" annotation, see PR #1874
I updated the table in the issue start for the individuals we already updated.
Regarding the remaining:
- class
methodological focus
with individualsmonte carlo
,econometric
andspreadsheet
=> I think this whole concept needs a restart, I'll open a separate issue for that. => #1885 -
gams
: Like with Matlab, I think we need to differentiate here between the software framework and the programming language.-
General Algebraic Modeling System
: The General Algebraic Modeling System (GAMS) is a proprietary software framework developed by GAMS Development Corp. that uses the GAMS programming language. (Alternative label:GAMS
) -
GAMS programming language
: The GAMS programming language is a programming language developed by GAMS Development Corp. for use in the General Algebraic Modeling System. (Alternative label:GAMS
)
-
- class
uncertainty approach
with individualsdeterministic
andstochastic
=> Sounds like qualities of models, I'll open a separate issue for that. => #1886
No one reacted yet, but as my gams
proposal is the same pattern as with what we've done with matlab
in interpret "no reaction" as "no objection" and will implement this to move forward.