VIVO-481, VIVO-477, VIVO-475 and VIVO-471

This commit is contained in:
tworrall 2013-11-03 17:21:21 -05:00
commit 06e1a2c255
37 changed files with 1099 additions and 345 deletions

View file

@ -47,7 +47,7 @@
?editorship core:relates ?editorObj . ?editorship core:relates ?editorObj .
?editorObj rdfs:label ?editor ?editorObj rdfs:label ?editor
} }
OPTIONAL { ?infoResource core:partOf ?partOfObj . OPTIONAL { ?infoResource <http://purl.obolibrary.org/obo/BFO_0000050> ?partOfObj .
?partOfObj rdfs:label ?partOf ?partOfObj rdfs:label ?partOf
} }
OPTIONAL { ?infoResource vitro:mostSpecificType ?subclass } OPTIONAL { ?infoResource vitro:mostSpecificType ?subclass }
@ -152,7 +152,7 @@
?editorship a core:Editorship . ?editorship a core:Editorship .
?editorship core:relates ?editorObj . ?editorship core:relates ?editorObj .
?editorObj a foaf:Person . ?editorObj a foaf:Person .
?infoResource core:partOf ?partOfObj . ?infoResource <http://purl.obolibrary.org/obo/BFO_0000050> ?partOfObj .
?appearsInObj rdfs:label ?appearsIn . ?appearsInObj rdfs:label ?appearsIn .
?publisherObj rdfs:label ?publisher . ?publisherObj rdfs:label ?publisher .
?editorObj rdfs:label ?editor . ?editorObj rdfs:label ?editor .
@ -206,7 +206,7 @@
?authorship a core:Authorship . ?authorship a core:Authorship .
?authorship core:relates ?infoResource . ?authorship core:relates ?infoResource .
?infoResource a <http://purl.obolibrary.org/obo/IAO_0000030> . ?infoResource a <http://purl.obolibrary.org/obo/IAO_0000030> .
?infoResource core:partOf ?partOfObj . ?infoResource <http://purl.obolibrary.org/obo/BFO_0000050> ?partOfObj .
?partOfObj rdfs:label ?partOf ?partOfObj rdfs:label ?partOf
} }
} }

View file

@ -33,12 +33,13 @@
} }
OPTIONAL { ?role <http://vivoweb.org/ontology/core#relatedBy> ?activity . OPTIONAL { ?role <http://vivoweb.org/ontology/core#relatedBy> ?activity .
?activity a core:Grant . ?activity a core:Grant .
?activity core:grantAwardedBy ?awardedBy . ?activity core:assignedBy ?awardedBy .
?awardedBy rdfs:label ?awardedByLabel ?awardedBy rdfs:label ?awardedByLabel
} }
OPTIONAL { ?role <http://vivoweb.org/ontology/core#relatedBy> ?activity . OPTIONAL { ?role <http://vivoweb.org/ontology/core#relatedBy> ?activity .
?activity a core:Grant . ?activity a core:Grant .
?activity core:administeredBy ?adminedBy . ?activity core:relates ?adminedByRole .
?adminedByRole <http://purl.obolibrary.org/obo/RO_0000052> ?adminedBy .
?adminedBy rdfs:label ?adminedByLabel ?adminedBy rdfs:label ?adminedByLabel
} }
OPTIONAL { ?role core:dateTimeInterval ?dateTimeIntervalRole . OPTIONAL { ?role core:dateTimeInterval ?dateTimeIntervalRole .
@ -66,6 +67,7 @@
<query-construct> <query-construct>
PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt; PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt;
PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt; PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;
CONSTRUCT { CONSTRUCT {
?subject ?property ?role . ?subject ?property ?role .
?role a core:CoPrincipalInvestigatorRole . ?role a core:CoPrincipalInvestigatorRole .
@ -73,9 +75,10 @@
?activity a core:Grant . ?activity a core:Grant .
?role ?roleProperty ?roleValue . ?role ?roleProperty ?roleValue .
?activity rdfs:label ?activityLabel . ?activity rdfs:label ?activityLabel .
?activity core:grantAwardedBy ?awardedBy . ?activity core:assignedBy ?awardedBy .
?awardedBy rdfs:label ?awardedByLabel . ?awardedBy rdfs:label ?awardedByLabel .
?activity core:administeredBy ?adminedBy . ?activity core:relates ?adminedByRole .
?adminedByRole &lt;http://purl.obolibrary.org/obo/RO_0000052&gt; ?adminedBy .
?adminedBy rdfs:label ?adminedByLabel ?adminedBy rdfs:label ?adminedByLabel
} WHERE { } WHERE {
{ {
@ -96,14 +99,18 @@
?role a core:CoPrincipalInvestigatorRole . ?role a core:CoPrincipalInvestigatorRole .
?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity . ?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity .
?activity a core:Grant . ?activity a core:Grant .
?activity core:grantAwardedBy ?awardedBy . ?activity core:assignedBy ?awardedBy .
?awardedBy a foaf:Organization .
?awardedBy rdfs:label ?awardedByLabel ?awardedBy rdfs:label ?awardedByLabel
} UNION { } UNION {
?subject ?property ?role . ?subject ?property ?role .
?role a core:CoPrincipalInvestigatorRole . ?role a core:CoPrincipalInvestigatorRole .
?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity . ?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity .
?activity a core:Grant . ?activity a core:Grant .
?activity core:administeredBy ?adminedBy . ?activity core:relates ?adminedByRole .
?adminedByRole a core:AdminsitratorRole.
?adminedByRole &lt;http://purl.obolibrary.org/obo/RO_0000052&gt; ?adminedBy .
?adminedBy a foaf:Organization .
?adminedBy rdfs:label ?adminedByLabel ?adminedBy rdfs:label ?adminedByLabel
} }
} }

View file

@ -34,12 +34,13 @@
} }
OPTIONAL { ?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity . OPTIONAL { ?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity .
?activity a core:Grant . ?activity a core:Grant .
?activity core:grantAwardedBy ?awardedBy . ?activity core:assignedBy ?awardedBy .
?awardedBy rdfs:label ?awardedByLabel ?awardedBy rdfs:label ?awardedByLabel
} }
OPTIONAL { ?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity . OPTIONAL { ?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity .
?activity a core:Grant . ?activity a core:Grant .
?activity core:administeredBy ?adminedBy . ?activity core:relates ?adminedByRole .
?adminedByRole &lt;http://purl.obolibrary.org/obo/RO_0000052&gt; ?adminedBy .
?adminedBy rdfs:label ?adminedByLabel ?adminedBy rdfs:label ?adminedByLabel
} }
OPTIONAL { ?role core:dateTimeInterval ?dateTimeIntervalRole . OPTIONAL { ?role core:dateTimeInterval ?dateTimeIntervalRole .
@ -68,6 +69,7 @@
<query-construct> <query-construct>
PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt; PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt;
PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt; PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;
CONSTRUCT { CONSTRUCT {
?subject ?property ?role . ?subject ?property ?role .
?role a core:InvestigatorRole . ?role a core:InvestigatorRole .
@ -75,9 +77,10 @@
?activity a core:Grant . ?activity a core:Grant .
?role ?roleProperty ?roleValue . ?role ?roleProperty ?roleValue .
?activity rdfs:label ?activityLabel . ?activity rdfs:label ?activityLabel .
?activity core:grantAwardedBy ?awardedBy . ?activity core:assignedBy ?awardedBy .
?awardedBy rdfs:label ?awardedByLabel . ?awardedBy rdfs:label ?awardedByLabel .
?activity core:administeredBy ?adminedBy . ?activity core:relates ?adminedByRole .
?adminedByRole &lt;http://purl.obolibrary.org/obo/RO_0000052&gt; ?adminedBy .
?adminedBy rdfs:label ?adminedByLabel ?adminedBy rdfs:label ?adminedByLabel
} WHERE { } WHERE {
{ {
@ -98,14 +101,18 @@
?role a core:InvestigatorRole . ?role a core:InvestigatorRole .
?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity . ?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity .
?activity a core:Grant . ?activity a core:Grant .
?activity core:grantAwardedBy ?awardedBy . ?activity core:assignedBy ?awardedBy .
?awardedBy a foaf:Organization .
?awardedBy rdfs:label ?awardedByLabel ?awardedBy rdfs:label ?awardedByLabel
} UNION { } UNION {
?subject ?property ?role . ?subject ?property ?role .
?role a core:InvestigatorRole . ?role a core:InvestigatorRole .
?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity . ?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity .
?activity a core:Grant . ?activity a core:Grant .
?activity core:administeredBy ?adminedBy . ?activity core:relates ?adminedByRole .
?adminedByRole a core:AdminsitratorRole.
?adminedByRole &lt;http://purl.obolibrary.org/obo/RO_0000052&gt; ?adminedBy .
?adminedBy a foaf:Organization .
?adminedBy rdfs:label ?adminedByLabel ?adminedBy rdfs:label ?adminedByLabel
} }
} }

View file

@ -52,16 +52,16 @@
} }
OPTIONAL { ?role &lt;http://purl.obolibrary.org/obo/BFO_0000054&gt; ?presentation . OPTIONAL { ?role &lt;http://purl.obolibrary.org/obo/BFO_0000054&gt; ?presentation .
?presentation a vivo:Presentation . ?presentation a vivo:Presentation .
?presentation vivo:inEventWithin ?series . ?presentation &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?series .
?series vivo:seriesForEvent ?presentation . ?series &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?presentation .
?series rdfs:label ?seriesLabel ?series rdfs:label ?seriesLabel
} }
OPTIONAL { ?role &lt;http://purl.obolibrary.org/obo/BFO_0000054&gt; ?presentation . OPTIONAL { ?role &lt;http://purl.obolibrary.org/obo/BFO_0000054&gt; ?presentation .
?presentation a vivo:Presentation . ?presentation a vivo:Presentation .
?presentation &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?workshop . ?presentation &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?workshop .
?workshop &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?presentation . ?workshop &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?presentation .
?workshop vivo:inEventSeries ?series . ?workshop &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?series .
?series vivo:seriesForEvent ?workshop . ?series &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?workshop .
?series rdfs:label ?seriesLabel ?series rdfs:label ?seriesLabel
} }
<collated> <collated>
@ -200,8 +200,8 @@
?role &lt;http://purl.obolibrary.org/obo/BFO_0000054&gt; ?presentation . ?role &lt;http://purl.obolibrary.org/obo/BFO_0000054&gt; ?presentation .
?presentation a vivo:Presentation . ?presentation a vivo:Presentation .
?series a vivo:EventSeries . ?series a vivo:EventSeries .
?presentation vivo:inEventSeries ?series . ?presentation &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?series .
?series vivo:seriesForEvent ?presentation . ?series &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?presentation .
?series rdfs:label ?seriesLabel ?series rdfs:label ?seriesLabel
} WHERE { } WHERE {
@ -214,8 +214,8 @@
?role &lt;http://purl.obolibrary.org/obo/BFO_0000054&gt; ?presentation . ?role &lt;http://purl.obolibrary.org/obo/BFO_0000054&gt; ?presentation .
?presentation a vivo:Presentation . ?presentation a vivo:Presentation .
?series a vivo:EventSeries . ?series a vivo:EventSeries .
?presentation vivo:inEventSeries ?series . ?presentation &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?series .
?series vivo:seriesForEvent ?presentation . ?series &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?presentation .
?series rdfs:label ?seriesLabel ?series rdfs:label ?seriesLabel
} }
} }
@ -234,8 +234,8 @@
?presentation &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?workshop . ?presentation &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?workshop .
?workshop &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?presentation . ?workshop &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?presentation .
?workshop a bibo:Workshop . ?workshop a bibo:Workshop .
?workshop vivo:inEventSeries ?series . ?workshop &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?series .
?series vivo:seriesForEvent ?workshop . ?series &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?workshop .
?series a vivo:EventSeries . ?series a vivo:EventSeries .
?series rdfs:label ?seriesLabel ?series rdfs:label ?seriesLabel
} WHERE { } WHERE {
@ -250,8 +250,8 @@
?presentation &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?workshop . ?presentation &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?workshop .
?workshop &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?presentation . ?workshop &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?presentation .
?workshop a bibo:Workshop . ?workshop a bibo:Workshop .
?workshop vivo:inEventSeries ?series . ?workshop &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?series .
?series vivo:seriesForEvent ?workshop . ?series &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?workshop .
?series a vivo:EventSeries . ?series a vivo:EventSeries .
?series rdfs:label ?seriesLabel ?series rdfs:label ?seriesLabel
} }

View file

@ -33,12 +33,13 @@
} }
OPTIONAL { ?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity . OPTIONAL { ?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity .
?activity a core:Grant . ?activity a core:Grant .
?activity core:grantAwardedBy ?awardedBy . ?activity core:assignedBy ?awardedBy .
?awardedBy rdfs:label ?awardedByLabel ?awardedBy rdfs:label ?awardedByLabel
} }
OPTIONAL { ?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity . OPTIONAL { ?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity .
?activity a core:Grant . ?activity a core:Grant .
?activity core:administeredBy ?adminedBy . ?activity core:relates ?adminedByRole .
?adminedByRole &lt;http://purl.obolibrary.org/obo/RO_0000052&gt; ?adminedBy .
?adminedBy rdfs:label ?adminedByLabel ?adminedBy rdfs:label ?adminedByLabel
} }
OPTIONAL { ?role core:dateTimeInterval ?dateTimeIntervalRole . OPTIONAL { ?role core:dateTimeInterval ?dateTimeIntervalRole .
@ -66,6 +67,7 @@
<query-construct> <query-construct>
PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt; PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt;
PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt; PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;
CONSTRUCT { CONSTRUCT {
?subject ?property ?role . ?subject ?property ?role .
?role a core:PrincipalInvestigatorRole . ?role a core:PrincipalInvestigatorRole .
@ -73,9 +75,10 @@
?activity a core:Grant . ?activity a core:Grant .
?role ?roleProperty ?roleValue . ?role ?roleProperty ?roleValue .
?activity rdfs:label ?activityLabel . ?activity rdfs:label ?activityLabel .
?activity core:grantAwardedBy ?awardedBy . ?activity core:assignedBy ?awardedBy .
?awardedBy rdfs:label ?awardedByLabel . ?awardedBy rdfs:label ?awardedByLabel .
?activity core:administeredBy ?adminedBy . ?activity core:relates ?adminedByRole .
?adminedByRole &lt;http://purl.obolibrary.org/obo/RO_0000052&gt; ?adminedBy .
?adminedBy rdfs:label ?adminedByLabel ?adminedBy rdfs:label ?adminedByLabel
} WHERE { } WHERE {
{ {
@ -96,14 +99,18 @@
?role a core:PrincipalInvestigatorRole . ?role a core:PrincipalInvestigatorRole .
?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity . ?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity .
?activity a core:Grant . ?activity a core:Grant .
?activity core:grantAwardedBy ?awardedBy . ?activity core:assignedBy ?awardedBy .
?awardedBy a foaf:Organization .
?awardedBy rdfs:label ?awardedByLabel ?awardedBy rdfs:label ?awardedByLabel
} UNION { } UNION {
?subject ?property ?role . ?subject ?property ?role .
?role a core:PrincipalInvestigatorRole . ?role a core:PrincipalInvestigatorRole .
?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity . ?role &lt;http://vivoweb.org/ontology/core#relatedBy&gt; ?activity .
?activity a core:Grant . ?activity a core:Grant .
?activity core:administeredBy ?adminedBy . ?activity core:relates ?adminedByRole .
?adminedByRole a core:AdminsitratorRole.
?adminedByRole &lt;http://purl.obolibrary.org/obo/RO_0000052&gt; ?adminedBy .
?adminedBy a foaf:Organization .
?adminedBy rdfs:label ?adminedByLabel ?adminedBy rdfs:label ?adminedByLabel
} }
} }

View file

@ -1,93 +1,137 @@
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>
<!-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <!-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<!-- See guidelines in vitro/doc/list_view_configuration_guidelines.txt <!-- See guidelines in vitro/doc/list_view_configuration_guidelines.txt -->
<http://localhost:8080/vivo/n1402> <http://vivoweb.org/ontology/core#organizationForTraining>
-->
<list-view-config> <list-view-config>
<query-select> <query-select>
PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt; PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt; PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt;
PREFIX afn: &lt;http://jena.hpl.hp.com/ARQ/function#&gt; PREFIX afn: &lt;http://jena.hpl.hp.com/ARQ/function#&gt;
PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;
PREFIX vitro: &lt;http://vitro.mannlib.cornell.edu/ns/vitro/0.7#&gt; PREFIX vitro: &lt;http://vitro.mannlib.cornell.edu/ns/vitro/0.7#&gt;
SELECT DISTINCT <collated> ?subclass </collated> SELECT DISTINCT ?subclass
?localName ?edTraining
?training ?person ?personName
?person ?awardedDegree
?personName
?degree ?degree
?degreeName ?degreeName ?degreeAbbr
?degreeAbbr ?majorField ?info
?field
?suppInfo
?dateTimeStart ?dateTimeEnd ?dateTimeStart ?dateTimeEnd
WHERE { WHERE {
?subject ?property ?training ?subject ?property ?edTraining .
LET ( ?localName := afn:localname(?training) ) ?edTraining a core:EducationalProcess
OPTIONAL { ?training core:educationalTrainingOf ?person OPTIONAL { ?edTraining vitro:mostSpecificType ?subclass . }
OPTIONAL { ?person rdfs:label ?personName } OPTIONAL { ?edTraining &lt;http://purl.obolibrary.org/obo/RO_0002234&gt; ?awardedDegree .
} ?awardedDegree core:relates ?degree .
OPTIONAL { ?training core:degreeEarned ?degree ?degree a core:AcademicDegree .
OPTIONAL { ?degree rdfs:label ?degreeName } ?degree rdfs:label ?degreeName
OPTIONAL { ?degree core:abbreviation ?degreeAbbr } }
} OPTIONAL { ?edTraining &lt;http://purl.obolibrary.org/obo/RO_0002234&gt; ?awardedDegree .
<collated> ?awardedDegree core:relates ?degree .
OPTIONAL { ?training vitro:mostSpecificType ?subclass . ?degree a core:AcademicDegree .
?subclass rdfs:subClassOf core:EducationalTraining ?degree core:abbreviation ?degreeAbbr
} }
</collated> OPTIONAL { ?edTraining &lt;http://purl.obolibrary.org/obo/RO_0000057&gt; ?person .
?person a foaf:Person .
OPTIONAL { ?training rdfs:label ?trainingLabel } ?person rdfs:label ?personName
OPTIONAL { ?training core:majorField ?field } }
OPTIONAL { ?training core:supplementalInformation ?suppInfo } OPTIONAL { ?edTraining core:majorField ?majorField }
OPTIONAL { ?training core:dateTimeInterval ?dateTimeInterval OPTIONAL { ?edTraining core:supplementalInformation ?info }
OPTIONAL { ?dateTimeInterval core:start ?dateTimeStartValue . OPTIONAL { ?edTraining core:dateTimeInterval ?dateTimeInterval .
?dateTimeStartValue core:dateTime ?dateTimeStart ?dateTimeInterval core:start ?dateTimeStartValue .
} ?dateTimeStartValue core:dateTime ?dateTimeStart
OPTIONAL { ?dateTimeInterval core:end ?dateTimeEndValue . }
?dateTimeEndValue core:dateTime ?dateTimeEnd OPTIONAL { ?edTraining core:dateTimeInterval ?dateTimeInterval .
} ?dateTimeInterval core:end ?dateTimeEndValue .
} ?dateTimeEndValue core:dateTime ?dateTimeEnd
<critical-data-required> }
FILTER ( bound(?person) ) } ORDER BY ?subclass DESC(?dateTimeEnd) DESC(?dateTimeStart)
</critical-data-required>
} ORDER BY <collated> ?subclass </collated> ?personName
</query-select> </query-select>
<query-construct> <query-construct>
PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt; PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt; PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt;
PREFIX vitro: &lt;http://vitro.mannlib.cornell.edu/ns/vitro/0.7#&gt; PREFIX vitro: &lt;http://vitro.mannlib.cornell.edu/ns/vitro/0.7#&gt;
CONSTRUCT { CONSTRUCT {
?subject ?property ?training . ?edTraining vitro:mostSpecificType ?subclass
?training vitro:mostSpecificType ?subclass .
?subclass rdfs:subClassOf core:EducationalTraining
} WHERE { } WHERE {
?subject ?property ?training . ?subject ?property ?edTraining .
?training vitro:mostSpecificType ?subclass . ?edTraining a core:EducationalProcess .
?subclass rdfs:subClassOf core:EducationalTraining ?edTraining vitro:mostSpecificType ?subclass .
} }
</query-construct> </query-construct>
<query-construct> <query-construct>
PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt;
PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt; PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt;
CONSTRUCT { CONSTRUCT {
?subject ?property ?training . ?subject ?property ?edTraining .
?training ?trainingProperty ?trainingValue . ?edTraining a core:EducationalProcess .
?edTraining ?edTrainingProp ?edTrainingValue .
?edTraining &lt;http://purl.obolibrary.org/obo/RO_0002234&gt; ?awardedDegree .
?awardedDegree core:relates ?degree .
?edTraining core:dateTimeInterval ?dateTimeInterval
} WHERE {
{
?subject ?property ?edTraining .
?edTraining a core:EducationalProcess
}
UNION {
?subject ?property ?edTraining .
?edTraining a core:EducationalProcess .
?edTraining ?edTrainingProp ?edTrainingValue
}
UNION {
?subject ?property ?edTraining .
?edTraining a core:EducationalProcess .
?edTraining &lt;http://purl.obolibrary.org/obo/RO_0002234&gt; ?awardedDegree .
}
UNION {
?subject ?property ?edTraining .
?edTraining a core:EducationalProcess .
?edTraining &lt;http://purl.obolibrary.org/obo/RO_0002234&gt; ?awardedDegree .
?awardedDegree core:relates ?degree
}
UNION {
?subject ?property ?edTraining .
?edTraining a core:EducationalProcess .
?edTraining core:dateTimeInterval ?dateTimeInterval
}
}
</query-construct>
<query-construct>
PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt;
PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;
CONSTRUCT {
?subject ?property ?edTraining .
?edTraining a core:EducationalProcess .
?edTraining ?edTrainingProp ?edTrainingValue .
?edTraining &lt;http://purl.obolibrary.org/obo/RO_0000057&gt; ?person .
?person a foaf:Person .
?person rdfs:label ?personName ?person rdfs:label ?personName
} WHERE { } WHERE {
{ {
?subject ?property ?training ?subject ?property ?edTraining .
} UNION { ?edTraining a core:EducationalProcess
?subject ?property ?training . }
?training ?trainingProperty ?trainingValue UNION {
} UNION { ?subject ?property ?edTraining .
?subject ?property ?training . ?edTraining a core:EducationalProcess .
?training core:educationalTrainingOf ?person . ?edTraining ?edTrainingProp ?edTrainingValue
?person rdfs:label ?personName }
UNION {
?subject ?property ?edTraining .
?edTraining a core:EducationalProcess .
?edTraining &lt;http://purl.obolibrary.org/obo/RO_0000057&gt; ?person .
?person a foaf:Person .
?person rdfs:label ?personName
} }
} }
</query-construct> </query-construct>
@ -97,46 +141,55 @@
PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt; PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt;
CONSTRUCT { CONSTRUCT {
?degree a core:AcademicDegree .
?degree rdfs:label ?degreeName . ?degree rdfs:label ?degreeName .
?degree core:abbreviation ?degreeAbbr ?degree core:abbreviation ?degreeAbbr
} WHERE { } WHERE {
{ {
?subject ?property ?training . ?subject ?property ?edTraining .
?training core:degreeEarned ?degree . ?edTraining a core:EducationalProcess .
?edTraining &lt;http://purl.obolibrary.org/obo/RO_0002234&gt; ?awardedDegree .
?awardedDegree core:relates ?degree .
?degree a core:AcademicDegree .
?degree rdfs:label ?degreeName ?degree rdfs:label ?degreeName
} UNION { } UNION {
?subject ?property ?training . ?subject ?property ?edTraining .
?training core:degreeEarned ?degree . ?edTraining a core:EducationalProcess .
?edTraining &lt;http://purl.obolibrary.org/obo/RO_0002234&gt; ?awardedDegree .
?awardedDegree core:relates ?degree .
?degree a core:AcademicDegree .
?degree core:abbreviation ?degreeAbbr ?degree core:abbreviation ?degreeAbbr
} }
} }
</query-construct> </query-construct>
<query-construct> <query-construct>
PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt; PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt;
CONSTRUCT { CONSTRUCT {
?subject ?property ?position .
?position core:dateTimeInterval ?dateTimeInterval .
?dateTimeInterval core:start ?dateTimeStartValue . ?dateTimeInterval core:start ?dateTimeStartValue .
?dateTimeStartValue core:dateTime ?dateTimeStart ?dateTimeStartValue core:dateTime ?dateTimeStart .
} WHERE { } WHERE {
?subject ?property ?position . ?subject ?property ?edTraining .
?position core:dateTimeInterval ?dateTimeInterval . ?edTraining a core:EducationalProcess .
?edTraining core:dateTimeInterval ?dateTimeInterval .
?dateTimeInterval core:start ?dateTimeStartValue . ?dateTimeInterval core:start ?dateTimeStartValue .
?dateTimeStartValue core:dateTime ?dateTimeStart ?dateTimeStartValue core:dateTime ?dateTimeStart .
} }
</query-construct> </query-construct>
<query-construct> <query-construct>
PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt; PREFIX core: &lt;http://vivoweb.org/ontology/core#&gt;
CONSTRUCT { CONSTRUCT {
?subject ?property ?position .
?position core:dateTimeInterval ?dateTimeInterval .
?dateTimeInterval core:end ?dateTimeEndValue . ?dateTimeInterval core:end ?dateTimeEndValue .
?dateTimeEndValue core:dateTime ?dateTimeEnd ?dateTimeEndValue core:dateTime ?dateTimeEnd
} WHERE { } WHERE {
?subject ?property ?position . ?subject ?property ?edTraining .
?position core:dateTimeInterval ?dateTimeInterval . ?edTraining a core:EducationalProcess .
?edTraining core:dateTimeInterval ?dateTimeInterval .
?dateTimeInterval core:end ?dateTimeEndValue . ?dateTimeInterval core:end ?dateTimeEndValue .
?dateTimeEndValue core:dateTime ?dateTimeEnd ?dateTimeEndValue core:dateTime ?dateTimeEnd
} }

View file

@ -3,8 +3,6 @@
<!-- See guidelines in vitro/doc/list_view_configuration_guidelines.txt --> <!-- See guidelines in vitro/doc/list_view_configuration_guidelines.txt -->
<!-- List view config for http://vivoweb.org/ontology/core#contributingRole,
http://vivoweb.org/ontology/core#realizedRole and http://vivoweb.org/ontology/core#linkedRole -->
<list-view-config> <list-view-config>
<query-select> <query-select>

View file

@ -1,6 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#mailingAddress. <#-- Custom object property statement view for faux property "advisee of". See the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,6 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#mailingAddress. <#-- Custom object property statement view for faux property "advisees". See the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,6 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#authorInAuthorship. <#-- Custom object property statement view for faux property "selected publications". See the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,6 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#awardOrHonor. <#-- Custom object property statement view for faux property "awards and honors". See the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,6 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#authorInEditorship. <#-- Custom object property statement view for faux property "editor of". See the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,6 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#educationalTraining. <#-- Custom object property statement view for faux property "education and training". See the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,6 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#hasAttendeeRole. <#-- Custom object property statement view for faux property "attended". See the PropertyConfig.3 file for details..
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,6 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for core:hasEditorRole and core:hasReviewerRole. <#-- Custom object property statement view for faux property "reviewer of". See the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,6 +1,7 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#hasRole and its child properties. <#-- Custom object property statement view for faux property "investigator on," "principal investigator on" and
"co-principal investigator on." See the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,6 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#hasPresenterRole. <#-- Custom object property statement view for faux property "presentations". See the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,6 +1,7 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#hasRole and its child properties. <#-- Custom object property statement view for the roleRealizedIn, roleContributesTo, researchActivities, hasRole
and hasClinicalActivities custom list views. See those list view and the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,6 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#informationResourceInAuthorship. <#-- Custom object property statement view for faux property "authors". See the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,6 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#informationResourceInAuthorship. <#-- Custom object property statement view for faux property "editors". See the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,6 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#mailingAddress. <#-- Custom object property statement view for faux property "mailing address". See the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,6 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#organizationForPosition. <#-- Custom object property statement view for faux property "people". See the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,6 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#organizationForPosition. <#-- Custom object property statement view for faux property "organization for training". See the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.
@ -24,13 +24,15 @@
</#local> </#local>
<#local detailedInfo> <#local detailedInfo>
<#if statement.degree??> <#if statement.degree??>
${statement.degreeAbbr!} ${i18n().in} ${statement.field!} ${statement.degreeAbbr!} <#if statement.majorField??> ${i18n().in} ${statement.majorField!} </#if>
<#elseif statement.field??> <#elseif statement.majorField??>
${statement.field!}, ${statement.suppInfo!} ${statement.majorField!}, ${statement.info!}
<#else> <#else>
${statement.suppInfo!} ${statement.info!}
</#if> </#if>
</#local> </#local>
<@s.join [ linkedIndividual, detailedInfo ] /> <@dt.yearIntervalSpan "${statement.dateTimeStart!}" "${statement.dateTimeEnd!}" /> <@s.join [ linkedIndividual, detailedInfo ] />
</#macro> </#macro>

View file

@ -1,6 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#personInPosition. <#-- Custom object property statement view for faux property "positions". See the PropertyConfig.3 file for details.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.

View file

@ -1,8 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#relatedRole and <#--
http://vivoweb.org/ontology/core#linkedRole.
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.
--> -->

View file

@ -1,7 +1,6 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Custom object property statement view for http://vivoweb.org/ontology/core#organizationForPosition. <#--
This template must be self-contained and not rely on other variables set for the individual page, because it 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. is also used to generate the property statement during a deletion.
--> -->

View file

@ -28,7 +28,7 @@ RoleToActivityPredicate
<#assign genericLabel = "${i18n().clinical_activity?capitalize}" /> <#assign genericLabel = "${i18n().clinical_activity?capitalize}" />
<#assign acMultipleTypes = "'true'" /> <#assign acMultipleTypes = "'true'" />
<#assign acTypes = "{activity: 'http://vivoweb.org/ontology/core#Project,http://vivoweb.org/ontology/core#Service'}" /> <#assign acTypes = "{activity: 'http://vivoweb.org/ontology/core#Project,http://purl.obolibrary.org/obo/ERO_0000005'}" />
<#--Each of the two stage forms will include the form below--> <#--Each of the two stage forms will include the form below-->

View file

@ -0,0 +1,95 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
var orgForTrainingUtils = {
onLoad: function(blankSentinel) {
this.sentinel = '';
if ( blankSentinel ) { this.sentinel = blankSentinel; }
this.initObjectReferences();
this.bindEventListeners();
$.extend(this, vitro.customFormUtils);
$.extend(this, i18nStrings);
if ( this.findValidationErrors() ) {
this.resetLastNameLabel();
}
},
initObjectReferences: function() {
this.form = $('#organizationForTraining');
this.person = $('#person');
this.fauxLabel = $('#maskLabelBuilding');
this.firstName = $('#firstName');
this.lastName = $('#lastName');
this.personUri = $('#personUri');
this.aDLabel = $('#awardedDegreeLabel');
this.degreeSelector = $('#degreeUri');
// may not need this
this.firstName.attr('disabled', '');
},
bindEventListeners: function() {
this.idCache = {};
this.form.submit(function() {
orgForTrainingUtils.resolveFirstLastNames();
});
},
resolveFirstLastNames: function() {
var firstName,
lastName,
name;
// If selecting an existing person, don't submit name fields
if (this.personUri.val() == '' || this.personUri.val() == this.sentinel ) {
firstName = this.firstName.val();
lastName = this.person.val();
name = lastName;
if (firstName) {
name += ', ' + firstName;
}
// we don't want the user to see the label getting built, so hide the acSelector
// field and display a bogus field that just has the last name in it.
this.fauxLabel.val(lastName);
this.person.hide();
this.fauxLabel.show();
this.person.val(name);
this.lastName.val(lastName);
}
else {
this.firstName.attr('disabled', 'disabled');
this.lastName.attr('disabled', 'disabled');
}
orgForTrainingUtils.setAwardedDegreeLabel(this.person.val());
},
resetLastNameLabel: function() {
var indx = this.person.val().indexOf(", ");
if ( indx != -1 ) {
var temp = this.person.val().substr(0,indx);
this.person.val(temp);
}
},
setAwardedDegreeLabel: function(name) {
var degreeLabel = "";
if ( name == '' || name == null ) {
degreeLabel = $('span.acSelectionInfo').text() + ": " + this.degreeSelector.find(":selected").text();
}
else {
degreeLabel = name + ": " + this.degreeSelector.find(":selected").text();
}
this.aDLabel.val(degreeLabel);
}
}

View file

@ -0,0 +1,229 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- this is in request.subject.name -->
<#-- leaving this edit/add mode code in for reference in case we decide we need it -->
<#import "lib-vivo-form.ftl" as lvf>
<#assign subjectName=""/>
<#assign roleActivityUri="mysteryRoleActivityURI"/>
<#assign personLabel="mysteryPersonLabel"/>
<#--Retrieve certain edit configuration information-->
<#assign editMode = editConfiguration.pageData.editMode />
<#assign htmlForElements = editConfiguration.pageData.htmlForElements />
<#--The blank sentinel indicates what value should be put in a URI when no autocomplete result has been selected.
If the blank value is non-null or non-empty, n3 editing for an existing object will remove the original relationship
if nothing is selected for that object-->
<#assign blankSentinel = "" />
<#if editConfigurationConstants?has_content && editConfigurationConstants?keys?seq_contains("BLANK_SENTINEL")>
<#assign blankSentinel = editConfigurationConstants["BLANK_SENTINEL"] />
</#if>
<#--This flag is for clearing the label field on submission for an existing object being selected from autocomplete.
Set this flag on the input acUriReceiver where you would like this behavior to occur. -->
<#assign flagClearLabelForExisting = "flagClearLabelForExisting" />
<#--Retrieve variables needed-->
<#assign firstNameValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "firstName")/>
<#assign lastNameValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "lastName") />
<#assign personLabelValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "personLabel") />
<#assign personLabelDisplayValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "personLabelDisplay") />
<#assign deptValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "dept") />
<#assign infoValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "info") />
<#assign majorFieldValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "majorField") />
<#assign degreeValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "degreeType") />
<#assign awardedDegreeLabelValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "awardedDegreeLabel") />
<#assign existingPersonValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "existingPerson") />
<#assign trainingTypeValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "trainingType")/>
<#-- If edit submission exists, then retrieve validation errors if they exist-->
<#if editSubmission?has_content && editSubmission.submissionExists = true && editSubmission.validationErrors?has_content>
<#assign submissionErrors = editSubmission.validationErrors/>
</#if>
<#if editMode == "edit" || editMode == "repair">
<#assign titleVerb="${i18n().edit_capitalized}">
<#assign submitButtonText="${i18n().save_changes}">
<#assign disabledVal="disabled">
<#else>
<#assign titleVerb="${i18n().create_capitalized}">
<#assign submitButtonText="${i18n().create_entry}">
<#assign disabledVal=""/>
</#if>
<#assign requiredHint = "<span class='requiredHint'> *</span>" />
<#assign yearHint = "<span class='hint'>(${i18n().year_hint_format})</span>" />
<h2>${titleVerb}&nbsp;${i18n().educational_training_for} ${editConfiguration.subjectName}</h2>
<#--Display error messages if any-->
<#if submissionErrors?has_content>
<#if personLabelDisplayValue?has_content >
<#assign personLabelValue = personLabelDisplayValue />
</#if>
<section id="error-alert" role="alert">
<img src="${urls.images}/iconAlert.png" width="24" height="24" alert="${i18n().error_alert_icon}" />
<p>
<#--below shows examples of both printing out all error messages and checking the error message for a specific field-->
<#list submissionErrors?keys as errorFieldName>
<#if errorFieldName == "startField">
<#if submissionErrors[errorFieldName]?contains("before")>
${i18n().start_year_must_precede_end}
<#else>
${submissionErrors[errorFieldName]}
</#if>
<br />
<#elseif errorFieldName == "endField">
<#if submissionErrors[errorFieldName]?contains("after")>
${i18n().end_year_must_be_later}
<#else>
${submissionErrors[errorFieldName]}
</#if>
</#if>
</#list>
<#--Checking if Person Type field is empty-->
<#if lvf.submissionErrorExists(editSubmission, "personType")>
${i18n().select_person_type}
</#if>
<#--Checking if Person Name field is empty-->
<#if lvf.submissionErrorExists(editSubmission, "personLabel")>
${i18n().select_an_person_name}
</#if>
<#--Checking if Training Type field is empty-->
<#if lvf.submissionErrorExists(editSubmission, "trainingType")>
${i18n().select_educational_training_value}<br />
</#if>
</p>
</section>
</#if>
<@lvf.unsupportedBrowser urls.base />
<section id="organizationForTraining" role="region">
<form id="organizationForTraining" class="customForm noIE67" action="${submitUrl}" role="add/edit organizational training">
<p >
<label for="person">${i18n().person_capitalized}: ${i18n().last_name} ${requiredHint}<span style="padding-left:322px">${i18n().first_name} ${requiredHint}</span></label>
<input class="acSelector" size="50" type="text" acGroupName="person" id="person" name="personLabel" value="${personLabelValue}" >
<input type="text" size="50" id="maskLabelBuilding" name="maskLabelBuilding" value="" style="display:none" >
<input size="30" type="text" id="firstName" name="firstName" value="${firstNameValue}" ><br />
<input type="hidden" id="lastName" name="lastName" value="">
<input class="display" type="hidden" acGroupName="person" id="personDisplay" name="personLabelDisplay" value="${personLabelDisplayValue}" >
</p>
<div class="acSelection" acGroupName="person">
<p class="inline">
<label>${i18n().selected_person}:</label>
<span class="acSelectionInfo"></span>
<a href="" class="verifyMatch" title="${i18n().verify_match_capitalized}">(${i18n().verify_match_capitalized}</a> ${i18n().or}
<a href="#" class="changeSelection" id="changeSelection">${i18n().change_selection})</a>
</p>
<input class="acUriReceiver" type="hidden" id="personUri" name="existingPerson" value="${existingPersonValue}" ${flagClearLabelForExisting}="true" />
</div>
<label for="positionType">${i18n().educational_training_type} ${requiredHint}</label>
<#assign trainingTypeOpts = editConfiguration.pageData.trainingType />
<select name="trainingType" style="margin-top:-2px" >
<option value="" <#if trainingTypeValue == "">selected</#if>>${i18n().select_one}</option>
<#list trainingTypeOpts?keys as key>
<option value="${key}" <#if trainingTypeValue == key>selected</#if>><#if trainingTypeOpts[key] == "Other">${i18n().academic_studies_or_other}<#else>${trainingTypeOpts[key]}</#if></option>
</#list>
</select>
<p>
<label for="dept">${i18n().dept_or_school_name} ${i18n().person_capitalized}</label>
<input size="50" type="text" id="dept" name="dept" value="${deptValue}" />
</p>
<div class="entry">
<label for="degreeUri">${i18n().degree}</label>
<#assign degreeOpts = editConfiguration.pageData.degreeType />
<select name="degreeType" id="degreeUri" >
<option value="" <#if degreeValue = "">selected</#if>>${i18n().select_one}</option>
<#list degreeOpts?keys as key>
<option value="${key}" <#if degreeValue = key>selected</#if>>${degreeOpts[key]}</option>
</#list>
</select>
<input type="hidden" id="awardedDegreeLabel" name="awardedDegreeLabel" value=""/>
</div>
<p>
<label for="majorField">${i18n().major_field}</label>
<input type="text" id="majorField" name="majorField" size="30" value="${majorFieldValue}"/>
</p>
<p>
<label for="info">${i18n().supplemental_information}
<span class="hint">&nbsp;${i18n().supplemental_information_hint}</span>
</label>
<input size="60" type="text" id="info" name="info" value="${infoValue}" />
</p>
<p></p>
<#--Need to draw edit elements for dates here-->
<#if htmlForElements?keys?seq_contains("startField")>
<label class="dateTime" for="startField">${i18n().start_capitalized}</label>
${htmlForElements["startField"]} ${yearHint}
</#if>
<p></p>
<#if htmlForElements?keys?seq_contains("endField")>
<label class="dateTime" for="endField">${i18n().end_capitalized}</label>
${htmlForElements["endField"]} ${yearHint}
</#if>
<#--End draw elements-->
<input type="hidden" id="editKey" name="editKey" value="${editKey}"/>
<p class="submit">
<input type="submit" id="submit" value="${submitButtonText}"/><span class="or"> ${i18n().or} </span>
<a class="cancel" href="${cancelUrl}" title="${i18n().cancel_title}">${i18n().cancel_link}</a>
</p>
<p id="requiredLegend" class="requiredHint">* ${i18n().required_fields}</p>
</form>
<script type="text/javascript">
var customFormData = {
acUrl: '${urls.base}/autocomplete?tokenize=true&stem=true',
editMode: '${editMode}',
acTypes: {person: 'http://xmlns.com/foaf/0.1/Person'},
defaultTypeName: 'person',
baseHref: '${urls.base}/individual?uri=',
blankSentinel: '${blankSentinel}',
flagClearLabelForExisting: '${flagClearLabelForExisting}',
subjectName: '${editConfiguration.subjectName}'
};
var i18nStrings = {
selectAnExisting: '${i18n().select_an_existing}',
orCreateNewOne: '${i18n().or_create_new_one}',
selectedString: '${i18n().selected}'
};
$(document).ready(function() {
orgForTrainingUtils.onLoad('${blankSentinel}');
});
</script>
</section>
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/js/jquery-ui/css/smoothness/jquery-ui-1.8.9.custom.css" />')}
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/templates/freemarker/edit/forms/css/customForm.css" />')}
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/templates/freemarker/edit/forms/css/customFormWithAutocomplete.css" />')}
${scripts.add('<script type="text/javascript" src="${urls.base}/js/jquery-ui/js/jquery-ui-1.8.9.custom.min.js"></script>',
'<script type="text/javascript" src="${urls.base}/js/customFormUtils.js"></script>',
'<script type="text/javascript" src="${urls.base}/js/extensions/String.js"></script>',
'<script type="text/javascript" src="${urls.base}/js/browserUtils.js"></script>',
'<script type="text/javascript" src="${urls.base}/js/jquery_plugins/jquery.bgiframe.pack.js"></script>',
'<script type="text/javascript" src="${urls.base}/templates/freemarker/edit/forms/js/organizationForTrainingUtils.js"></script>',
'<script type="text/javascript" src="${urls.base}/templates/freemarker/edit/forms/js/customFormWithAutocomplete.js"></script>')}

View file

@ -319,6 +319,21 @@ local:educationalTrainingConfig a :ObjectPropertyDisplayConfig ;
vitro:customEntryFormAnnot "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.PersonHasEducationalTraining"^^<http://www.w3.org/2001/XMLSchema#string> ; vitro:customEntryFormAnnot "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.PersonHasEducationalTraining"^^<http://www.w3.org/2001/XMLSchema#string> ;
:propertyGroup <http://vivoweb.org/ontology#vitroPropertyGroupbiography> . :propertyGroup <http://vivoweb.org/ontology#vitroPropertyGroupbiography> .
local:organizationForTrainingContext a :ConfigContext ;
:hasConfiguration local:organizationForTrainingConfig ;
:configContextFor <http://purl.obolibrary.org/obo/RO_0000056> ;
:qualifiedByDomain <http://xmlns.com/foaf/0.1/Organization> ;
:qualifiedBy <http://vivoweb.org/ontology/core#EducationalProcess> .
local:organizationForTrainingConfig a :ObjectPropertyDisplayConfig ;
:listViewConfigFile "listViewConfig-organizationForTraining.xml"^^xsd:string ;
:displayName "organization for training" ;
vitro:displayRankAnnot 1;
vitro:hiddenFromDisplayBelowRoleLevelAnnot role:public ;
vitro:prohibitedFromUpdateBelowRoleLevelAnnot role:public ;
vitro:customEntryFormAnnot "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.OrganizationForTrainingGenerator"^^<http://www.w3.org/2001/XMLSchema#string> ;
:propertyGroup <http://vivoweb.org/ontology#vitroPropertyGroupother> .
local:adviseeRoleContext a :ConfigContext ; local:adviseeRoleContext a :ConfigContext ;
:hasConfiguration local:adviseeRoleConfig ; :hasConfiguration local:adviseeRoleConfig ;
:configContextFor <http://purl.obolibrary.org/obo/RO_0000053> ; :configContextFor <http://purl.obolibrary.org/obo/RO_0000053> ;
@ -556,14 +571,14 @@ local:primaryEmailConfig a :ObjectPropertyDisplayConfig ;
vitro:customEntryFormAnnot "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.PersonHasEmailGenerator"^^<http://www.w3.org/2001/XMLSchema#string> ; vitro:customEntryFormAnnot "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.PersonHasEmailGenerator"^^<http://www.w3.org/2001/XMLSchema#string> ;
:propertyGroup <http://vivoweb.org/ontology#vitroPropertyGroupaddress> . :propertyGroup <http://vivoweb.org/ontology#vitroPropertyGroupaddress> .
local:webpageContext a :ConfigContext ; local:webpagePersonContext a :ConfigContext ;
:hasConfiguration local:webpageConfig ; :hasConfiguration local:webpagePersonConfig ;
:configContextFor <http://purl.obolibrary.org/obo/ARG_2000028> ; :configContextFor <http://purl.obolibrary.org/obo/ARG_2000028> ;
:qualifiedByDomain <http://xmlns.com/foaf/0.1/Person> ; :qualifiedByDomain <http://xmlns.com/foaf/0.1/Person> ;
:qualifiedByRoot <http://www.w3.org/2006/vcard/ns#Kind> ; :qualifiedByRoot <http://www.w3.org/2006/vcard/ns#Kind> ;
:qualifiedBy <http://www.w3.org/2006/vcard/ns#URL> . :qualifiedBy <http://www.w3.org/2006/vcard/ns#URL> .
local:webpageConfig a :ObjectPropertyDisplayConfig ; local:webpagePersonConfig a :ObjectPropertyDisplayConfig ;
:listViewConfigFile "listViewConfig-webpage.xml"^^xsd:string ; :listViewConfigFile "listViewConfig-webpage.xml"^^xsd:string ;
:displayName "webpage" ; :displayName "webpage" ;
vitro:displayRankAnnot 40; vitro:displayRankAnnot 40;
@ -572,14 +587,46 @@ local:webpageConfig a :ObjectPropertyDisplayConfig ;
vitro:customEntryFormAnnot "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.ManageWebpagesForIndividualGenerator"^^<http://www.w3.org/2001/XMLSchema#string> ; vitro:customEntryFormAnnot "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.ManageWebpagesForIndividualGenerator"^^<http://www.w3.org/2001/XMLSchema#string> ;
:propertyGroup <http://vivoweb.org/ontology#vitroPropertyGroupaddress> . :propertyGroup <http://vivoweb.org/ontology#vitroPropertyGroupaddress> .
local:webpageContext a :ConfigContext ; local:webpageOrgContext a :ConfigContext ;
:hasConfiguration local:webpageConfig ; :hasConfiguration local:webpageOrgConfig ;
:configContextFor <http://purl.obolibrary.org/obo/ARG_2000028> ; :configContextFor <http://purl.obolibrary.org/obo/ARG_2000028> ;
:qualifiedByDomain <http://xmlns.com/foaf/0.1/Organization> ; :qualifiedByDomain <http://xmlns.com/foaf/0.1/Organization> ;
:qualifiedByRoot <http://www.w3.org/2006/vcard/ns#Kind> ; :qualifiedByRoot <http://www.w3.org/2006/vcard/ns#Kind> ;
:qualifiedBy <http://www.w3.org/2006/vcard/ns#URL> . :qualifiedBy <http://www.w3.org/2006/vcard/ns#URL> .
local:webpageConfig a :ObjectPropertyDisplayConfig ; local:webpageOrgConfig a :ObjectPropertyDisplayConfig ;
:listViewConfigFile "listViewConfig-webpage.xml"^^xsd:string ;
:displayName "webpage" ;
vitro:displayRankAnnot 40;
vitro:hiddenFromDisplayBelowRoleLevelAnnot role:public ;
vitro:prohibitedFromUpdateBelowRoleLevelAnnot role:public ;
vitro:customEntryFormAnnot "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.ManageWebpagesForIndividualGenerator"^^<http://www.w3.org/2001/XMLSchema#string> ;
:propertyGroup <http://vivoweb.org/ontology#vitroPropertyGroupother> .
local:webpageInfoContext a :ConfigContext ;
:hasConfiguration local:webpageInfoConfig ;
:configContextFor <http://purl.obolibrary.org/obo/ARG_2000028> ;
:qualifiedByDomain <http://purl.obolibrary.org/obo/IAO_0000030> ;
:qualifiedByRoot <http://www.w3.org/2006/vcard/ns#Kind> ;
:qualifiedBy <http://www.w3.org/2006/vcard/ns#URL> .
local:webpageInfoConfig a :ObjectPropertyDisplayConfig ;
:listViewConfigFile "listViewConfig-webpage.xml"^^xsd:string ;
:displayName "webpage" ;
vitro:displayRankAnnot 40;
vitro:hiddenFromDisplayBelowRoleLevelAnnot role:public ;
vitro:prohibitedFromUpdateBelowRoleLevelAnnot role:public ;
vitro:customEntryFormAnnot "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.ManageWebpagesForIndividualGenerator"^^<http://www.w3.org/2001/XMLSchema#string> ;
:propertyGroup <http://vivoweb.org/ontology#vitroPropertyGroupother> .
local:webpageEventContext a :ConfigContext ;
:hasConfiguration local:webpageEventConfig ;
:configContextFor <http://purl.obolibrary.org/obo/ARG_2000028> ;
:qualifiedByDomain <http://purl.org/NET/c4dm/event.owl#Event> ;
:qualifiedByRoot <http://www.w3.org/2006/vcard/ns#Kind> ;
:qualifiedBy <http://www.w3.org/2006/vcard/ns#URL> .
local:webpageEventConfig a :ObjectPropertyDisplayConfig ;
:listViewConfigFile "listViewConfig-webpage.xml"^^xsd:string ; :listViewConfigFile "listViewConfig-webpage.xml"^^xsd:string ;
:displayName "webpage" ; :displayName "webpage" ;
vitro:displayRankAnnot 40; vitro:displayRankAnnot 40;

View file

@ -15,45 +15,6 @@
xmlns:rdfs="&rdfs;" xmlns:rdfs="&rdfs;"
xmlns:vitro="&vitro;"> xmlns:vitro="&vitro;">
<rdf:Description rdf:about="http://vivoweb.org/ontology/core#authorInAuthorship">
<display:listViewConfigFile rdf:datatype="http://www.w3.org/2001/XMLSchema#string">listViewConfig-authorInAuthorship.xml</display:listViewConfigFile>
</rdf:Description>
<rdf:Description rdf:about="http://vivoweb.org/ontology/core#educationalTraining">
<display:listViewConfigFile rdf:datatype="http://www.w3.org/2001/XMLSchema#string">listViewConfig-educationalTraining.xml</display:listViewConfigFile>
</rdf:Description>
<rdf:Description rdf:about="http://vivoweb.org/ontology/core#informationResourceInAuthorship">
<display:listViewConfigFile rdf:datatype="http://www.w3.org/2001/XMLSchema#string">listViewConfig-informationResourceInAuthorship.xml</display:listViewConfigFile>
</rdf:Description>
<rdf:Description rdf:about="http://vivoweb.org/ontology/core#personInPosition">
<display:listViewConfigFile rdf:datatype="http://www.w3.org/2001/XMLSchema#string">listViewConfig-personInPosition.xml</display:listViewConfigFile>
</rdf:Description>
<rdf:Description rdf:about="http://vivoweb.org/ontology/core#organizationForPosition">
<display:listViewConfigFile rdf:datatype="http://www.w3.org/2001/XMLSchema#string">listViewConfig-organizationForPosition.xml</display:listViewConfigFile>
</rdf:Description>
<rdf:Description rdf:about="http://vivoweb.org/ontology/core#organizationForTraining">
<display:listViewConfigFile rdf:datatype="http://www.w3.org/2001/XMLSchema#string">listViewConfig-organizationForTraining.xml</display:listViewConfigFile>
</rdf:Description>
<rdf:Description rdf:about="http://vivoweb.org/ontology/core#mailingAddress">
<display:listViewConfigFile rdf:datatype="http://www.w3.org/2001/XMLSchema#string">listViewConfig-mailingAddress.xml</display:listViewConfigFile>
</rdf:Description>
<rdf:Description rdf:about="http://vivoweb.org/ontology/core#awardOrHonor">
<display:listViewConfigFile rdf:datatype="http://www.w3.org/2001/XMLSchema#string">listViewConfig-awardOrHonor.xml</display:listViewConfigFile>
</rdf:Description>
<rdf:Description rdf:about="http://vivoweb.org/ontology/core#advisorIn">
<display:listViewConfigFile rdf:datatype="http://www.w3.org/2001/XMLSchema#string">listViewConfig-advisorIn.xml</display:listViewConfigFile>
</rdf:Description>
<rdf:Description rdf:about="http://vivoweb.org/ontology/core#hasRole">
<display:listViewConfigFile rdf:datatype="http://www.w3.org/2001/XMLSchema#string">listViewConfig-hasRole.xml</display:listViewConfigFile>
</rdf:Description>
<rdf:Description rdf:about="http://vivoweb.org/ontology/core#researchAreaOf"> <rdf:Description rdf:about="http://vivoweb.org/ontology/core#researchAreaOf">
<display:listViewConfigFile rdf:datatype="http://www.w3.org/2001/XMLSchema#string">listViewConfig-researchAreaOf.xml</display:listViewConfigFile> <display:listViewConfigFile rdf:datatype="http://www.w3.org/2001/XMLSchema#string">listViewConfig-researchAreaOf.xml</display:listViewConfigFile>
</rdf:Description> </rdf:Description>

View file

@ -31,17 +31,6 @@ Custom form for adding or editing a webpage associated with an individual. The p
ManageWebpagesForIndividual, should forward to this page if: (a) we are adding a new page, or ManageWebpagesForIndividual, should forward to this page if: (a) we are adding a new page, or
(b) an edit link in the Manage Webpages view has been clicked. But right now (a) is not implemented. (b) an edit link in the Manage Webpages view has been clicked. But right now (a) is not implemented.
Object properties:
core:webpage (range: core:URLLink)
core:webpageOf (domain: core:URLLink) (inverse of core:webpage)
Class:
core:URLLink - the link to be added to the individual
Data properties of core:URLLink:
core:linkUrlPredicate
core:linkAnchorText
core:rank
*/ */
public class AddEditWebpageFormGenerator extends BaseEditConfigurationGenerator implements EditConfigurationGenerator { public class AddEditWebpageFormGenerator extends BaseEditConfigurationGenerator implements EditConfigurationGenerator {

View file

@ -39,12 +39,6 @@ import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils;
* Custom form for adding a grant to an person for the predicates hasCo-PrincipalInvestigatorRole * Custom form for adding a grant to an person for the predicates hasCo-PrincipalInvestigatorRole
and hasPrincipalInvestigatorRole. and hasPrincipalInvestigatorRole.
This is intended to create a set of statements like:
?person core:hasPrincipalInvestigatorRole ?newRole.
?newRole rdf:type core:PrincipalInvestigatorRole ;
core:relatedRole ?someGrant .
* *
*/ */
public class AddGrantRoleToPersonGenerator implements EditConfigurationGenerator { public class AddGrantRoleToPersonGenerator implements EditConfigurationGenerator {
@ -664,12 +658,12 @@ public class AddGrantRoleToPersonGenerator implements EditConfigurationGenerator
//Some values will have a default value //Some values will have a default value
//grantToRolePredicate //grantToRolePredicate
public String getDefaultgrantToRolePredicate() { public String getDefaultgrantToRolePredicate() {
return "http://vivoweb.org/ontology/core#relatedRole"; return "http://vivoweb.org/ontology/core#relates";
} }
//roleToGrantPredicate //roleToGrantPredicate
public String getDefaultroleToGrantPredicate() { public String getDefaultroleToGrantPredicate() {
return "http://vivoweb.org/ontology/core#roleIn"; return "http://purl.obolibrary.org/obo/BFO_0000054";
} }

View file

@ -351,28 +351,28 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
return "@prefix vivo: <" + vivoCore + "> . \n" + return "@prefix vivo: <" + vivoCore + "> . \n" +
"?pubUri <" + presentedAtPred + "> ?newConference . \n" + "?pubUri <" + presentedAtPred + "> ?newConference . \n" +
"?newConference a <" + conferenceClass + "> . \n" + "?newConference a <" + conferenceClass + "> . \n" +
"?newConference vivo:includesEvent ?pubUri . \n" + "?newConference <http://purl.obolibrary.org/obo/BFO_0000051> ?pubUri . \n" +
"?newConference <" + label + "> ?conference ."; "?newConference <" + label + "> ?conference .";
} }
private String getN3ForConference() { private String getN3ForConference() {
return "@prefix vivo: <" + vivoCore + "> . \n" + return "@prefix vivo: <" + vivoCore + "> . \n" +
"?pubUri <" + presentedAtPred + "> ?conferenceUri . \n" + "?pubUri <" + presentedAtPred + "> ?conferenceUri . \n" +
"?conferenceUri vivo:includesEvent ?pubUri . "; "?conferenceUri <http://purl.obolibrary.org/obo/BFO_0000051> ?pubUri . ";
} }
private String getN3ForNewConferenceNewPub() { private String getN3ForNewConferenceNewPub() {
return "@prefix vivo: <" + vivoCore + "> . \n" + return "@prefix vivo: <" + vivoCore + "> . \n" +
"?newPublication <" + presentedAtPred + "> ?newConference . \n" + "?newPublication <" + presentedAtPred + "> ?newConference . \n" +
"?newConference a <" + conferenceClass + "> . \n" + "?newConference a <" + conferenceClass + "> . \n" +
"?newConference vivo:includesEvent ?newPublication . \n" + "?newConference <http://purl.obolibrary.org/obo/BFO_0000051> ?newPublication . \n" +
"?newConference <" + label + "> ?conference ."; "?newConference <" + label + "> ?conference .";
} }
private String getN3ForConferenceNewPub() { private String getN3ForConferenceNewPub() {
return "@prefix vivo: <" + vivoCore + "> . \n" + return "@prefix vivo: <" + vivoCore + "> . \n" +
"?newPublication <" + presentedAtPred + "> ?conferenceUri . \n" + "?newPublication <" + presentedAtPred + "> ?conferenceUri . \n" +
"?conferenceUri vivo:includesEvent ?newPublication . "; "?conferenceUri <http://purl.obolibrary.org/obo/BFO_0000051> ?newPublication . ";
} }
private String getN3ForNewEvent() { private String getN3ForNewEvent() {
@ -911,7 +911,7 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
literalOptions.add(list("http://purl.org/ontology/bibo/Report", "Report")); literalOptions.add(list("http://purl.org/ontology/bibo/Report", "Report"));
literalOptions.add(list("http://vivoweb.org/ontology/core#ResearchProposal", "Research Proposal")); literalOptions.add(list("http://vivoweb.org/ontology/core#ResearchProposal", "Research Proposal"));
literalOptions.add(list("http://vivoweb.org/ontology/core#Review", "Review")); literalOptions.add(list("http://vivoweb.org/ontology/core#Review", "Review"));
literalOptions.add(list("http://vivoweb.org/ontology/core#Software", "Software")); literalOptions.add(list("http://purl.obolibrary.org/obo/ERO_0000071 ", "Software"));
literalOptions.add(list("http://vivoweb.org/ontology/core#Speech", "Speech")); literalOptions.add(list("http://vivoweb.org/ontology/core#Speech", "Speech"));
literalOptions.add(list("http://purl.org/ontology/bibo/Thesis", "Thesis")); literalOptions.add(list("http://purl.org/ontology/bibo/Thesis", "Thesis"));
literalOptions.add(list("http://vivoweb.org/ontology/core#Video", "Video")); literalOptions.add(list("http://vivoweb.org/ontology/core#Video", "Video"));
@ -941,7 +941,7 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
} }
public EditMode getEditMode(VitroRequest vreq) { public EditMode getEditMode(VitroRequest vreq) {
return EditModeUtils.getEditMode(vreq, list("http://vivoweb.org/ontology/core#linkedInformationResource")); return EditModeUtils.getEditMode(vreq, list("http://vivoweb.org/ontology/core#relates"));
} }
} }

View file

@ -0,0 +1,388 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpSession;
import com.hp.hpl.jena.vocabulary.XSD;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.DateTimeIntervalValidationVTwo;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.DateTimeWithPrecisionVTwo;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ChildVClassesOptions;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ChildVClassesWithParent;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.IndividualsViaVClassOptions;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.AntiXssValidation;
import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils.EditMode;
import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils;
public class OrganizationForTrainingGenerator extends VivoBaseGenerator implements EditConfigurationGenerator{
//TODO: can we get rid of the session and get it form the vreq?
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) throws Exception {
EditConfigurationVTwo conf = new EditConfigurationVTwo();
initBasics(conf, vreq);
initPropertyParameters(vreq, session, conf);
initObjectPropForm(conf, vreq);
conf.setTemplate("organizationForTraining.ftl");
conf.setVarNameForSubject("organization");
conf.setVarNameForPredicate("predicate");
conf.setVarNameForObject("edTraining");
conf.setN3Required( Arrays.asList( n3ForNewEdTraining, trainingTypeAssertion ) );
conf.setN3Optional(Arrays.asList( majorFieldAssertion, n3ForAwardedDegree, n3ForNewPersonanization, n3ForExistingPersonanization,
n3ForNewPersonAwardedDegree, n3ForExistingPersonAwardedDegree, deptAssertion, infoAssertion, n3ForStart, n3ForEnd ));
conf.addNewResource("edTraining", DEFAULT_NS_FOR_NEW_RESOURCE);
conf.addNewResource("awardedDegree",DEFAULT_NS_FOR_NEW_RESOURCE);
conf.addNewResource("newPerson",DEFAULT_NS_FOR_NEW_RESOURCE);
conf.addNewResource("intervalNode",DEFAULT_NS_FOR_NEW_RESOURCE);
conf.addNewResource("startNode",DEFAULT_NS_FOR_NEW_RESOURCE);
conf.addNewResource("endNode",DEFAULT_NS_FOR_NEW_RESOURCE);
conf.addNewResource("vcardPerson", DEFAULT_NS_FOR_NEW_RESOURCE);
conf.addNewResource("vcardName", DEFAULT_NS_FOR_NEW_RESOURCE);
//uris in scope: none
//literals in scope: none
conf.setUrisOnform( Arrays.asList( "existingPerson", "personType", "degreeType", "trainingType"));
conf.setLiteralsOnForm( Arrays.asList("personLabel", "personLabelDisplay", "awardedDegreeLabel",
"majorField", "dept", "info", "firstName", "lastName"));
conf.addSparqlForExistingLiteral("personLabel", personLabelQuery);
conf.addSparqlForExistingLiteral("majorField", majorFieldQuery);
conf.addSparqlForExistingLiteral("dept", deptQuery);
conf.addSparqlForExistingLiteral("info", infoQuery);
conf.addSparqlForExistingLiteral("startField-value", existingStartDateQuery);
conf.addSparqlForExistingLiteral("endField-value", existingEndDateQuery);
conf.addSparqlForExistingUris("awardedDegree", existingAwardedDegreeQuery);
conf.addSparqlForExistingUris("existingPerson", existingPersonQuery);
// conf.addSparqlForExistingUris("personType", personTypeQuery);
conf.addSparqlForExistingUris("trainingType", trainingTypeQuery);
conf.addSparqlForExistingUris("degreeType", degreeTypeQuery);
conf.addSparqlForExistingUris("intervalNode",existingIntervalNodeQuery);
conf.addSparqlForExistingUris("startNode", existingStartNodeQuery);
conf.addSparqlForExistingUris("endNode", existingEndNodeQuery);
conf.addSparqlForExistingUris("startField-precision", existingStartPrecisionQuery);
conf.addSparqlForExistingUris("endField-precision", existingEndPrecisionQuery);
//Add sparql to include inverse property as well
conf.addSparqlForAdditionalUrisInScope("inverseTrainingAtPerson", inverseTrainingAtPersonQuery);
conf.addField( new FieldVTwo().
setName("degreeType").
setOptions( new IndividualsViaVClassOptions(
degreeTypeClass)));
conf.addField( new FieldVTwo().
setName("majorField").
setRangeDatatypeUri( XSD.xstring.toString() ).
setValidators(list("datatype:" + XSD.xstring.toString())));
conf.addField( new FieldVTwo().
setName("existingPerson")
//options will be added in browser by auto complete JS
);
conf.addField( new FieldVTwo().
setName("awardedDegree")
//options will be added in browser by auto complete JS
);
conf.addField( new FieldVTwo().
setName("personLabel").
setRangeDatatypeUri(XSD.xstring.toString() ).
setValidators( list("datatype:" + XSD.xstring.toString())));
conf.addField( new FieldVTwo().
setName("awardedDegreeLabel").
setRangeDatatypeUri(XSD.xstring.toString() ).
setValidators( list("datatype:" + XSD.xstring.toString())));
conf.addField( new FieldVTwo().
setName("existingAwardedDegreeLabel").
setRangeDatatypeUri(XSD.xstring.toString() ).
setValidators( list("datatype:" + XSD.xstring.toString())));
conf.addField( new FieldVTwo().
setName("personLabelDisplay").
setRangeDatatypeUri(XSD.xstring.toString() ));
conf.addField( new FieldVTwo().
setName("firstName").
setRangeDatatypeUri(XSD.xstring.toString() ).
setValidators( list("datatype:" + XSD.xstring.toString()) )
);
conf.addField( new FieldVTwo().
setName("lastName").
setRangeDatatypeUri(XSD.xstring.toString() ).
setValidators( list("datatype:" + XSD.xstring.toString()) )
);
conf.addField( new FieldVTwo().
setName("trainingType").
setValidators( list("nonempty") ).
setOptions(
new ChildVClassesWithParent(edProcessClass)));
conf.addField( new FieldVTwo().
setName("dept").
setRangeDatatypeUri( XSD.xstring.toString() ).
setValidators(list("datatype:" + XSD.xstring.toString())));
conf.addField( new FieldVTwo().
setName("info").
setRangeDatatypeUri( XSD.xstring.toString() ).
setValidators(list("datatype:" + XSD.xstring.toString())));
FieldVTwo startField = new FieldVTwo().
setName("startField");
conf.addField(startField.
setEditElement(
new DateTimeWithPrecisionVTwo(startField,
VitroVocabulary.Precision.YEAR.uri(),
VitroVocabulary.Precision.NONE.uri())));
FieldVTwo endField = new FieldVTwo().
setName("endField");
conf.addField( endField.
setEditElement(
new DateTimeWithPrecisionVTwo(endField,
VitroVocabulary.Precision.YEAR.uri(),
VitroVocabulary.Precision.NONE.uri())));
//Add validator
conf.addValidator(new DateTimeIntervalValidationVTwo("startField","endField"));
conf.addValidator(new AntiXssValidation());
//Adding additional data, specifically edit mode
addFormSpecificData(conf, vreq);
prepare(vreq, conf);
return conf;
}
/* N3 assertions for working with educational training */
final static String n3ForNewEdTraining =
"@prefix core: <"+ vivoCore +"> .\n"+
"?organization <http://purl.obolibrary.person/obo/RO_0000056> ?edTraining .\n" +
"?edTraining a core:EducationalProcess .\n" +
"?edTraining <http://purl.obolibrary.person/obo/RO_0000057> ?organization .";
final static String trainingTypeAssertion =
"?edTraining a ?trainingType .";
final static String n3ForAwardedDegree =
"@prefix core: <"+ vivoCore +"> .\n"+
"?edTraining <http://purl.obolibrary.person/obo/RO_0002234> ?awardedDegree . \n" +
"?awardedDegree <http://purl.obolibrary.person/obo/RO_0002353> ?edTraining . \n" +
"?awardedDegree <http://vivoweb.person/ontology/core#assignedBy> ?organization . \n" +
"?organization <http://vivoweb.person/ontology/core#assigns> ?awardedDegree . \n" +
"?awardedDegree <"+ label +"> ?awardedDegreeLabel . \n" +
"?awardedDegree <http://vivoweb.person/ontology/core#relates> ?degreeType .\n"+
"?degreeType <http://vivoweb.person/ontology/core#relatedBy> ?awardedDegree . \n"+
"?awardedDegree a core:AwardedDegree .";
final static String n3ForNewPersonanization =
"?edTraining <http://purl.obolibrary.person/obo/RO_0000057> ?newPerson . \n" +
"?newPerson <http://purl.obolibrary.person/obo/RO_0000056> ?edTraining . \n" +
"?newPerson a <http://xmlns.com/foaf/0.1/Person> . \n" +
"?newPerson <"+ label +"> ?personLabel . ";
final static String n3ForExistingPersonanization =
"?edTraining <http://purl.obolibrary.person/obo/RO_0000057> ?existingPerson . \n" +
"?existingPerson <http://purl.obolibrary.person/obo/RO_0000056> ?edTraining . \n" +
"?existingPerson a ?personType . ";
final static String n3ForNewPersonAwardedDegree =
"?awardedDegree <http://vivoweb.person/ontology/core#relates> ?newPerson . \n" +
"?newPerson <http://vivoweb.person/ontology/core#releatedBy> ?awardedDegree . \n" +
"?newPerson a <http://xmlns.com/foaf/0.1/Person> . \n" +
"?awardedDegree <"+ label +"> ?awardedDegreeLabel . \n" +
"?newPerson <"+ label +"> ?personLabel . ";
final static String firstNameAssertion =
"@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . \n" +
"?newPerson <http://purl.obolibrary.org/obo/ARG_2000028> ?vcardPerson . \n" +
"?vcardPerson <http://purl.obolibrary.org/obo/ARG_2000029> ?newPerson . \n" +
"?vcardPerson a <http://www.w3.org/2006/vcard/ns#Individual> . \n" +
"?vcardPerson vcard:hasName ?vcardName . \n" +
"?vcardName a <http://www.w3.org/2006/vcard/ns#Name> . \n" +
"?vcardName vcard:givenName ?firstName .";
final static String lastNameAssertion =
"@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . \n" +
"?newPerson <http://purl.obolibrary.org/obo/ARG_2000028> ?vcardPerson . \n" +
"?vcardPerson <http://purl.obolibrary.org/obo/ARG_2000029> ?newPerson . \n" +
"?vcardPerson a <http://www.w3.org/2006/vcard/ns#Individual> . \n" +
"?vcardPerson vcard:hasName ?vcardName . \n" +
"?vcardName a <http://www.w3.org/2006/vcard/ns#Name> . \n" +
"?vcardName vcard:familyName ?lastName .";
final static String n3ForExistingPersonAwardedDegree =
"?awardedDegree <http://vivoweb.person/ontology/core#relates> ?existingPerson . \n" +
"?existingPerson <http://vivoweb.person/ontology/core#relatedBy> ?awardedDegree . \n" +
"?awardedDegree <"+ label +"> ?awardedDegreeLabel . \n" +
"?existingPerson a <http://xmlns.com/foaf/0.1/Person> . ";
final static String majorFieldAssertion =
"?edTraining <"+ majorFieldPred +"> ?majorField .";
final static String n3ForStart =
"?edTraining <"+ toInterval +"> ?intervalNode .\n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToStart +"> ?startNode .\n"+
"?startNode <"+ type +"> <"+ dateTimeValueType +"> .\n"+
"?startNode <"+ dateTimeValue +"> ?startField-value .\n"+
"?startNode <"+ dateTimePrecision +"> ?startField-precision .";
final static String n3ForEnd =
"?edTraining <"+ toInterval +"> ?intervalNode . \n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToEnd +"> ?endNode .\n"+
"?endNode <"+ type +"> <"+ dateTimeValueType +"> .\n"+
"?endNode <"+ dateTimeValue +"> ?endField-value .\n"+
"?endNode <"+ dateTimePrecision +"> ?endField-precision .";
final static String deptAssertion =
"?edTraining <"+ deptPred +"> ?dept .";
final static String infoAssertion =
"?edTraining <"+ infoPred +"> ?info .";
/* Queries for editing an existing educational training entry */
final static String existingAwardedDegreeQuery =
"SELECT ?existingAwardedDegree WHERE {\n"+
"?edTraining <http://purl.obolibrary.person/obo/RO_0002234> ?existingAwardedDegree . }\n";
final static String existingAwardedDegreeLabelQuery =
"SELECT ?existingAwardedDegreeLabel WHERE {\n"+
"?edTraining <http://purl.obolibrary.person/obo/RO_0002234> ?existingAwardedDegree . \n" +
"?existingAwardedDegree <"+ label +"> ?existingAwardedDegreeLabel }\n";
final static String existingPersonQuery =
"PREFIX rdfs: <"+ rdfs +"> \n"+
"SELECT ?existingPerson WHERE {\n"+
"?edTraining <http://purl.obolibrary.person/obo/RO_0000057> ?existingPerson . \n" +
"?existingPerson <http://purl.obolibrary.person/obo/RO_0000056> ?edTraining . \n" +
"?existingPerson a <http://xmlns.com/foaf/0.1/Person> . \n " +
" }";
final static String personLabelQuery =
"PREFIX rdfs: <"+ rdfs +"> \n"+
"SELECT ?existingPersonLabel WHERE {\n"+
"?edTraining <http://purl.obolibrary.person/obo/RO_0000057> ?existingPerson . \n" +
"?existingPerson <http://purl.obolibrary.person/obo/RO_0000056> ?edTraining .\n"+
"?existingPerson <"+ label +"> ?existingPersonLabel .\n"+
"?existingPerson a <http://xmlns.com/foaf/0.1/Person> . \n " +
" }";
final static String trainingTypeQuery =
"PREFIX vitro: <" + VitroVocabulary.vitroURI + "> \n" +
"SELECT ?existingTrainingType WHERE { \n" +
" ?edTraining vitro:mostSpecificType ?existingTrainingType . }";
final static String degreeTypeQuery =
"PREFIX core: <"+ vivoCore +"> \n"+
"SELECT ?existingDegreeType WHERE {\n"+
"?edTraining <http://purl.obolibrary.person/obo/RO_0002234> ?existingAwardedDegree . \n"+
"?existingAwardedDegree a core:AwardedDegree . \n"+
"?existingAwardedDegree core:relates ?existingDegreeType . \n" +
"?existingDegreeType a core:AcademicDegree }";
final static String majorFieldQuery =
"SELECT ?existingMajorField WHERE {\n"+
"?edTraining <"+ majorFieldPred +"> ?existingMajorField . }";
final static String deptQuery =
"SELECT ?existingDept WHERE {\n"+
"?edTraining <"+ deptPred +"> ?existingDept . }";
final static String infoQuery =
"SELECT ?existingInfo WHERE {\n"+
"?edTraining <"+ infoPred +"> ?existingInfo . }";
final static String existingIntervalNodeQuery =
"SELECT ?existingIntervalNode WHERE {\n"+
"?edTraining <"+ toInterval +"> ?existingIntervalNode .\n"+
"?existingIntervalNode <"+ type +"> <"+ intervalType +"> . }";
final static String existingStartNodeQuery =
"SELECT ?existingStartNode WHERE {\n"+
"?edTraining <"+ toInterval +"> ?intervalNode .\n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToStart +"> ?existingStartNode . \n"+
"?existingStartNode <"+ type +"> <"+ dateTimeValueType +"> .}";
final static String existingStartDateQuery =
"SELECT ?existingDateStart WHERE {\n"+
"?edTraining <"+ toInterval +"> ?intervalNode .\n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToStart +"> ?startNode .\n"+
"?startNode <"+ type +"> <"+ dateTimeValueType +"> .\n"+
"?startNode <"+ dateTimeValue +"> ?existingDateStart . }";
final static String existingStartPrecisionQuery =
"SELECT ?existingStartPrecision WHERE {\n"+
"?edTraining <"+ toInterval +"> ?intervalNode .\n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToStart +"> ?startNode .\n"+
"?startNode <"+ type +"> <"+ dateTimeValueType +"> . \n"+
"?startNode <"+ dateTimePrecision +"> ?existingStartPrecision . }";
final static String existingEndNodeQuery =
"SELECT ?existingEndNode WHERE { \n"+
"?edTraining <"+ toInterval +"> ?intervalNode .\n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToEnd +"> ?existingEndNode . \n"+
"?existingEndNode <"+ type +"> <"+ dateTimeValueType +"> .}";
final static String existingEndDateQuery =
"SELECT ?existingEndDate WHERE {\n"+
"?edTraining <"+ toInterval +"> ?intervalNode .\n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToEnd +"> ?endNode .\n"+
"?endNode <"+ type +"> <"+ dateTimeValueType +"> .\n"+
"?endNode <"+ dateTimeValue +"> ?existingEndDate . }";
final static String existingEndPrecisionQuery =
"SELECT ?existingEndPrecision WHERE {\n"+
"?edTraining <"+ toInterval +"> ?intervalNode .\n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToEnd +"> ?endNode .\n"+
"?endNode <"+ type +"> <"+ dateTimeValueType +"> .\n"+
"?endNode <"+ dateTimePrecision +"> ?existingEndPrecision . }";
//Query for inverse property
final static String inverseTrainingAtPersonQuery =
"PREFIX owl: <http://www.w3.person/2002/07/owl#>"
+ " SELECT ?inverseTrainingAtPerson "
+ " WHERE { ?inverseTrainingAtPerson owl:inverseOf <http://vivoweb.person/ontology/core#relates> . } ";
//Adding form specific data such as edit mode
public void addFormSpecificData(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
HashMap<String, Object> formSpecificData = new HashMap<String, Object>();
formSpecificData.put("editMode", getEditMode(vreq).name().toLowerCase());
editConfiguration.setFormSpecificData(formSpecificData);
}
public EditMode getEditMode(VitroRequest vreq) {
List<String> predicates = new ArrayList<String>();
predicates.add("http://vivoweb.person/ontology/core#relates");
return EditModeUtils.getEditMode(vreq, predicates);
}
}

View file

@ -27,46 +27,24 @@ import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils;
Form for adding an educational attainment to an individual Form for adding an educational attainment to an individual
Classes: Classes:
core:EducationalTraining - primary new individual being created core:EducationalProcess - primary new individual being created
foaf:Person - existing individual foaf:Person - existing individual
foaf:Organization - new or existing individual foaf:Organization - new or existing individual
core:AcademicdegreeType - existing individual core:AcademicDegree - existing individual
core:AwardedDegree - new or existing individual
Data properties of EducationalTraining:
core:majorField
core:departmentOrSchool
core:supplementalInformation
Object properties (domain : range)
core:educationalTraining (Person : EducationalTraining) - inverse of core:educationalTrainingOf
core:educationalTrainingOf (EducationalTraining : Person) - inverse of core:educationalTraining
core:degreeTypeEarned (EducationalTraining : AcademicdegreeType) - inverse of core:degreeTypeOutcomeOf
core:degreeTypeOutcomeOf (AcademicdegreeType : EducationalTraining) - inverse of core:degreeTypeEarned
core:organizationGrantingdegreeType (EducationalTraining : Organization) - no inverse
Future version
--------------
Classes:
core:DateTimeValue
core:DateTimeValuePrecision
Object properties:
core:dateTimeValue (EducationalTraining : DateTimeValue)
core:dateTimePrecision (DateTimeValue : DateTimeValuePrecision)
There are 4 modes that this form can be in: There are 4 modes that this form can be in:
1. Add, there is a subject and a predicate but no position and nothing else. 1. Add, there is a subject and a predicate but no position and nothing else.
2. normal edit where everything should already be filled out. There is a subject, a object and an individual on 2. normal edit where everything should already be filled out. There is a subject, a object and an individual on
the other end of the object's core:trainingAtOrganization stmt. the other end of the object's relationship.
3. Repair a bad role node. There is a subject, prediate and object but there is no individual on the 3. Repair a bad role node. There is a subject, prediate and object but there is no individual on the
other end of the object's core:trainingAtOrganization stmt. This should be similar to an add but the form should be expanded. other end of the object's relationship. This should be similar to an add but the form should be expanded.
4. Really bad node. multiple core:trainingAtOrganization statements. 4. Really bad node. multiple statements on the other end of the object's relationship.
* @author bdc34 * @author bdc34
* *

View file

@ -68,7 +68,7 @@ public class UtilitiesRequestHandler implements VisualizationRequestHandler {
String filterRule = "?predicate = j.2:mainImage " String filterRule = "?predicate = j.2:mainImage "
+ "|| ?predicate = core:preferredTitle " // + "|| ?predicate = core:preferredTitle "
+ "|| ?predicate = rdfs:label"; + "|| ?predicate = rdfs:label";
QueryRunner<GenericQueryMap> profileQueryHandler = QueryRunner<GenericQueryMap> profileQueryHandler =