diff --git a/productMods/WEB-INF/ontologies/app/loadedAtStartup/PropertyConfig.n3 b/productMods/WEB-INF/ontologies/app/loadedAtStartup/PropertyConfig.n3 index 2f03a9fe..fde85126 100644 --- a/productMods/WEB-INF/ontologies/app/loadedAtStartup/PropertyConfig.n3 +++ b/productMods/WEB-INF/ontologies/app/loadedAtStartup/PropertyConfig.n3 @@ -13,6 +13,19 @@ @base . +# warning: don't use blank nodes; the display model doesn't currently support them. + +local:personInPositionContext a :ConfigContext ; + :hasConfiguration local:personInPositionConfig ; + :configContextFor vivo:relatedBy ; + :qualifiedBy vivo:Position . + +local:personInPositionConfig a :ObjectPropertyDisplayConfig ; + :displayName "positions" ; + :listViewConfigFile "listViewConfig-personInPosition.xml"^^xsd:string ; + :propertyGroup ; + vitro:hiddenFromDisplayBelowRoleLevelAnnot role:public . + local:authorInAuthorshipContext a :ConfigContext ; :hasConfiguration local:authorInAuthorshipConfig ; :configContextFor vivo:relatedBy ; diff --git a/productMods/config/listViewConfig-personInPosition.xml b/productMods/config/listViewConfig-personInPosition.xml index e3d5b07e..6c161705 100644 --- a/productMods/config/listViewConfig-personInPosition.xml +++ b/productMods/config/listViewConfig-personInPosition.xml @@ -20,7 +20,7 @@ ?outerOrg ?outerOrgName ?dateTimeStart ?dateTimeEnd WHERE { ?subject ?property ?position - OPTIONAL { ?position core:positionInOrganization ?org . + OPTIONAL { ?position core:relates ?org . ?org rdfs:label ?orgName OPTIONAL { ?org core:subOrganizationWithin ?middleOrg . ?middleOrg rdfs:label ?middleOrgName @@ -61,6 +61,7 @@ ?subclass rdfs:subClassOf core:Position } WHERE { ?subject ?property ?position . + ?position a core:Position . ?position vitro:mostSpecificType ?subclass . ?subclass rdfs:subClassOf core:Position } @@ -69,8 +70,10 @@ PREFIX core: <http://vivoweb.org/ontology/core#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> + PREFIX foaf: <http://xmlns.com/foaf/0.1/> CONSTRUCT { ?subject ?property ?position . + ?position a core:Position . ?position ?positionProperty ?positionValue . ?org rdfs:label ?orgName . ?org core:subOrganizationWithin ?middleOrg . @@ -79,34 +82,47 @@ ?outerOrg rdfs:label ?outerOrgName } WHERE { { - ?subject ?property ?position + ?subject ?property ?position . + ?position a core:Position . } UNION { ?subject ?property ?position . + ?position a core:Position . ?position ?positionProperty ?positionValue } UNION { ?subject ?property ?position . + ?position a core:Position . ?position core:rank ?rank } UNION { ?subject ?property ?position . - ?position core:positionInOrganization ?org . + ?position a core:Position . + ?position core:relates ?org . + ?org a foaf:Organization . ?org rdfs:label ?orgName } UNION { ?subject ?property ?position . - ?position core:positionInOrganization ?org . + ?position a core:Position . + ?position core:relates ?org . + ?org a foaf:Organization . ?org core:subOrganizationWithin ?middleOrg } UNION { ?subject ?property ?position . - ?position core:positionInOrganization ?org . + ?position a core:Position . + ?position core:relates ?org . + ?org a foaf:Organization . ?org core:subOrganizationWithin ?middleOrg . ?middleOrg rdfs:label ?middleOrgName } UNION { ?subject ?property ?position . - ?position core:positionInOrganization ?org . + ?position a core:Position . + ?position core:relates ?org . + ?org a foaf:Organization . ?org core:subOrganizationWithin ?middleOrg . ?middleOrg core:subOrganizationWithin ?outerOrg } UNION { ?subject ?property ?position . - ?position core:positionInOrganization ?org . + ?position a core:Position . + ?position core:positionInOrganization ?org . + ?org a foaf:Organization . ?org core:subOrganizationWithin ?middleOrg . ?middleOrg core:subOrganizationWithin ?outerOrg . ?outerOrg rdfs:label ?outerOrgName @@ -117,12 +133,14 @@ PREFIX core: <http://vivoweb.org/ontology/core#> CONSTRUCT { - ?subject ?property ?position . + ?subject ?property ?position . + ?position a core:Position . ?position core:dateTimeInterval ?dateTimeInterval . ?dateTimeInterval core:start ?dateTimeStartValue . ?dateTimeStartValue core:dateTime ?dateTimeStart } WHERE { ?subject ?property ?position . + ?position a core:Position . ?position core:dateTimeInterval ?dateTimeInterval . ?dateTimeInterval core:start ?dateTimeStartValue . ?dateTimeStartValue core:dateTime ?dateTimeStart @@ -133,11 +151,13 @@ PREFIX core: <http://vivoweb.org/ontology/core#> CONSTRUCT { ?subject ?property ?position . + ?position a core:Position . ?position core:dateTimeInterval ?dateTimeInterval . ?dateTimeInterval core:end ?dateTimeEndValue . ?dateTimeEndValue core:dateTime ?dateTimeEnd } WHERE { ?subject ?property ?position . + ?position a core:Position . ?position core:dateTimeInterval ?dateTimeInterval . ?dateTimeInterval core:end ?dateTimeEndValue . ?dateTimeEndValue core:dateTime ?dateTimeEnd @@ -145,4 +165,4 @@ - \ No newline at end of file + diff --git a/productMods/templates/freemarker/body/partials/individual/individual-positions.ftl b/productMods/templates/freemarker/body/partials/individual/individual-positions.ftl index 01553334..76611713 100644 --- a/productMods/templates/freemarker/body/partials/individual/individual-positions.ftl +++ b/productMods/templates/freemarker/body/partials/individual/individual-positions.ftl @@ -1,11 +1,11 @@ <#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- List of positions for the individual --> -<#assign positions = propertyGroups.pullProperty("${core}personInPosition")!> +<#assign positions = propertyGroups.pullProperty("${core}relatedBy", "${core}Position")!> <#if positions?has_content> <#-- true when the property is in the list, even if not populated (when editing) --> <#assign localName = positions.localName>

${positions.name?capitalize} <@p.addLink positions editable /> <@p.verboseDisplay positions />

    <@p.objectProperty positions editable />
- \ No newline at end of file +