hooks.pl -- ClioPatria hooks
This module declares the hooks an application may define to extend or
modify some of ClioPatria's behaviour. Hooks are multifile
defined
predicates that -typically- have no default definition. Code using the
hook typically first calls the hook. If the hook succeeds the task is
considered done. Otherwise some default action is performed. For
example, a property myprefix:componentName can be added as a property
that provides a label using this code:
:- use_module(cliopatria(hooks)). rdf_label:label_property(myprefix:componentName).
The example below adds an item to Help
popup of ClioPatria:
:- use_module(cliopatria(hooks)). :- use_module(library(http/http_dispatch)). cliopatria:menu_item(help/about, 'About'). :- http_handler(root(about), about, []). about(Request) :- <generate the about page>
- menu_item(?Item, ?Label)[multifile]
- This hook adds an item to the ClioPatria menu. Item is a term of
the form [rank=]popup/item, where popup denotes the name of
the popup menu and item is a (new) item to be added to the
popup. The item is the handler-identifier of the HTTP handler
that implements the item (see http_handler/3). Label is the
label displayed. rank defines the position inside the popup.
The built-in items are numbered 100,200,...
For example, if we want to add a new item to the Repository menu after Load from library that crawls LOD data, we can use the following code:
:- use_module(cliopatria(hooks)). :- use_module(library(http/http_dispatch)). :- handler(cliopatria('crawl_lod_form'), crawl_lod_form, []). cliopatria:menu_item(400=repository/crawl_lod_form, 'Crawl LOD'). crawl_lod_form(Request) :- ...
- menu_label(+Id, -Label)[multifile]
- This hook allows for dynamic or redefined (e.g., multilingual) labels. It is called both for popup-identifiers and item-identifiers.
- menu_popup_order(+Id, -Location:integer)[multifile]
- This hook controls the order of the popup-item of ClioPatria's menu.
- rdf_label:label_property(?Property)[multifile]
- True if the value of Property can be used to (non-uniquely) describe an object to the user. This hook provides additional facts to label_property/1.
- bnode_label(+Resource)//[multifile]
- HTML-write DCG rule that produces an HTML description for the given RDF blank node. See bnode_label//1.
- list_resource(+URI, +Options)//[multifile]
- This hook is called by cpa_browse:list_resource//2, which display the `local view' page for a resource. This can be used to create a different page for describing a resource and still using overall infrastructure such as rdf_link//1.
- user_preference_db(?Property:atom, ?Value:rdf_object) is nondet[multifile]
- Query properties for the current user/session. This mechanism allows code to access information about the user/session without committing to a particular implementation. The predicate and values are compatible with RDF to allow implementing the user database in RDF, typically using the OpenID as subject.
- user_preference_default(?Property:atom, ?Value:rdf_object) is nondet[multifile]
- Provides defaults for the user_preference/2.
- page_body(+Body)// is semidet[multifile]
- page_body(+Style, +Body)// is semidet[multifile]
- Emit the body of the page. This can be used to provide a different skin for ClioPatria. The Style argument is passed from reply_html_page/3. The file skin(cliopatria) defines the overall skin and first calls cliopatria:page_body//2, if this fails cliopatria:page_body//1 and if this fails too it uses the default page.
- server_address//[multifile]
- HTML-write DCG rule that writes the address of the server. If
you want to maintain its normal position in the page layout,
this should create an element of class
address
using the classcliopatria
. - logo//[multifile]
- Logo placed left of the menu-bar. Must be an object that has
float:left
style. - predicate_order(+Pred, -Order) is semidet[multifile]
- Define the order in which predicates appear in the local view.
The Order is an integer. The system ordering is defined by
cpa_browse:p_order/2. Predicates that are not explicitly ordered
are placed at the end of the table an ordered alphabetically.
Predicates that have order `0' are deleted from the table.
- context_graph(+R, -RDF, +Options) is semidet[multifile]
- context_graph(+R, -RDF, +Options) is semidet[multifile]
- This hook redefines the context graph shown by the RDF browser
for the resource R. RDF is a list of
rdf(S,P,O)
triples that describe the context. Typically only object-triples are used, although that is not a requirement. - context_predicate(+Subject, -Predicate) is nondet[multifile]
- True when
rdf(Subject, Predicate, _)
must be included in the context graph for Subject. - node_label(+URI, +Lang, +MaxLen, -Label) is semidet[multifile]
- Compute a label for URI in the given language, truncating the label to MaxLen characters.
- node_shape(+URI, -Shape, +Options) is semidet[multifile]
- Compute the desired shape for a GraphViz node representing URI.
- bag_shape(+Bag, -Shape, +Options) is semidet[multifile]
- Compute the desired properties for a table used to display a bag
of resources. Shape options include:
- max(Max)
- Only show the first Max members of the bag. Default is 5.
- shape(Shape)
- Basic shape
- style(Style)
- Style options
- max_label_length(Chars)
- Truncate labels that have more then Chars characters.
- edge_shape(+Triple, -Shape, +Options) is semidet[multifile]
- Compute the desired attributes for a GraphViz edge representing the predicate Triple.
- page_body(+Body)// is semidet[multifile]
- page_body(+Style, +Body)// is semidet[multifile]
- Emit the body of the page. This can be used to provide a different skin for ClioPatria. The Style argument is passed from reply_html_page/3. The file skin(cliopatria) defines the overall skin and first calls cliopatria:page_body//2, if this fails cliopatria:page_body//1 and if this fails too it uses the default page.