Skip to content

Commit 4801716

Browse files
author
Patrick West
committed
Merge pull request #41 from tetherless-world/org-update
Changes to grab new organization
2 parents f18af0a + 5aa68aa commit 4801716

File tree

4 files changed

+53
-56
lines changed

4 files changed

+53
-56
lines changed

html/people.html

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,18 @@ <h5><small>
3939
{{#if network_id}}<div><strong>network ID: </strong><small>{{network_id}}</small></div>{{/if}}
4040

4141
{{#if dcoCommunities}}
42-
<div><strong>Communities:</strong> {{#expand dcoCommunities}}{{commrole}} - <a href="{{community.uri}}" target="_blank">{{community.name}}</a>{{/expand}}</div>
42+
<div><strong>Communities:</strong></div>
43+
<div>{{#list dcoCommunities}}{{commrole}} - <a href="{{community.uri}}" target="_blank">{{community.name}}</a>{{/list}}</div>
4344
{{/if}}
4445

4546
{{#if teams}}
46-
<div><strong>Teams:</strong> {{#expand teams}}{{teamrole}} - <a href="{{team.uri}}" target="_blank">{{team.name}}</a>{{/expand}}</div>
47+
<div><strong>Teams:</strong></div>
48+
<div>{{#list teams}}{{teamrole}} - <a href="{{team.uri}}" target="_blank">{{team.name}}</a>{{/list}}</div>
4749
{{/if}}
4850

49-
{{#if organization}}
50-
<div><strong>Organizations:</strong> {{#expand organization}}<a href="{{uri}}" target="_blank">{{name}}</a>{{/expand}}</div>
51-
{{/if}}
52-
53-
{{#if affiliations}}
54-
<div><strong>Affiliations:</strong></div>
55-
<div>{{#list affiliations}}{{position}} - <a href="{{org.uri}}">{{org.name}}</a>{{/list}}</div>
51+
{{#if organizations}}
52+
<div><strong>Organizations:</strong></div>
53+
<div>{{#list organizations}}{{orgrole}} - <a href="{{organization.uri}}" target="_blank">{{organization.name}}</a>{{/list}}</div>
5654
{{/if}}
5755

5856
{{#if researchArea}}
@@ -139,7 +137,7 @@ <h5><small>
139137
facets: [
140138
{'field': 'dcoCommunities.community.name.exact', 'display': 'Community'},
141139
{'field': 'teams.team.name.exact', 'display': 'Team'},
142-
{'field': 'organization.name.exact', 'display': 'Organization'},
140+
{'field': 'organizations.organization.name.exact', 'display': 'Organization'},
143141
{'field': 'researchArea.name.exact', 'display': 'Research Area'},
144142
{'field': 'homeCountry.name.exact', 'display': 'Country'},
145143
{'field': 'isDcoMember', 'display': 'Show only DCO-members'}

ingest/ingest-people.py

Lines changed: 19 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -194,10 +194,24 @@ def get_research_areas(person):
194194

195195

196196
def get_organizations(person):
197-
return Maybe.of(person).stream() \
198-
.flatmap(lambda p: p.objects(DCO.inOrganization)) \
199-
.filter(has_label) \
200-
.map(lambda r: {"uri": str(r.identifier), "name": str(r.label())}).list()
197+
orgs = []
198+
199+
orgroles = Maybe.of(person).stream() \
200+
.flatmap(lambda per: per.objects(VIVO.relatedBy)) \
201+
.filter(lambda related: has_type(related, VIVO.Position)).list()
202+
203+
for orgrole in orgroles:
204+
org = Maybe.of(orgrole).stream() \
205+
.flatmap(lambda r: r.objects(VIVO.relates)) \
206+
.filter(lambda o: has_type(o, FOAF.Organization)) \
207+
.filter(has_label) \
208+
.map(lambda o: {"uri": str(o.identifier), "name": str(o.label())}) \
209+
.one().value
210+
211+
if org:
212+
orgs.append({"orgrole": str(orgrole.label()), "organization": org})
213+
214+
return orgs
201215

202216

203217
def get_teams(person):
@@ -249,27 +263,6 @@ def get_home_country(person):
249263
.map(lambda r: {"uri": str(r.identifier), "name": str(r.label())}).one().value
250264

251265

252-
def get_affiliations(person):
253-
affiliations = []
254-
255-
positions = Maybe.of(person).stream() \
256-
.flatmap(lambda per: per.objects(VIVO.relatedBy)) \
257-
.filter(lambda related: has_type(related, VIVO.Position)).list()
258-
259-
for position in positions:
260-
organization = Maybe.of(position).stream() \
261-
.flatmap(lambda r: r.objects(VIVO.relates)) \
262-
.filter(lambda o: has_type(o, FOAF.Organization)) \
263-
.filter(has_label) \
264-
.map(lambda o: {"uri": str(o.identifier), "name": str(o.label())}) \
265-
.one().value
266-
267-
if organization:
268-
affiliations.append({"position": str(position.label()), "org": organization})
269-
270-
return affiliations
271-
272-
273266
def get_thumbnail(person):
274267
return Maybe.of(person).stream() \
275268
.flatmap(lambda p: p.objects(VITRO_PUB.mainImage)) \
@@ -329,7 +322,7 @@ def create_person_doc(person, endpoint):
329322

330323
organizations = get_organizations(per)
331324
if organizations:
332-
doc.update({"organization": organizations})
325+
doc.update({"organizations": organizations})
333326

334327
teams = get_teams(per)
335328
if teams:
@@ -343,10 +336,6 @@ def create_person_doc(person, endpoint):
343336
if thumbnail:
344337
doc.update({"thumbnail": thumbnail})
345338

346-
affiliations = get_affiliations(per)
347-
if affiliations:
348-
doc.update({"affiliations": affiliations})
349-
350339
return doc
351340

352341

ingest/mappings/person.json

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -95,24 +95,32 @@
9595
}
9696
}
9797
},
98-
"organization": {
98+
"organizations": {
9999
"properties": {
100-
"name": {
101-
"type": "multi_field",
102-
"fields": {
100+
"organization": {
101+
"properties": {
103102
"name": {
104-
"type": "string",
105-
"index": "analyzed"
103+
"type": "multi_field",
104+
"fields": {
105+
"name": {
106+
"type": "string",
107+
"index": "analyzed"
108+
},
109+
"exact": {
110+
"type": "string",
111+
"index": "not_analyzed"
112+
}
113+
}
106114
},
107-
"exact": {
115+
"uri": {
108116
"type": "string",
109-
"index": "not_analyzed"
117+
"index": "no"
110118
}
111119
}
112120
},
113-
"uri": {
121+
"orgrole": {
114122
"type": "string",
115-
"index": "no"
123+
"index": "analyzed"
116124
}
117125
}
118126
},

ingest/queries/describePerson.rq

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ PREFIX bibo: <http://purl.org/ontology/bibo/>
1313
PREFIX obo: <http://purl.obolibrary.org/obo/>
1414
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
1515

16-
DESCRIBE ?person ?dcoid ?mostSpecificType ?org ?commrole ?dco_community ?teamrole ?team ?main_image ?thumb_image ?thumbnail ?research_area ?vcard ?email ?name ?position ?affiliation ?homeCountry
16+
DESCRIBE ?person ?dcoid ?mostSpecificType ?orgrole ?org ?commrole ?dco_community ?teamrole ?team ?main_image ?thumb_image ?thumbnail ?research_area ?vcard ?email ?name ?homeCountry
1717
WHERE {
1818
?person a foaf:Person .
1919
?person vitro:mostSpecificType ?mostSpecificType .
@@ -22,11 +22,13 @@ WHERE {
2222
OPTIONAL { ?vcard vcard:hasEmail ?email }
2323
OPTIONAL { ?vcard vcard:hasName ?name }
2424
}
25-
OPTIONAL { ?person vivo:relatedBy ?position .
26-
?position a vivo:Position .
27-
?position vivo:relates ?affiliation .
28-
?affiliation a foaf:Organization }
29-
OPTIONAL { ?person dco:inOrganization ?org }
25+
OPTIONAL { ?person vivo:relatedBy ?orgrole .
26+
?orgrole a vivo:Position .
27+
OPTIONAL { ?orgrole vivo:dateTimeInterval ?interval .
28+
?interval vivo:end ?end . }
29+
FILTER( ! BOUND(?end))
30+
?orgrole vivo:relates ?org .
31+
?org a foaf:Organization }
3032
OPTIONAL { ?person obo:RO_0000053 ?commrole .
3133
?commrole a vivo:MemberRole .
3234
OPTIONAL { ?commrole vivo:dateTimeInterval ?interval .

0 commit comments

Comments
 (0)