NIHVIVO-2883 Add vivo-specific default list view config to generate a preferred title. Display most specific type for people only, if no preferred title.
This commit is contained in:
parent
1a3e72ad33
commit
ef3eb063b8
2 changed files with 111 additions and 0 deletions
92
productMods/config/listViewConfig-default.xml
Normal file
92
productMods/config/listViewConfig-default.xml
Normal file
|
@ -0,0 +1,92 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||
|
||||
<!-- VIVO-specific default list view config file for object properties
|
||||
|
||||
See guidelines in vitro/doc/list_view_configuration_guidelines.txt -->
|
||||
|
||||
<list-view-config>
|
||||
<query-select>
|
||||
PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#>
|
||||
PREFIX core: <http://vivoweb.org/ontology/core#>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
||||
PREFIX vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#>
|
||||
|
||||
SELECT <collated> ?subclass </collated>
|
||||
?object
|
||||
?label
|
||||
?localName
|
||||
?type
|
||||
?title WHERE {
|
||||
|
||||
?subject ?property ?object
|
||||
LET (?localName := afn:localname(?object))
|
||||
|
||||
OPTIONAL { ?object rdfs:label ?label }
|
||||
|
||||
OPTIONAL {
|
||||
# Get mostSpecificType only for Persons
|
||||
?object a foaf:Person .
|
||||
?object vitro:mostSpecificType ?typeUri .
|
||||
?typeUri rdfs:label ?type .
|
||||
}
|
||||
|
||||
OPTIONAL { ?object core:preferredTitle ?title }
|
||||
|
||||
<collated>
|
||||
OPTIONAL { ?object a ?subclass }
|
||||
FILTER ( afn:namespace(?subclass) != "http://vitro.mannlib.cornell.edu/ns/vitro/0.7#" )
|
||||
</collated>
|
||||
|
||||
# Order by ?type is important, because if the object has more than one mostSpecificType,
|
||||
# they all get returned, but postprocessing culls out all but one. Ordering by ?type
|
||||
# will ensure that at least we'll get the same one every time.
|
||||
} ORDER BY <collated> ?subclass </collated> ?label ?localName ?type
|
||||
</query-select>
|
||||
|
||||
<query-construct>
|
||||
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
||||
PREFIX vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#>
|
||||
|
||||
CONSTRUCT {
|
||||
?subject ?property ?object .
|
||||
?object a ?subclass .
|
||||
?object rdfs:label ?label .
|
||||
} WHERE {
|
||||
{
|
||||
?subject ?property ?object .
|
||||
} UNION {
|
||||
?subject ?property ?object .
|
||||
?object a ?subclass .
|
||||
} UNION {
|
||||
?subject ?property ?object .
|
||||
?object rdfs:label ?label .
|
||||
}
|
||||
}
|
||||
</query-construct>
|
||||
|
||||
<query-construct>
|
||||
PREFIX core: <http://vivoweb.org/ontology/core#>
|
||||
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
||||
PREFIX vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#>
|
||||
|
||||
CONSTRUCT {
|
||||
?subject ?property ?object .
|
||||
?object vitro:mostSpecificType ?typeUri .
|
||||
?typeUri rdfs:label ?type .
|
||||
?object core:preferredTitle ?title .
|
||||
} WHERE {
|
||||
{
|
||||
?subject ?property ?object .
|
||||
?object vitro:mostSpecificType ?typeUri .
|
||||
?typeUri rdfs:label ?type .
|
||||
} UNION {
|
||||
?subject ?property ?object .
|
||||
?object core:preferredTitle ?title .
|
||||
}
|
||||
}
|
||||
</query-construct>
|
||||
|
||||
<template>propStatement-default.ftl</template>
|
||||
</list-view-config>
|
|
@ -0,0 +1,19 @@
|
|||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||
|
||||
<#-- VIVO-specific default object property statement template.
|
||||
|
||||
This template must be self-contained and not rely on other variables set for the individual page, because it
|
||||
is also used to generate the property statement during a deletion.
|
||||
-->
|
||||
|
||||
<@showStatement statement />
|
||||
|
||||
<#macro showStatement statement>
|
||||
<#-- The query retrieves a type only for Persons. Post-processing will remove all but one. -->
|
||||
<a href="${profileUrl(statement.object)}">${statement.label!statement.localName!}</a> ${statement.title!statement.type!}
|
||||
</#macro>
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue