This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
docs:prov [2017/09/19 17:45] kkutt [How the PROV plugin works] |
docs:prov [2022/03/23 16:59] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== PROV plugin for DokuWiki ====== | ||
+ | PROV (abbreviation from Provenance) is a W3C Standard to describe entities, activities, and people involved in producing a piece of data. Provenance description is saved in a form of an graph. Presented plugin uses PROV to describe provenance of DokuWiki pages. PROV graph is serialized into the form of OWL2 Ontology using Turtle syntax. | ||
+ | |||
+ | If you only want to know how to start with PROV plugin, read the **[[# | ||
+ | |||
+ | |||
+ | ===== PROV W3C Standard ===== | ||
+ | |||
+ | PROV Model is based on three main concepts: | ||
+ | * {{ http:// | ||
+ | * **Activities**: | ||
+ | * **Agents**: | ||
+ | |||
+ | They are connected with proper relations defined in standard, such as these on the figure. | ||
+ | |||
+ | Comprehensive description of PROV Standard is placed on W3C web page: [[http:// | ||
+ | |||
+ | Due to standard notation, there is also possibility to provide standard ways to access and query PROV files (e.g. using SPARQL Query Language for PROV files serialized to OWL2). W3C prepared a note with such recommendations: | ||
+ | |||
+ | |||
+ | ===== Motivation ===== | ||
+ | |||
+ | Plugin was developed as a part of the PhD dissertation: | ||
+ | |||
+ | As a result, the plugin uses only selected constructs from PROV - not the whole power of this standard. If you have an idea that more PROV constructs will be useful in the plugin [[: | ||
+ | |||
+ | ===== How to use PROV plugin ===== | ||
+ | |||
+ | To use PROV plugin simply [[downloads: | ||
+ | |||
+ | PROV fields will be available in every page edition form: | ||
+ | {{: | ||
+ | |||
+ | It consists of four main components: | ||
+ | * **Change description** (blue frame): one can select the values that describe the actual change (what was done) and its goal (why it was done) in the best way or write down own description using " | ||
+ | * **URIs/URLs for used resources (put one URI in one line)** field (red frame on figure) -- here all URIs goes; one URI in one line; you can simple write down URIs for resources you have used (e.g. books URIs or URLs for web pages) or... | ||
+ | * if your edition is based on other pages from wiki you can simply select them (and double-click on them) from the second field (yellow frame); this page will appear in the left field with the '' | ||
+ | * if there are a lot of pages in your wiki, you can use a filter field. | ||
+ | * PROV plugin uses also standard DokuWiki 'Edit summary' | ||
+ | |||
+ | Final list of URIs can look like this (two external URIs and two internal URIs with '' | ||
+ | {{: | ||
+ | |||
+ | PROV files are saved in '' | ||
+ | |||
+ | ===== How the PROV plugin works ===== | ||
+ | |||
+ | PROV plugin works during page saving. There are three cases: page creation, edition and deletion. PROV plugin simply takes values from user (via fields in page edition form) and use them in specific places to generate PROV file according to the prepared schema: | ||
+ | |||
+ | < | ||
+ | @prefix rdfs: < | ||
+ | @prefix prov: < | ||
+ | @prefix dc: < | ||
+ | @prefix change: < | ||
+ | @prefix loki: < | ||
+ | @prefix lokipage: < | ||
+ | @prefix lokievent: < | ||
+ | @prefix lokiuser: < | ||
+ | |||
+ | ### Page creation: | ||
+ | |||
+ | lokipage: | ||
+ | lokipage: | ||
+ | prov: | ||
+ | prov: | ||
+ | lokievent: | ||
+ | |||
+ | ### Page edition: | ||
+ | |||
+ | lokipage: | ||
+ | prov: | ||
+ | prov: | ||
+ | prov: | ||
+ | lokievent: | ||
+ | |||
+ | ### Page deletion: | ||
+ | |||
+ | lokievent: | ||
+ | |||
+ | ### Common to all events: | ||
+ | |||
+ | lokievent: | ||
+ | prov: | ||
+ | dc: | ||
+ | loki: | ||
+ | loki: | ||
+ | change: | ||
+ | prov:used {$link1} , {$link2} ; | ||
+ | loki: | ||
+ | loki: | ||
+ | loki: | ||
+ | loki: | ||
+ | loki: | ||
+ | | ||
+ | loki: | ||
+ | | ||
+ | loki: | ||
+ | | ||
+ | loki: | ||
+ | loki: | ||
+ | loki: | ||
+ | | ||
+ | loki: | ||
+ | loki: | ||
+ | | ||
+ | |||
+ | Notes: | ||
+ | * for guests loki: | ||
+ | * page revisions ($oldRev and $newRev) are timestamps of specified pages | ||
+ | * PLUGIN IS THE WORK IS PROGRESS -- SOME TRIPLES ARE NOT GENERATED YET!</ | ||
+ | |||
+ | Note that in PROV there are only connections between different revisions, users and used resources. If you want to compare actual text of different versions of the page, you need standard DokuWiki diff. |