2018-04-05 10:09:58 +00:00
|
|
|
section{* An example ontology for a scholarly paper*}
|
2018-03-27 07:41:39 +00:00
|
|
|
|
2018-04-05 10:09:58 +00:00
|
|
|
theory scholarly_paper
|
2018-03-28 19:08:37 +00:00
|
|
|
imports "../Isa_DOF"
|
2018-03-21 10:59:27 +00:00
|
|
|
begin
|
|
|
|
|
|
|
|
doc_class title =
|
2018-04-17 13:08:01 +00:00
|
|
|
short_title :: "string option" <= "None"
|
|
|
|
|
2018-03-21 10:59:27 +00:00
|
|
|
doc_class subtitle =
|
2018-04-17 15:39:16 +00:00
|
|
|
abbrev :: "string option" <= "None"
|
2018-03-27 07:41:39 +00:00
|
|
|
|
|
|
|
-- \<open>adding a contribution list and checking that it is cited as well in tech as in conclusion. ? \<close>
|
2018-03-21 10:59:27 +00:00
|
|
|
|
|
|
|
doc_class author =
|
|
|
|
affiliation :: "string"
|
|
|
|
|
|
|
|
doc_class abstract =
|
2018-04-17 15:39:16 +00:00
|
|
|
keyword_list :: "string list" <= "[]"
|
2018-03-21 10:59:27 +00:00
|
|
|
|
2018-03-27 07:41:39 +00:00
|
|
|
doc_class text_section =
|
2018-04-05 10:09:58 +00:00
|
|
|
main_author :: "author option" <= None
|
2018-03-21 10:59:27 +00:00
|
|
|
|
2018-03-27 07:41:39 +00:00
|
|
|
doc_class introduction = text_section +
|
|
|
|
comment :: string
|
2018-03-21 10:59:27 +00:00
|
|
|
|
2018-03-27 07:41:39 +00:00
|
|
|
doc_class technical = text_section +
|
2018-04-05 10:09:58 +00:00
|
|
|
definition_list :: "string list" <= "[]"
|
2018-03-27 07:41:39 +00:00
|
|
|
|
2018-04-17 13:58:11 +00:00
|
|
|
text{* A very rough formatting style could be modeled as follows:*}
|
|
|
|
|
|
|
|
datatype mesure = points "int" | inch "int" | textwidth "int" (* given by the inverse of the integer *)
|
|
|
|
|
|
|
|
datatype placement = left | center | right
|
|
|
|
|
|
|
|
doc_class figure = text_section +
|
|
|
|
width :: "mesure option" <= "Some(textwidth 1)"
|
|
|
|
height :: "mesure option" <= "Some(textwidth 1)"
|
|
|
|
scale :: "int option" (* in per cent *)
|
|
|
|
"file" :: string
|
|
|
|
plmt :: placement
|
|
|
|
caption :: string
|
|
|
|
|
|
|
|
(* something similar on tables ? Idea: rough abstraction of table attributes in LaTeX *)
|
|
|
|
|
|
|
|
doc_class example = text_section +
|
|
|
|
comment :: "string"
|
2018-03-27 07:41:39 +00:00
|
|
|
|
|
|
|
doc_class conclusion = text_section +
|
2018-04-05 10:09:58 +00:00
|
|
|
main_author :: "author option" <= None
|
2018-03-28 07:24:27 +00:00
|
|
|
|
|
|
|
doc_class related_work = conclusion +
|
2018-04-05 10:09:58 +00:00
|
|
|
main_author :: "author option" <= None
|
2018-03-21 10:59:27 +00:00
|
|
|
|
|
|
|
doc_class bibliography =
|
2018-04-17 15:39:16 +00:00
|
|
|
style :: "string option" <= "Some ''LNCS''"
|
2018-03-21 10:59:27 +00:00
|
|
|
|
|
|
|
text{* Besides subtyping, there is another relation between
|
|
|
|
doc_classes: a class can be a \emph{monitor} to other ones,
|
|
|
|
which is expressed by occurrence in the where clause.
|
|
|
|
While sub-classing refers to data-inheritance of attributes,
|
|
|
|
a monitor captures structural constraints -- the order --
|
|
|
|
in which instances of monitored classes may occur.
|
|
|
|
|
|
|
|
The control of monitors is done by the commands:
|
|
|
|
-- monitor <doc-class>
|
|
|
|
-- close_monitor <doc-class>
|
|
|
|
where the automaton of the monitor class is expected
|
|
|
|
to be in a final state.
|
|
|
|
|
|
|
|
Monitors can be nested.
|
|
|
|
|
|
|
|
Classes neither directly or via inheritance indirectly
|
|
|
|
mentioned in the monitor are \emph{independent} from
|
|
|
|
a monitor and may occur freely.
|
|
|
|
*}
|
|
|
|
|
|
|
|
|
2018-04-05 10:09:58 +00:00
|
|
|
-- \<open>underlying idea: capture the essence of a monitor class as trace.
|
2018-03-27 07:41:39 +00:00
|
|
|
trace would be `predefined id` like `main` in C. \<close>
|
2018-03-28 07:24:27 +00:00
|
|
|
text{* @{cite bla} *}
|
2018-03-21 10:59:27 +00:00
|
|
|
|
2018-04-05 10:09:58 +00:00
|
|
|
doc_class article =
|
2018-03-21 10:59:27 +00:00
|
|
|
trace :: "(title + subtitle + author+ abstract +
|
2018-03-27 07:41:39 +00:00
|
|
|
introduction + technical + example +
|
2018-03-21 10:59:27 +00:00
|
|
|
conclusion + bibliography) list"
|
2018-04-05 10:09:58 +00:00
|
|
|
where "(title ~
|
|
|
|
[subtitle] ~
|
|
|
|
(author)+ ~
|
|
|
|
abstract ~
|
|
|
|
introduction ~
|
|
|
|
(technical || example)+ .
|
|
|
|
conclusion ~
|
2018-03-21 10:59:27 +00:00
|
|
|
bibliography)"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|