From 0837552f6e683617354be83bd43a37350a13a89f Mon Sep 17 00:00:00 2001 From: tworrall Date: Mon, 7 Oct 2013 11:37:06 -0400 Subject: [PATCH 1/4] updated sparql queries to use new ISF properties --- .../AdditionalURIsForContextNodes.java | 424 +++++++++++------- 1 file changed, 270 insertions(+), 154 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/indexing/AdditionalURIsForContextNodes.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/indexing/AdditionalURIsForContextNodes.java index 06dfad192..4d3fa036e 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/indexing/AdditionalURIsForContextNodes.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/indexing/AdditionalURIsForContextNodes.java @@ -142,6 +142,9 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { + " prefix rdf: \n" + " prefix core: \n" + " prefix foaf: \n" + + " prefix obo: \n" + + " prefix vcard: \n" + + " prefix event: \n" + " prefix rdfs: \n" + " prefix localNav: \n" + " prefix bibo: \n"; @@ -151,30 +154,39 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { // If a person changes then update // organizations for positions multiValuedQueriesForAgent.add(prefix + - "SELECT \n" + + "SELECT DISTINCT \n" + " (str(?i) as ?positionInOrganization) \n" + " WHERE {\n" - + "?uri rdf:type foaf:Agent ; ?b ?c . \n" + + "?uri rdf:type foaf:Agent ; core:relatedBy ?c . \n" + " ?c rdf:type core:Position . \n" - + " OPTIONAL { ?c core:positionInOrganization ?i . } . \n" + + " OPTIONAL { ?c core:relates ?i . ?i rdf:type foaf:Organization } . \n" + " }"); // If a person changes then update // advisee, linkedAuthor and informationResource multiValuedQueriesForAgent.add(prefix + "SELECT (str(?d) as ?advisee) \n" + - " (str(?f) as ?linkedAuthor) (str(?h) as ?linkedInformationResource) WHERE {\n" + " (str(?f) as ?linkedAuthor) (str(?h) as ?linkedInformationResource) WHERE { {\n" - + "?uri rdf:type foaf:Agent ; ?b ?c . \n" - + " ?c rdf:type core:Relationship . \n" - - + " OPTIONAL { ?c core:advisee ?d . } . \n" - + " OPTIONAL { ?c core:linkedAuthor ?f . } . \n" - + " OPTIONAL { ?c core:linkedInformationResource ?h . } . \n" - - + " } "); + + "?uri rdf:type foaf:Agent . \n" + + "?uri core:relatedBy ?c . \n" + + "?c rdf:type core:AdvisingRelationship . \n" + + "?c core:relates ?d . \n" + + "?d rdf:type core:AdviseeRole . \n" + + "?d obo:RO_0000052 ?e . \n" + + "?e rdf:type foaf:Person . \n" + + "} \n" + + "UNION { \n" + + " ?uri rdf:type foaf:Agent . \n" + + " ?uri core:relatedBy ?c . \n" + + " ?c rdf:type core:Authorship . \n" + + " OPTIONAL {?c core:relates ?f . \n" + + " ?f rdf:type foaf:Person . } \n" + + " OPTIONAL { ?c core:relates ?h . \n" + + " ?h rdf:type obo:IAO_0000030 . } \n" + + " } } "); // If a person changes then update // award giver @@ -185,7 +197,7 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { + "?uri rdf:type foaf:Agent ; ?b ?c . \n" + " ?c rdf:type core:AwardReceipt . \n" - + " OPTIONAL { ?c core:awardConferredBy ?d . } . \n" + + " OPTIONAL { ?c core:assignedBy ?d . } . \n" + " }"); // If a person changes then update @@ -195,7 +207,7 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { "WHERE {\n" + "?uri rdf:type foaf:Agent ; ?b ?c . \n" - + " ?c rdf:type core:Role ; core:roleIn ?Organization .\n" + + " ?c rdf:type obo:BFO_0000023 ; obo:BFO_0000054 ?Organization .\n" + " }"); // If a person changes then update @@ -205,12 +217,13 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { "(str(?e) as ?trainingAtOrganization) WHERE {\n" + " ?uri rdf:type foaf:Agent ; ?b ?c . \n" - + " ?c rdf:type core:EducationalTraining . \n" + + " ?c rdf:type core:EducationalProcess . \n" - + " OPTIONAL { ?c core:trainingAtOrganization ?e . } . \n" + + " OPTIONAL { ?c obo:RO_0000057 ?e . \n" + + " ?e rdf:type foaf:Organization . } . " +"}"); - // If an organizatoin changes then update + // If an organization changes then update // people in head of relations multiValuedQueriesForAgent.add( " # for organization, get leader \n" + @@ -221,11 +234,9 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { + " ?uri rdf:type foaf:Agent ; ?b ?c . \n" + " ?c rdf:type core:LeaderRole . \n" - + " OPTIONAL { ?c core:leaderRoleOf ?e . } . \n" + + " OPTIONAL { ?c obo:RO_0000052 ?e . } . \n" +"}"); - - } //multivalued query for core:InformationResource @@ -233,21 +244,27 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { multiValuedQueryForInformationResource = prefix + "SELECT (str(?b) as ?linkedAuthor) (str(?d) as ?linkedInformationResource) \n" - + "(str(?e) as ?editor) \n" + + + "(str(?f) as ?editor) \n" + "(str(?i) as ?features) WHERE {\n" - + " ?uri rdf:type core:InformationResource . \n" + + " ?uri rdf:type obo:IAO_0000030 . \n" - + "OPTIONAL { ?uri core:informationResourceInAuthorship ?a . ?a core:linkedAuthor ?b ; core:linkedInformationResource ?d .\n" + - "} . " - + "OPTIONAL { ?uri bibo:editor ?e . } .\n" + + " OPTIONAL { ?uri core:relatedBy ?a . \n" + + " ?a rdf:type core:Authorship . \n" + + " ?a core:relates ?b . ?b rdf:type foaf:Person .\n" + + " ?a core:relates ?d . ?d rdf:type obo:IAO_0000030 .\n" + + "} . " + + + " OPTIONAL { ?uri core:relatedBy ?e . \n" + + " ?e rdf:type core:Editorship . \n" + + " ?e core:relates ?f . ?f rdf:type foaf:Person .\n" + + "} . " + " OPTIONAL { ?uri core:features ?i . } . \n" +"}" ; } - protected static List queriesForAuthorship(){ List queries = new ArrayList(); @@ -257,8 +274,9 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { + "SELECT (str(?a) as ?infoResource) WHERE {\n" + " ?uri rdf:type foaf:Person . \n" - + " ?uri core:authorInAuthorship ?aship .\n" - + "OPTIONAL { ?aship core:linkedInformationResource ?a } .\n" + + " ?uri core:relatedBy ?aship .\n" + + " ?aship rdf:type core:Authorship .\n" + + "OPTIONAL { ?aship core:relates ?a . ?a rdf:type obo:IAO_0000030 } .\n" +"}" ); //get additional URIs of authors from information resource side @@ -266,9 +284,9 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { prefix + "SELECT (str(?a) as ?author ) WHERE {\n" - + " ?uri rdf:type core:InformationResource . \n" - + " ?uri core:informationResourceInAuthorship ?aship .\n" - + "OPTIONAL { ?aship core:linkedAuthor ?a } .\n" + + " ?uri rdf:type obo:IAO_0000030 . \n" + + " ?uri core:relatedBy ?aship . ?aship rdf:type core:Authorship . \n" + + "OPTIONAL { ?aship core:relates ?a . ?a rdf:type foaf:Person } .\n" +"}" ); return queries; } @@ -281,8 +299,9 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { prefix + "SELECT (str(?x) as ?individual) WHERE {\n" - + " ?uri rdf:type core:URLLink . \n" - + " ?uri core:webpageOf ?x .\n" + + " ?i rdf:type vcard:Individual . \n" + + " ?i vcard:hasURL ?uri . \n" + + " ?i obo:ARG_2000029 ?x . \n" +"}" ); return queries; @@ -302,8 +321,10 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { + " SELECT (str(?person) as ?personUri) WHERE {\n" + " ?uri rdf:type core:AcademicDegree . \n" - + " ?uri core:degreeOutcomeOf ?edTrainingNode .\n" - + " ?edTrainingNode core:educationalTrainingOf ?person . \n" + + " ?uri core:relatedBy ?awardedDegree .\n" + + " ?awardedDegree rdf:type core:AwardedDegree .\n" + + " ?awardedDegree core:relates ?person .\n" + + " ?person rdf:type foaf:Person .\n" +"}" ); //if the organization changes the person needs to be updated @@ -313,8 +334,10 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { + " SELECT (str(?person) as ?personUri) WHERE {\n" + " ?uri rdf:type foaf:Organization . \n" - + " ?uri core:organizationGrantingDegree ?edTrainingNode .\n" - + " ?edTrainingNode core:educationalTrainingOf ?person . \n" + + " ?uri obo:RO_0000056 ?edTrainingNode .\n" + + " ?edTrainingNode rdf:type core:EducationalProcess . \n" + + " ?edTrainingNode obo:RO_0000057 ?person . \n" + + " ?person rdf:type foaf:Person ." +"}" ); return queries; } @@ -328,8 +351,10 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { + " SELECT (str(?person) as ?personUri) WHERE {\n" + " ?uri rdf:type foaf:Organization . \n" - + " ?uri core:organizationForPosition ?positionNode .\n" - + " ?person core:personInPosition ?positionNode . \n" + + " ?uri core:relatedBy ?positionNode .\n" + + " ?positionNode rdf:type core:Position .\n" + + " ?positionNode core:relates ?person . \n" + + " ?person rdf:type foaf:Person .\n" +"}" ); @@ -339,8 +364,10 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { + " SELECT (str(?org) as ?orgUri) WHERE {\n" + " ?uri rdf:type foaf:Person . \n" - + " ?uri core:personInPosition ?positionNode .\n" - + " ?org core:organizationForPosition ?positionNode . \n" + + " ?uri core:relatedBy ?positionNode .\n" + + " ?positionNode rdf:type core:Position .\n" + + " ?positionNode core:relates ?org . \n" + + " ?org rdf:type foaf:Organization .\n" +"}" ); return queries; } @@ -348,21 +375,28 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { static{ // core:AttendeeRole // If the person changes, update the attendee role in organization + // core:AttendeeRole applies to events, not organizations; updating accordingly - tlw72 multiValuedQueriesForRole.add(prefix + - "SELECT (str(?d) as ?organization) \n " + - "WHERE {\n" - - + "?uri rdf:type foaf:Person ; ?b ?c . \n" - + " ?c rdf:type core:AttendeeRole ; core:roleIn ?d .\n" + "SELECT (str(?d) as ?event) \n " + + "WHERE {\n" + + "?uri rdf:type foaf:Person . \n" + + "?uri obo:RO_0000053 ?c . \n" + + "?c rdf:type core:AttendeeRole . \n" + + "?c obo:BFO_0000054 ?d . \n" + + "?d rdf:type event:Event .\n" + " }"); // If the organization changes, update the attendee role of person + // core:AttendeeRole applies to events, not organizations; updating accordingly - tlw72 multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + "WHERE {\n" - + "?uri rdf:type foaf:Organization ; ?b ?c . \n" - + " ?c rdf:type core:AttendeeRole ; core:roleOf ?d .\n" + + "?uri rdf:type event:Event . \n" + + "?uri obo:BFO_0000055 ?c . \n" + + "?c rdf:type core:AttendeeRole . \n" + + "?c obo:RO_0000052 ?d . \n" + + "?d rdf:type foaf:Person .\n" + " }"); // core:ClinicalRole -- core:clinicalRoleOf @@ -370,49 +404,68 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { // If the person changes, update the clinical role in project multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?project) \n" + - "WHERE {\n" - - + "?uri rdf:type foaf:Person ; ?b ?c . \n" - + " ?c rdf:type core:ClinicalRole ; core:roleIn ?d .\n" + "WHERE {\n" + + "?uri rdf:type foaf:Person . \n" + + "?uri obo:RO_0000053 ?c . \n" + + "?c rdf:type core:ClinicalRole . \n" + + "?c obo:BFO_0000054 ?d .\n" + + "?d rdf:type core:Project .\n" + " }"); + + // If the person changes, update the clinical role in service + multiValuedQueriesForRole.add(prefix + + "SELECT (str(?d) as ?service) \n" + + "WHERE {\n" + + "?uri rdf:type foaf:Person . \n" + + "?uri obo:RO_0000053 ?c . \n" + + "?c rdf:type core:ClinicalRole . \n" + + "?c core:roleContributesTo ?d .\n" + + "?d rdf:type obo:ERO_0000005 .\n" + + " }"); + // If the project changes, update the clinical role of person multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + "WHERE {\n" - - + "?uri rdf:type core:Project ; ?b ?c . \n" - + " ?c rdf:type core:ClinicalRole ; core:clinicalRoleOf ?d .\n " + + "?uri rdf:type core:Project . \n" + + "?uri obo:BFO_0000055 ?c . \n" + + "?c rdf:type core:ClinicalRole . \n" + + "?c obo:RO_0000052 ?d .\n " + + "?d rdf:type foaf:Person .\n " + " }"); // If the service changes, update the clinical role of person multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + - "WHERE {\n" - - + "?uri rdf:type core:Service ; ?b ?c . \n" - + " ?c rdf:type core:ClinicalRole ; core:clinicalRoleOf ?d .\n " + "WHERE {\n" + + "?uri rdf:type obo:ERO_0000005 . \n" + + "?uri core:contributingRole ?c . \n" + + "?c rdf:type core:ClinicalRole . \n" + + "?c obo:RO_0000052 ?d .\n " + + "?d rdf:type foaf:Person .\n " + " }"); - - - // core:LeaderRole -- core:leaderRoleOf - + // If the person changes, update the leader role in organization multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?organization) \n" + - "WHERE {\n" - - + "?uri rdf:type foaf:Person ; ?b ?c . \n" - + " ?c rdf:type core:LeaderRole ; core:roleIn ?d .\n" + "WHERE {\n" + + "?uri rdf:type foaf:Person . \n" + + "?uri obo:RO_0000053 ?c . \n" + + "?c rdf:type core:LeaderRole . \n" + + "?c core:roleContributesTo ?d .\n" + + "?d rdf:type foaf:Organization .\n " + " }"); // If the organization changes, update the leader role of person multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + - "WHERE {\n" - - + "?uri rdf:type foaf:Organization ; ?b ?c . \n" - + " ?c rdf:type core:LeaderRole ; core:leaderRoleOf ?d .\n" + "WHERE {\n" + + "?uri rdf:type foaf:Organization . \n" + + "?uri core:contributingRole ?c . \n" + + "?c rdf:type core:LeaderRole . \n" + + "?c obo:RO_0000052 ?d .\n " + + "?d rdf:type foaf:Person .\n " + " }"); // core:MemberRole -- core:memberRoleOf @@ -421,115 +474,142 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?organization) \n" + "WHERE \n{" - - + "?uri rdf:type foaf:Person ; ?b ?c . \n" - + " ?c rdf:type core:MemberRole ; core:roleIn ?d .\n" + + "?uri rdf:type foaf:Person . \n" + + "?uri obo:RO_0000053 ?c . \n" + + "?c rdf:type core:MemberRole . \n" + + "?c core:roleContributesTo ?d .\n" + + "?d rdf:type foaf:Organization .\n " + " }"); // If the organization changes, update the member role of person multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + "WHERE {" - - + "?uri rdf:type foaf:Organization ; ?b ?c . \n" - + " ?c rdf:type core:MemberRole ; core:memberRoleOf ?d .\n" + + "?uri rdf:type foaf:Organization . \n" + + "?uri core:contributingRole ?c . \n" + + "?c rdf:type core:MemberRole . \n" + + "?c obo:RO_0000052 ?d .\n " + + "?d rdf:type foaf:Person .\n " + " }"); + // core:OrganizerRole -- core:organizerRoleOf // If the person changes, update the organizer role in organization + // organizerRole appplies to events not organizations; updating accordingly - tlw72 multiValuedQueriesForRole.add(prefix + - "SELECT (str(?d) as ?organization) \n" + + "SELECT (str(?d) as ?event) \n" + "WHERE {" - - + "?uri rdf:type foaf:Person ; ?b ?c . \n" - + " ?c rdf:type core:OrganizerRole ; core:roleIn ?d .\n" + + "?uri rdf:type foaf:Person . \n" + + "?uri obo:RO_0000053 ?c . \n" + + "?c rdf:type core:OrganizerRole .\n" + + "?c obo:BFO_0000054 ?d .\n" + + "?d rdf:type event:Event .\n " + " }"); // If the organization changes, update the organizer role of person + // organizerRole appplies to events not organizations; updating accordingly - tlw72 multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + "WHERE {\n" - - + "?uri rdf:type foaf:Organization ; ?b ?c . \n" - + " ?c rdf:type core:OrganizerRole ; core:organizerRoleOf ?d .\n" + + "?uri rdf:type event:Event . \n" + + "?uri obo:BFO_0000055 ?c . \n" + + "?c rdf:type core:OrganizerRole . \n" + + "?c obo:RO_0000052 ?d .\n " + + "?d rdf:type foaf:Person .\n " + " }"); + // core:OutreachProviderRole -- core:outreachProviderRoleOf // If the person changes, update the outreach provider role in organization multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?organization) \n" + "WHERE {\n" - - + "?uri rdf:type foaf:Person ; ?b ?c . \n" - + " ?c rdf:type core:OutreachProviderRole ; core:roleIn ?d .\n" + + "?uri rdf:type foaf:Person . \n" + + "?uri obo:RO_0000053 ?c . \n" + + "?c rdf:type core:OutreachProviderRole .\n" + + "?c core:roleContributesTo ?d .\n" + + "?d rdf:type foaf:Organization .\n " + " }"); // If the organization changes, update the outreach provider role of person multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + "WHERE {\n" - - + "?uri rdf:type foaf:Organization ; ?b ?c . \n" - + " ?c rdf:type core:OutreachProviderRole ; core:outreachProviderRoleOf ?d .\n" + + "?uri rdf:type foaf:Organization . \n" + + "?uri core:contributingRole ?c . \n" + + "?c rdf:type core:OutreachProviderRole . \n" + + "?c obo:RO_0000052 ?d .\n " + + "?d rdf:type foaf:Person .\n " + " }"); - - + // core:PresenterRole -- core:presenterRoleOf // If the person changes, update the presentation multiValuedQueriesForRole.add(prefix + - "SELECT (str(?d) as ?organization) \n" + + "SELECT (str(?d) as ?presentation) \n" + "WHERE {\n" - - + "?uri rdf:type foaf:Person ; ?b ?c . \n" - + " ?c rdf:type core:PresenterRole ; core:roleIn ?d .\n" + + "?uri rdf:type foaf:Person . \n" + + "?uri obo:RO_0000053 ?c . \n" + + " ?c rdf:type core:PresenterRole . \n" + + " ?c obo:BFO_0000054 ?d .\n" + + " ?d rdf:type core:Presentation . \n" + " }"); // If the presentation changes, update the person multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + "WHERE {\n" - - + "?uri rdf:type core:Presentation ; ?b ?c . \n" - + " ?c rdf:type core:PresenterRole ; core:presenterRoleOf ?d .\n" + + "?uri rdf:type core:Presentation . \n" + + "?uri obo:BFO_0000055 ?c . \n" + + " ?c rdf:type core:PresenterRole . \n " + + "?c obo:RO_0000052 ?d .\n " + + "?d rdf:type foaf:Person .\n " + " }"); // core:ResearcherRole -- core:researcherRoleOf // If the person changes, update the grant multiValuedQueriesForRole.add(prefix + - "SELECT (str(?d) as ?organization) \n" + + "SELECT (str(?d) as ?grant) \n" + "WHERE {\n" - - + "?uri rdf:type foaf:Person ; ?b ?c . \n" - + " ?c rdf:type core:ResearcherRole ; core:roleIn ?d .\n" + + "?uri rdf:type foaf:Person . \n" + + "?uri obo:RO_0000053 ?c . \n" + + " ?c rdf:type core:ResearcherRole . \n " + + " ?c core:relatedBy ?d .\n" + + " ?d rdf:type core:Grant . \n" + " }"); // If the grant changes, update the researcher multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + "WHERE {\n" - - + "?uri rdf:type core:Grant ; ?b ?c . \n" - + " ?c rdf:type core:ResearcherRole ; core:researcherRoleOf ?d .\n" + + "?uri rdf:type core:Grant . \n" + + "?uri core:relates ?c . \n" + + " ?c rdf:type core:ResearcherRole . \n " + + " ?c obo:RO_0000052 ?d .\n" + + "?d rdf:type foaf:Person .\n " + " }"); // If the grant changes, update the principal investigator multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + "WHERE {\n" - - + "?uri rdf:type core:Grant ; ?b ?c . \n" - + " ?c rdf:type core:PrincipalInvestigatorRole ; core:principalInvestigatorRoleOf ?d .\n" + + "?uri rdf:type core:Grant . \n" + + " ?uri core:relates ?c . \n" + + " ?c rdf:type core:PrincipalInvestigatorRole . \n " + + " ?c obo:RO_0000052 ?d .\n" + + "?d rdf:type foaf:Person .\n " + " }"); // If the grant changes, update the co-principal investigator multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + "WHERE {\n" - - + "?uri rdf:type core:Grant ; ?b ?c . \n" - + " ?c rdf:type core:CoPrincipalInvestigatorRole ; core:co-PrincipalInvestigatorRoleOf ?d .\n" + + "?uri rdf:type core:Grant . \n" + + " ?uri core:relates ?c . \n" + + " ?c rdf:type core:CoPrincipalInvestigatorRole . \n " + + " ?c obo:RO_0000052 ?d .\n" + + "?d rdf:type foaf:Person .\n " + " }"); @@ -537,45 +617,65 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + "WHERE {\n" - - + "?uri rdf:type core:Grant ; ?b ?c . \n" - + " ?c rdf:type core:InvestigatorRole ; core:investigatorRoleOf ?d .\n" + + "?uri rdf:type core:Grant . \n" + + " ?uri core:relates ?c . \n" + + " ?c rdf:type core:InvestigatorRole . \n " + + " ?c obo:RO_0000052 ?d .\n" + + "?d rdf:type foaf:Person .\n " + " }"); + // If the person changes, update the project + multiValuedQueriesForRole.add(prefix + + "SELECT (str(?d) as ?project) \n" + + "WHERE {\n" + + "?uri rdf:type foaf:Person . \n" + + "?uri obo:RO_0000053 ?c . \n" + + " ?c rdf:type core:ResearcherRole . \n " + + " ?c obo:BFO_0000054 ?d .\n" + + " ?d rdf:type core:Project . \n" + + " }"); + // If the project changes, update the researcher multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + "WHERE {\n" - - + "?uri rdf:type core:Project ; ?b ?c . \n" - + " ?c rdf:type core:ResearcherRole ; core:researcherRoleOf ?d .\n" - + " }"); - - - + + "?uri rdf:type core:Project . \n" + + " ?uri obo:BFO_0000055 ?c .\n" + + " ?c rdf:type core:ResearcherRole . \n " + + " ?c obo:RO_0000052 ?d .\n" + + "?d rdf:type foaf:Person .\n " + + " }"); + // core:EditorRole -- core:editorRoleOf, core:forInformationResource (person, informationresource) - // If the person changes, update the editor role in organization + // If the person changes, update the editor role of the info resource + // changing foaf:Organization to info content entity. Org no longer applies here - tlw72 multiValuedQueriesForRole.add(prefix + - "SELECT (str(?d) as ?organization) \n" + + "SELECT (str(?d) as ?informationResource) \n" + "WHERE {\n" - - + "?uri rdf:type foaf:Person ; ?b ?c . \n" - + " ?c rdf:type core:EditorRole ; core:roleIn ?d .\n" + + "?uri rdf:type foaf:Person . \n" + + "?uri obo:RO_0000053 ?c . \n" + + " ?c rdf:type core:EditorRole . \n " + + " ?c core:roleContributesTo ?d .\n" + + "?d rdf:type obo:IAO_0000030 .\n " + " }"); - // If the organization changes, update the editor role of person + // If the info respource changes, update the editor role of person + // changing foaf:Organization to info content entity. Org no longer applies here - tlw72 multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + "WHERE {\n" - - + "?uri rdf:type foaf:Organization ; ?b ?c . \n" - + " ?c rdf:type core:EditorRole ; core:editorRoleOf ?d .\n" + + "?uri rdf:type obo:IAO_0000030 . \n" + + "?uri core:contributingRole ?c . \n" + + " ?c rdf:type core:EditorRole . \n " + + " ?c obo:RO_0000052 ?d .\n" + + "?d rdf:type foaf:Person .\n " + " }"); + // Next two queries are covered by the previous two. Commenting them out - tlw72 // If the person changes, update the information resource associated with editor role - multiValuedQueriesForRole.add(prefix + +/* multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?informationResource) \n" + "WHERE {\n" @@ -591,46 +691,56 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { + "?uri rdf:type foaf:Organization ; ?b ?c . \n" + " ?c rdf:type core:EditorRole ; core:forInformationResource ?d .\n" + " }"); - +*/ // core:ServiceProviderRole -- core:serviceProviderRoleOf // If the person changes, update the service provider role in organization multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?organization) \n" + "WHERE {\n" - - + "?uri rdf:type foaf:Person ; ?b ?c . \n" - + " ?c rdf:type core:ServiceProviderRole ; core:roleIn ?d .\n" + + "?uri rdf:type foaf:Person . \n" + + "?uri obo:RO_0000053 ?c . \n" + + " ?c rdf:type obo:ERO_0000012 . \n" + + " ?c core:roleContributesTo ?d .\n" + + " ?d rdf:type foaf:Organization .\n " + " }"); // If the organization changes, update the service provider role of person multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + "WHERE {\n" - - + "?uri rdf:type foaf:Organization ; ?b ?c . \n" - + " ?c rdf:type core:ServiceProviderRole ; core:serviceProviderRoleOf ?d .\n" + + "?uri rdf:type foaf:Organization . \n" + + "?uri core:contributingRole ?c . \n" + + " ?c rdf:type obo:ERO_0000012 . \n " + + " ?c obo:RO_0000052 ?d .\n" + + "?d rdf:type foaf:Person .\n " + " }"); // core:TeacherRole -- core:teacherRoleOf // If the person changes, update the teacher role in organization + // updated to make this an Event (e.g., a course) not an organization - tlw72 multiValuedQueriesForRole.add(prefix + - "SELECT (str(?d) as ?organization) \n" + + "SELECT (str(?d) as ?event) \n" + "WHERE {\n" - - + "?uri rdf:type foaf:Person ; ?b ?c . \n" - + " ?c rdf:type core:TeacherRole ; core:roleIn ?d .\n" + + "?uri rdf:type foaf:Person . \n" + + "?uri obo:RO_0000053 ?c . \n" + + " ?c rdf:type core:TeacherRole . \n" + + " ?c obo:BFO_0000054 ?d .\n" + + " ?d rdf:type event:Event .\n " + " }"); // If the organization changes, update the teacher role of person + // updated to make this an Event (e.g., a course) not an organization - tlw72 multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?person) \n" + "WHERE {\n" - - + "?uri rdf:type foaf:Organization ; ?b ?c . \n" - + " ?c rdf:type core:TeacherRole ; core:teacherRoleOf ?d .\n" + + "?uri rdf:type event:Event . \n" + + "?uri obo:BFO_0000055 ?c . \n" + + " ?c rdf:type core:TeacherRole . \n " + + " ?c obo:RO_0000052 ?d .\n" + + "?d rdf:type foaf:Person .\n " + " }"); @@ -638,7 +748,9 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { // core:PeerReviewerRole -- core:forInformationResource, core:reviewerRoleOf // If the person changes, update the reviewer role in organization - multiValuedQueriesForRole.add(prefix + + // There is no relationship between a reviewerRole and an organization; commenting + // the next two queries out - tlw72 +/* multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?organization) \n" + "WHERE {\n" @@ -656,23 +768,27 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { + "?uri rdf:type foaf:Organization ; ?b ?c . \n" + " ?c rdf:type core:ReviewerRole ; core:reviewerRoleOf ?d .\n" + " }"); - +*/ // If the person changes, update the information resource associated with reviewer role multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?informationResource) \n " + "WHERE {\n" - - + "?uri rdf:type foaf:Person ; ?b ?c . \n" - + " ?c rdf:type core:ReviewerRole ; core:forInformationResource ?d .\n" + + "?uri rdf:type foaf:Person . \n" + + "?uri obo:RO_0000053 ?c . \n" + + " ?c rdf:type core:ReviewerRole . \n" + + " ?c core:roleContributesTo ?d .\n" + + " ?d rdf:type obo:IAO_0000030 .\n " + " }"); // If the organization changes, update the information resource associated with reviewer role multiValuedQueriesForRole.add(prefix + "SELECT (str(?d) as ?informationResource) \n" + "WHERE {\n" - - + "?uri rdf:type foaf:Organization ; ?b ?c . \n" - + " ?c rdf:type core:ReviewerRole ; core:forInformationResource ?d .\n" + + "?uri rdf:type obo:IAO_0000030 . \n" + + "?uri core:contributingRole ?c . \n" + + " ?c rdf:type core:ReviewerRole. \n " + + " ?c obo:RO_0000052 ?d .\n" + + "?d rdf:type foaf:Person .\n " + " }"); } From 6dc8094827d7ccbc222093b31e0c7e06713f9e27 Mon Sep 17 00:00:00 2001 From: j2blake Date: Mon, 7 Oct 2013 15:17:43 -0400 Subject: [PATCH 2/4] VIVO-317 Provide an un-language-filtered WebappDaoFactory Store it in VitroRequest. See that it matches the model-switching of the usual WebappDaoFactory. --- .../vitro/webapp/controller/VitroRequest.java | 8 +++++- .../webapp/filters/RequestModelsPrep.java | 28 +++++++++++++++++-- .../individual/GroupedPropertyList.java | 13 ++------- 3 files changed, 35 insertions(+), 14 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/VitroRequest.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/VitroRequest.java index 0eeeed0a0..c749311a3 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/VitroRequest.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/VitroRequest.java @@ -215,5 +215,11 @@ public class VitroRequest extends HttpServletRequestWrapper { return (OntModel) getAttribute("languageNeutralUnionFullModel"); } - + public void setLanguageNeutralWebappDaoFactory(WebappDaoFactory wadf) { + setAttribute("languageNeutralWebappDaoFactory", wadf); + } + + public WebappDaoFactory getLanguageNeutralWebappDaoFactory() { + return (WebappDaoFactory) getAttribute("languageNeutralWebappDaoFactory"); + } } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/RequestModelsPrep.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/RequestModelsPrep.java index f83432551..c760a0b43 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/RequestModelsPrep.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/RequestModelsPrep.java @@ -42,6 +42,8 @@ import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactoryConfig; import edu.cornell.mannlib.vitro.webapp.dao.filtering.WebappDaoFactoryFiltering; import edu.cornell.mannlib.vitro.webapp.dao.filtering.filters.HideFromDisplayByPolicyFilter; +import edu.cornell.mannlib.vitro.webapp.dao.jena.OntModelSelector; +import edu.cornell.mannlib.vitro.webapp.dao.jena.OntModelSelectorImpl; import edu.cornell.mannlib.vitro.webapp.dao.jena.RDFServiceDataset; import edu.cornell.mannlib.vitro.webapp.dao.jena.SpecialBulkUpdateHandlerGraph; import edu.cornell.mannlib.vitro.webapp.dao.jena.WebappDaoFactorySDB; @@ -143,10 +145,13 @@ public class RequestModelsPrep implements Filter { setRawModels(vreq, dataset); - // We need access to the language-ignorant version of this model. - // Grab it before it gets wrapped in language awareness. + // We need access to some language-neutral items - either because we need to see all + // contents regardless of language, or because we need to see the blank nodes that + // are removed during language filtering. vreq.setLanguageNeutralUnionFullModel(ModelAccess.on(vreq).getOntModel(ModelID.UNION_FULL)); - + vreq.setLanguageNeutralWebappDaoFactory(new WebappDaoFactorySDB( + rdfService, createLanguageNeutralOntModelSelector(vreq), createWadfConfig(vreq))); + wrapModelsWithLanguageAwareness(vreq); setWebappDaoFactories(vreq, rdfService); @@ -229,6 +234,19 @@ public class RequestModelsPrep implements Filter { return ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, unionModel); } + /** Create an OntModelSelector that will hold the un-language-filtered models. */ + private OntModelSelector createLanguageNeutralOntModelSelector( + VitroRequest vreq) { + OntModelSelectorImpl oms = new OntModelSelectorImpl(); + oms.setABoxModel(ModelAccess.on(vreq).getOntModel(ModelID.UNION_ABOX)); + oms.setTBoxModel(ModelAccess.on(vreq).getOntModel(ModelID.UNION_TBOX)); + oms.setFullModel(ModelAccess.on(vreq).getOntModel(ModelID.UNION_FULL)); + oms.setApplicationMetadataModel(ModelAccess.on(vreq).getOntModel(ModelID.APPLICATION_METADATA)); + oms.setDisplayModel(ModelAccess.on(vreq).getOntModel(ModelID.DISPLAY)); + oms.setUserAccountsModel(ModelAccess.on(vreq).getOntModel(ModelID.USER_ACCOUNTS)); + return oms; + } + private void wrapModelsWithLanguageAwareness(VitroRequest vreq) { wrapModelWithLanguageAwareness(vreq, ModelID.DISPLAY); wrapModelWithLanguageAwareness(vreq, ModelID.APPLICATION_METADATA); @@ -271,6 +289,10 @@ public class RequestModelsPrep implements Filter { // a different version if requested by parameters WebappDaoFactory switchedWadf = new ModelSwitcher() .checkForModelSwitching(vreq, wadf); + // Switch the language-neutral one also. + vreq.setLanguageNeutralWebappDaoFactory(new ModelSwitcher() + .checkForModelSwitching(vreq, + vreq.getLanguageNeutralWebappDaoFactory())); HideFromDisplayByPolicyFilter filter = new HideFromDisplayByPolicyFilter( RequestIdentifiers.getIdBundleForRequest(vreq), diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java index ec3f5bf69..675956d8f 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java @@ -20,7 +20,6 @@ import edu.cornell.mannlib.vitro.webapp.beans.PropertyGroup; import edu.cornell.mannlib.vitro.webapp.beans.PropertyInstance; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.dao.DataPropertyDao; -import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess; import edu.cornell.mannlib.vitro.webapp.dao.ObjectPropertyDao; import edu.cornell.mannlib.vitro.webapp.dao.PropertyGroupDao; import edu.cornell.mannlib.vitro.webapp.dao.PropertyInstanceDao; @@ -159,7 +158,6 @@ public class GroupedPropertyList extends BaseTemplateModel { } } - @SuppressWarnings("unchecked") protected void sort(List propertyList) { try { Collections.sort(propertyList, new PropertyRanker(vreq)); @@ -177,14 +175,9 @@ public class GroupedPropertyList extends BaseTemplateModel { // DataPropertyDao.getAllPossibleDatapropsForIndividual(). The comparable method for object properties // is defined using PropertyInstance rather than ObjectProperty. - // Getting WebappDaoFactory from the session because we can't have the filtering - // that gets applied to the request. This breaks blank node structures in the - // restrictions that determine applicable properties. - WebappDaoFactory wadf = ModelAccess.on(vreq.getSession().getServletContext()).getWebappDaoFactory(); - //Allowing model switching for display model - if(vreq.getAttribute("specialWriteModel") != null) { - wadf = ModelAccess.on(vreq).getWebappDaoFactory(); - } + // Getting Language-neutral WebappDaoFactory because the language-filtering + // breaks blank node structures in the restrictions that determine applicable properties. + WebappDaoFactory wadf = vreq.getLanguageNeutralWebappDaoFactory(); PropertyInstanceDao piDao = wadf.getPropertyInstanceDao(); Collection allPropInstColl = piDao From 5dfe858a253173c1c07dab964c19941f64a4a05a Mon Sep 17 00:00:00 2001 From: j2blake Date: Mon, 7 Oct 2013 15:34:05 -0400 Subject: [PATCH 3/4] Fix typos in n3 files --- webapp/rdf/display/everytime/dataGetterLabels.n3 | 3 +++ webapp/rdf/display/everytime/pageList.n3 | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/webapp/rdf/display/everytime/dataGetterLabels.n3 b/webapp/rdf/display/everytime/dataGetterLabels.n3 index b51f4a978..5e81158a9 100644 --- a/webapp/rdf/display/everytime/dataGetterLabels.n3 +++ b/webapp/rdf/display/everytime/dataGetterLabels.n3 @@ -1,6 +1,9 @@ # $This file is distributed under the terms of the license in /doc/license.txt$ #Data getter type labels + +@prefix rdfs: . + rdfs:label "Class Group Page" . rdfs:label "Browse Page" . rdfs:label "Class Group Page - Selected Classes" . diff --git a/webapp/rdf/display/everytime/pageList.n3 b/webapp/rdf/display/everytime/pageList.n3 index 4d12e80c6..3edc7bf44 100644 --- a/webapp/rdf/display/everytime/pageList.n3 +++ b/webapp/rdf/display/everytime/pageList.n3 @@ -1,7 +1,7 @@ # $This file is distributed under the terms of the license in /doc/license.txt$ # This file is for the portions of the pageList that should not be editable, i.e. -that it cannot be deleted and that it requires certain permissions # +# that it cannot be deleted and that it requires certain permissions @prefix owl: . @prefix display: . From 6ba8de8a9dc926fb10448f5944b8918f051a0c25 Mon Sep 17 00:00:00 2001 From: tworrall Date: Mon, 7 Oct 2013 15:48:22 -0400 Subject: [PATCH 4/4] fixed additional uris for context node tests --- .../AdditionalURIsForContextNodes.java | 8 +- .../AdditionalURIsForContextNodesTest.java | 165 +++++++++--------- 2 files changed, 89 insertions(+), 84 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/indexing/AdditionalURIsForContextNodes.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/indexing/AdditionalURIsForContextNodes.java index 4d3fa036e..96216d636 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/indexing/AdditionalURIsForContextNodes.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/indexing/AdditionalURIsForContextNodes.java @@ -142,7 +142,7 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { + " prefix rdf: \n" + " prefix core: \n" + " prefix foaf: \n" - + " prefix obo: \n" + + " prefix obo: \n" + " prefix vcard: \n" + " prefix event: \n" + " prefix rdfs: \n" @@ -231,10 +231,12 @@ public class AdditionalURIsForContextNodes implements StatementToURIsToUpdate { "SELECT \n" + "(str(?e) as ?LeaderPerson ) WHERE {\n" - + " ?uri rdf:type foaf:Agent ; ?b ?c . \n" + + " ?uri rdf:type foaf:Agent . \n" + + " ?uri core:contributingRole ?c . \n" + " ?c rdf:type core:LeaderRole . \n" - + " OPTIONAL { ?c obo:RO_0000052 ?e . } . \n" + + " OPTIONAL { ?c obo:RO_0000052 ?e . \n" + + " ?e rdf:type foaf:Person . } . " +"}"); } diff --git a/webapp/test/edu/cornell/mannlib/vitro/webapp/search/indexing/AdditionalURIsForContextNodesTest.java b/webapp/test/edu/cornell/mannlib/vitro/webapp/search/indexing/AdditionalURIsForContextNodesTest.java index 1d721c51a..f73674d80 100644 --- a/webapp/test/edu/cornell/mannlib/vitro/webapp/search/indexing/AdditionalURIsForContextNodesTest.java +++ b/webapp/test/edu/cornell/mannlib/vitro/webapp/search/indexing/AdditionalURIsForContextNodesTest.java @@ -20,7 +20,7 @@ public class AdditionalURIsForContextNodesTest { @Test public void testPositionChanges(){ String n3 = - " . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + @@ -33,8 +33,10 @@ public class AdditionalURIsForContextNodesTest { " . \n" + " . \n" + " . \n" + + " . \n" + + " . \n" + - " . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + @@ -86,6 +88,7 @@ public class AdditionalURIsForContextNodesTest { "@prefix rdf: . \n" + "@prefix core: . \n" + "@prefix vivo: . \n" + + "@prefix obo: . \n" + " " + " \n" + " a owl:Thing , core:Role , core:LeaderRole ; \n" + @@ -94,14 +97,15 @@ public class AdditionalURIsForContextNodesTest { " core:LeaderRole ; \n" + " core:dateTimeInterval \n" + " ; \n" + - " core:leaderRoleOf ; \n" + - " core:roleIn . \n" + + " obo:RO_0000052 ; \n" + + " core:roleContributesTo . \n" + " \n" + " a , owl:Thing , , core:ClinicalOrganization ; \n" + " rdfs:label \"Organization XYZ\"^^xsd:string ; \n" + " vitro:mostSpecificType \n" + " core:ClinicalOrganization ; \n" + - " core:relatedRole . \n"; + " core:contributingRole . \n" + + " a , owl:Thing , . \n"; //make a test model with an person, an authorship context node and a book @@ -124,32 +128,31 @@ public class AdditionalURIsForContextNodesTest { String n3= " \"1, Test\" . \n " + - " \"1\"^^ . \n " + - " \"Test\"^^ . \n " + +// " \"1\"^^ . \n " + +// " \"Test\"^^ . \n " + " . \n " + - " . \n " + + " . \n " + " . \n " + " . \n " + " . \n " + " \"Leader Role\"^^ . \n " + - " . \n " + + " . \n " + " . \n " + - " . \n " + + " . \n " + " . \n " + - " . \n " + " . \n " + " . \n " + " \"University1\"^^ . \n " + - " . \n " + + " . \n " + " .\n " + " . \n " + " . \n " + " . \n " + " . \n " ; - + //make a test model with an person, a leader role node and a university OntModel model = ModelFactory.createOntologyModel(); @@ -174,10 +177,10 @@ public class AdditionalURIsForContextNodesTest { public void testMemberRoleChanges(){ String n3 = - " . \n " + + " . \n " + " \"2, Test\" . \n " + - " \"2\"^^ . \n " + - " \"Test\"^^ . \n " + +// " \"2\"^^ . \n " + +// " \"Test\"^^ . \n " + " . \n " + " . \n " + " . \n " + @@ -185,16 +188,16 @@ public class AdditionalURIsForContextNodesTest { " \"Member Role\"^^ . \n " + " . \n " + - " . \n " + + " . \n " + " . \n " + - " . \n " + + " . \n " + " . \n " + " . \n " + " . \n " + " \"University2\"^^ . \n " + - " . \n " + + " . \n " + " . \n " + " . \n " + " . \n " + @@ -228,25 +231,25 @@ public class AdditionalURIsForContextNodesTest { String n3 = " \"3, Test\" . \n" + - " \"3\"^^ .\n" + - " \"Test\"^^ . \n" + - " . \n" + +// " \"3\"^^ .\n" + +// " \"Test\"^^ . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + " . \n" + - " . \n" + + " . \n" + " \"Clinical Role\"^^ . \n" + " . \n" + - " . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + " . \n" + " \"Project1\"^^ . \n" + - " . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + @@ -277,28 +280,28 @@ public class AdditionalURIsForContextNodesTest { String n3 = " \"4, Test\" . \n" + - " \"4\"^^ . \n" + - " \"Test\"^^ . \n" + - " . \n" + +// " \"4\"^^ . \n" + +// " \"Test\"^^ . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + " . \n" + - " . \n" + + " . \n" + " \"Clinical Role 2\"^^ . \n" + " . \n" + - " . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + " . \n" + " \"Service1\"^^ . \n" + - " . \n" + - " . \n" + + " . \n" + + " . \n" + " . \n" + - " . \n" ; + " . \n" ; //make a test model with an person, a clinical role node and a service OntModel model = ModelFactory.createOntologyModel(); @@ -322,26 +325,26 @@ public class AdditionalURIsForContextNodesTest { @Test public void testPresenterRoleChangesForPresentation(){ String n3 = - " . \n" + + " . \n" + " \"5, Test\" . \n" + - " \"5\"^^ . \n" + - " \"Test\"^^ . \n" + +// " \"5\"^^ . \n" + +// " \"Test\"^^ . \n" + " . \n" + " . \n" + " . \n" + " . \n" + - " . \n" + + " . \n" + " \"Presenter Role\"^^ . \n" + " . \n" + - " . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + " . \n" + " \"Presentation 1\"^^ . \n" + - " . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + @@ -370,26 +373,26 @@ public class AdditionalURIsForContextNodesTest { public void testPresenterRoleChangesForInvitedTalk(){ String n3 = - " . \n " + + " . \n " + " \"6, Test\" . \n " + - " \"6\"^^ . \n " + - " \"Test\"^^ . \n " + +// " \"6\"^^ . \n " + +// " \"Test\"^^ . \n " + " . \n " + " . \n " + " . \n " + " . \n " + - " . \n " + + " . \n " + " \"Presenter Role 2\"^^ . \n " + " . \n " + - " . \n " + + " . \n " + " . \n " + " . \n " + " . \n " + " . \n " + " \"Invited Talk 1\"^^ . \n " + - " . \n " + + " . \n " + " . \n " + " . \n " + " . \n " + @@ -405,11 +408,11 @@ public class AdditionalURIsForContextNodesTest { //if the person changes then the invited talk needs to be updated List uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n4112"); - assertTrue("did not find service for clinical role", uris.contains("http://vivo.scripps.edu/individual/n4107" )); + assertTrue("did not find invited talk for person", uris.contains("http://vivo.scripps.edu/individual/n4107" )); //if the invited talk changes then the person needs to be updated uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n4107"); - assertTrue("did not find person for clinical role", uris.contains("http://vivo.scripps.edu/individual/n4112" )); + assertTrue("did not find person for invited talk", uris.contains("http://vivo.scripps.edu/individual/n4112" )); } @@ -420,9 +423,9 @@ public class AdditionalURIsForContextNodesTest { String n3 = " \"7, Test\" . \n" + - " \"7\"^^ . \n" + - " \"Test\"^^ . \n" + - " . \n" + +// " \"7\"^^ . \n" + +// " \"Test\"^^ . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + @@ -430,15 +433,15 @@ public class AdditionalURIsForContextNodesTest { " \"Researcher Role\"^^ . \n" + " . \n" + - " . \n" + + " . \n" + " . \n" + - " . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + " \"Grant1\"^^ . \n" + - " . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + @@ -469,9 +472,9 @@ public class AdditionalURIsForContextNodesTest { String n3 = " \"8, Test\" . \n " + - " \"8\"^^ . \n " + - " \"Test\"^^ . \n " + - " . \n " + +// " \"8\"^^ . \n " + +// " \"Test\"^^ . \n " + + " . \n " + " . \n " + " . \n " + " . \n " + @@ -479,16 +482,16 @@ public class AdditionalURIsForContextNodesTest { " \"Researcher Role 2\"^^ . \n " + " . \n " + - " . \n " + + " . \n " + " . \n " + - " . \n " + + " . \n " + " . \n " + " . \n " + " . \n " + " \"Project2\"^^ . \n " + - " . \n " + + " . \n " + " . \n " + " . \n " + " . \n " + @@ -519,18 +522,18 @@ public class AdditionalURIsForContextNodesTest { String n3 = - " . \n" + + " . \n" + " \"8, Test\" . \n" + - " \"8\"^^ . \n" + - " \"Test\"^^ . \n" + +// " \"8\"^^ . \n" + +// " \"Test\"^^ . \n" + " . \n" + " . \n" + " . \n" + " . \n" + - " . \n" + + " . \n" + " . \n" + - " . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + @@ -539,7 +542,7 @@ public class AdditionalURIsForContextNodesTest { " . \n" + " \"Grant 2\"^^ . \n" + - " . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + @@ -555,11 +558,11 @@ public class AdditionalURIsForContextNodesTest { //if the person changes then the grant needs to be updated List uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n2368"); - assertTrue("did not find service for clinical role", uris.contains("http://vivo.scripps.edu/individual/n1742" )); + assertTrue("did not find grant for pi", uris.contains("http://vivo.scripps.edu/individual/n1742" )); //if the grant changes then the person needs to be updated uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n1742"); - assertTrue("did not find person for clinical role", uris.contains("http://vivo.scripps.edu/individual/n2368" )); + assertTrue("did not find pi for grant", uris.contains("http://vivo.scripps.edu/individual/n2368" )); } @@ -570,17 +573,17 @@ public class AdditionalURIsForContextNodesTest { String n3 = " \"9, Test\" . \n" + - " \"9\"^^ . \n" + - " \"Test\"^^ . \n" + +// " \"9\"^^ . \n" + +// " \"Test\"^^ . \n" + " . \n" + " . \n" + " . \n" + " . \n" + - " . \n" + + " . \n" + - " . \n" + + " . \n" + " . \n" + - " . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + @@ -589,7 +592,7 @@ public class AdditionalURIsForContextNodesTest { " . \n" + " \"Grant 3\"^^ . \n" + - " . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + @@ -619,25 +622,25 @@ public class AdditionalURIsForContextNodesTest { String n3 = " \"10, Test\" . \n" + - " \"10\"^^ . \n" + - " \"Test\"^^ . \n" + +// " \"10\"^^ . \n" + +// " \"Test\"^^ . \n" + " . \n" + " . \n" + " . \n" + " . \n" + - " . \n" + + " . \n" + " . \n" + - " . \n" + + " . \n" + " . \n" + - " . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + " . \n" + " \"Grant 4\"^^ . \n" + - " . \n" + + " . \n" + " . \n" + " . \n" + " . \n" + @@ -653,11 +656,11 @@ public class AdditionalURIsForContextNodesTest { //if the investigator changes then the grant needs to be updated List uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n5282"); - assertTrue("did not find grant for co-pi", uris.contains("http://vivo.scripps.edu/individual/n160" )); + assertTrue("did not find grant for investigator", uris.contains("http://vivo.scripps.edu/individual/n160" )); //if the grant changes then the investigator needs to be updated uris = uriFinder.findAdditionalURIsToIndex( "http://vivo.scripps.edu/individual/n160"); - assertTrue("did not find co-pi for grant", uris.contains("http://vivo.scripps.edu/individual/n5282" )); + assertTrue("did not find investigator for grant", uris.contains("http://vivo.scripps.edu/individual/n5282" ));