From a2a14c0c123c6932ce951cbaddbe4623432d8ae0 Mon Sep 17 00:00:00 2001 From: Georgy Litvinov Date: Mon, 23 Nov 2020 17:13:52 +0100 Subject: [PATCH] Export author and affiliation --- .../java/w2phtml/rdf/DocumentStructure.java | 71 +++++++++++++++++-- 1 file changed, 67 insertions(+), 4 deletions(-) diff --git a/src/main/java/w2phtml/rdf/DocumentStructure.java b/src/main/java/w2phtml/rdf/DocumentStructure.java index 9d6bb4a..7a3e1f3 100644 --- a/src/main/java/w2phtml/rdf/DocumentStructure.java +++ b/src/main/java/w2phtml/rdf/DocumentStructure.java @@ -31,6 +31,8 @@ public class DocumentStructure { private static final String TOC_LEVEL = "TOCLevel"; private static final String TABLE_OF_CONTENTS = "TOC"; private static final String PARTICIPANT = "publicationParticipant"; + private static final String ORGANIZATION = "organization"; + private static final String PUBLICATION = "publication"; private static final String BOOK = "book"; private static final String JOURNAL = "journal"; @@ -49,6 +51,9 @@ public class DocumentStructure { private OntClass itemClass; private OntClass documentClass; private OntClass tocClass; + private OntClass organizationClass; + private OntClass participantClass; + private HashMap tocLevels; private HashMap inputParts; @@ -62,6 +67,8 @@ public class DocumentStructure { this.textOntology = ModelFactory.createOntologyModel(); this.tocLevelClass = textOntology.createClass(TS + TOC_LEVEL); this.tocClass = textOntology.createClass(TS + TABLE_OF_CONTENTS); + this.organizationClass = textOntology.createClass(TS + ORGANIZATION); + this.participantClass = textOntology.createClass(TS + PARTICIPANT); this.itemClass = textOntology.createClass(TS + TOCITEM); this.docID = fileName; String publicationType = config.getRDFType(); @@ -182,7 +189,7 @@ public class DocumentStructure { mainResource.addProperty(hasTOC, toc); addMetadataProperties(mainResource, docPart); - addAuthor(mainResource, docPart); + //addAuthor(mainResource, docPart); tocLevels.put(docPart.getPath(), toc); attachExcerpt(docPart, toc); } @@ -199,10 +206,66 @@ public class DocumentStructure { } private void attachAuthor(Resource resource, Map map, String order) { - //String tocURI = TS + PARTICIPANT + "/" + PARSERNAME + "_" + docID ; - //Resource toc = m.createResource(tocURI, tocClass); + String participantURI = TS + PARTICIPANT + "/" + PARSERNAME + "_" + docID + order ; + Resource participant = m.createResource(participantURI, participantClass); + Property hasAuthor = m.createProperty(TS + "hasAuthor"); + resource.addProperty(hasAuthor, participant); + createParticipant(map, order, participant); + } + + private void createParticipant(Map map, String order, Resource participant) { + String givenName = map.get("author given name"); + if (givenName != null) { + Property givenNameProperty = m.createProperty(TS + "participantGivenName"); + participant.addProperty( givenNameProperty, givenName.trim()); + } + String family = map.get("author family"); + if (family != null) { + Property familyProperty = m.createProperty(TS + "participantFamily"); + participant.addProperty( familyProperty, family.trim()); + } + String email = map.get("author email"); + if (email != null) { + Property emailProperty = m.createProperty(TS + "participantEmail"); + participant.addProperty( emailProperty, email.trim()); + } + String authorInitials = map.get("author initials"); + if (email != null) { + Property initialsProperty = m.createProperty(TS + "participantInitials"); + participant.addProperty( initialsProperty, authorInitials.trim()); + } + attachOrganization(participant, map, order); + } + + private void attachOrganization(Resource participant, Map map, String order) { + String orgName = map.get("affiliated organization name"); + System.out.println(orgName); + if (orgName == null) { + return; + } + String organizationUri = TS + ORGANIZATION + "/" + PARSERNAME + "_" + docID + order; + Resource organization = m.createResource(organizationUri, organizationClass); + Property affiliatedWith = m.createProperty(TS + "affiliatedWith"); + participant.addProperty(affiliatedWith, participant); + + organization.addProperty(RDFS.label, orgName); + + String officialName = map.get("affiliated organization official name"); + if (officialName != null) { + Property officialNameProperty = m.createProperty(TS + "officialOrganizationName"); + organization.addProperty(officialNameProperty, officialName); + } + String orgAddress = map.get("affiliated organization address"); + if (orgAddress != null) { + Property orgAddressProperty = m.createProperty(TS + "organizationAddress"); + organization.addProperty(orgAddressProperty, orgAddress); + } + String postalCode = map.get("affiliated organization postal code"); + if (postalCode != null) { + Property postalCodeProperty = m.createProperty(TS + "organizationPostalCode"); + organization.addProperty(postalCodeProperty, postalCode); + } - } private void addMetadataProperties(Resource resource, DocumentPart docPart) {