Search in sources :

Example 1 with Concept

use of eu.europeana.metis.schema.jibx.Concept in project metis-framework by europeana.

the class LanguageClassifierTest method testCreateLanguageTagStatistics.

@Test
void testCreateLanguageTagStatistics() {
    // Create the RDF
    final RdfWrapper rdf = mock(RdfWrapper.class);
    // Create the contextual classes
    final PlaceType place1 = new PlaceType();
    place1.setAbout("place about 1");
    final PlaceType place2 = new PlaceType();
    place2.setAbout("place about 2");
    final TimeSpanType timeSpan = new TimeSpanType();
    timeSpan.setAbout("time span about");
    final Concept concept = new Concept();
    concept.setAbout("concept about");
    doReturn(Arrays.asList(place1, place2)).when(rdf).getPlaces();
    doReturn(Collections.singletonList(timeSpan)).when(rdf).getTimeSpans();
    doReturn(Collections.singletonList(concept)).when(rdf).getConcepts();
    // Create proxies
    final ProxyType providerProxy1 = new ProxyType();
    providerProxy1.setEuropeanaProxy(new EuropeanaProxy());
    providerProxy1.getEuropeanaProxy().setEuropeanaProxy(false);
    final ProxyType providerProxy2 = new ProxyType();
    providerProxy2.setEuropeanaProxy(new EuropeanaProxy());
    providerProxy2.getEuropeanaProxy().setEuropeanaProxy(false);
    doReturn(Arrays.asList(providerProxy1, providerProxy2, null)).when(rdf).getProviderProxies();
    // Test the method.
    final LanguageClassifier classifier = spy(new LanguageClassifier());
    final LanguageTagStatistics result = classifier.createLanguageTagStatistics(rdf);
    verify(classifier, times(1)).addProxyToStatistics(providerProxy1, result);
    verify(classifier, times(1)).addProxyToStatistics(providerProxy2, result);
    verify(classifier, times(2)).addProxyToStatistics(any(), any());
}
Also used : Concept(eu.europeana.metis.schema.jibx.Concept) RdfWrapper(eu.europeana.indexing.utils.RdfWrapper) PlaceType(eu.europeana.metis.schema.jibx.PlaceType) TimeSpanType(eu.europeana.metis.schema.jibx.TimeSpanType) ProxyType(eu.europeana.metis.schema.jibx.ProxyType) EuropeanaProxy(eu.europeana.metis.schema.jibx.EuropeanaProxy) Test(org.junit.jupiter.api.Test)

Example 2 with Concept

use of eu.europeana.metis.schema.jibx.Concept in project metis-framework by europeana.

the class ContextualClassesBreakdownClassifierTest method countQualifyingContextualClassTypes.

@Test
void countQualifyingContextualClassTypes() {
    // Create mocks of the classifier and test empty object.
    final ContextualClassesClassifier classifier = spy(new ContextualClassesClassifier());
    final RdfWrapper entity = mock(RdfWrapper.class);
    assertEquals(0, classifier.countQualifyingContextualClassTypes(entity).getCompleteContextualResources());
    // Create the contextual objects.
    final List<AgentType> agents = Collections.singletonList(new AgentType());
    final List<Concept> concepts = Collections.singletonList(new Concept());
    final List<PlaceType> places = Arrays.asList(new PlaceType(), new PlaceType());
    final List<TimeSpanType> timeSpans = Collections.singletonList(new TimeSpanType());
    doReturn(agents).when(entity).getAgents();
    doReturn(concepts).when(entity).getConcepts();
    doReturn(places).when(entity).getPlaces();
    doReturn(timeSpans).when(entity).getTimeSpans();
    // Set the about values in the contextual objects
    final String agentAbout = "agentAbout";
    final String conceptAbout = "conceptAbout";
    final String linkedPlaceAbout = "linkedPlaceAbout";
    final String unlinkedPlaceAbout = "unlinkedPlaceAbout";
    final String existingTimespanAbout = "existingTimeSpanAbout";
    final String absentTimespanAbout = "absentTimeSpanAbout";
    agents.get(0).setAbout(agentAbout);
    concepts.get(0).setAbout(conceptAbout);
    places.get(0).setAbout(linkedPlaceAbout);
    places.get(1).setAbout(unlinkedPlaceAbout);
    timeSpans.get(0).setAbout(existingTimespanAbout);
    // Create links to most objects and check that they are indeed obtainable.
    final List<ProxyType> proxies = Arrays.asList(new ProxyType(), new ProxyType());
    doReturn(proxies).when(entity).getProviderProxies();
    proxies.get(0).setSameAList(Arrays.asList(new SameAs(), new SameAs(), new SameAs()));
    proxies.get(1).setSameAList(Arrays.asList(new SameAs(), new SameAs(), new SameAs()));
    proxies.get(0).getSameAList().get(0).setResource(agentAbout);
    proxies.get(0).getSameAList().get(1).setResource(conceptAbout);
    proxies.get(0).getSameAList().get(2).setResource(linkedPlaceAbout);
    proxies.get(1).getSameAList().get(0).setResource(agentAbout);
    proxies.get(1).getSameAList().get(1).setResource(existingTimespanAbout);
    proxies.get(1).getSameAList().get(2).setResource(absentTimespanAbout);
    assertEquals(new HashSet<>(Arrays.asList(agentAbout, conceptAbout, linkedPlaceAbout)), ResourceLinkFromProxy.SAME_AS.getLinkAndValueGetter().getLinks(proxies.get(0)).collect(Collectors.toSet()));
    assertEquals(new HashSet<>(Arrays.asList(agentAbout, existingTimespanAbout, absentTimespanAbout)), ResourceLinkFromProxy.SAME_AS.getLinkAndValueGetter().getLinks(proxies.get(1)).collect(Collectors.toSet()));
    // Do the tests for no qualifying entities (except the unlinked one).
    doReturn(false).when(classifier).entityQualifies(agents.get(0));
    doReturn(false).when(classifier).entityQualifies(concepts.get(0));
    doReturn(false).when(classifier).entityQualifies(places.get(0));
    doReturn(true).when(classifier).entityQualifies(places.get(1));
    doReturn(false).when(classifier).entityQualifies(timeSpans.get(0));
    assertEquals(0, classifier.countQualifyingContextualClassTypes(entity).getCompleteContextualResources());
    // Make some of them qualifying and do the tests again.
    doReturn(true).when(classifier).entityQualifies(agents.get(0));
    assertEquals(1, classifier.countQualifyingContextualClassTypes(entity).getCompleteContextualResources());
    doReturn(true).when(classifier).entityQualifies(concepts.get(0));
    assertEquals(2, classifier.countQualifyingContextualClassTypes(entity).getCompleteContextualResources());
    doReturn(true).when(classifier).entityQualifies(places.get(0));
    assertEquals(3, classifier.countQualifyingContextualClassTypes(entity).getCompleteContextualResources());
    doReturn(true).when(classifier).entityQualifies(timeSpans.get(0));
    assertEquals(4, classifier.countQualifyingContextualClassTypes(entity).getCompleteContextualResources());
    // Make some of them non-qualifying and do the tests again.
    doReturn(false).when(classifier).entityQualifies(agents.get(0));
    assertEquals(3, classifier.countQualifyingContextualClassTypes(entity).getCompleteContextualResources());
    doReturn(false).when(classifier).entityQualifies(concepts.get(0));
    assertEquals(2, classifier.countQualifyingContextualClassTypes(entity).getCompleteContextualResources());
    doReturn(false).when(classifier).entityQualifies(places.get(0));
    assertEquals(1, classifier.countQualifyingContextualClassTypes(entity).getCompleteContextualResources());
    doReturn(false).when(classifier).entityQualifies(timeSpans.get(0));
    assertEquals(0, classifier.countQualifyingContextualClassTypes(entity).getCompleteContextualResources());
}
Also used : Concept(eu.europeana.metis.schema.jibx.Concept) PlaceType(eu.europeana.metis.schema.jibx.PlaceType) TimeSpanType(eu.europeana.metis.schema.jibx.TimeSpanType) AgentType(eu.europeana.metis.schema.jibx.AgentType) RdfWrapper(eu.europeana.indexing.utils.RdfWrapper) SameAs(eu.europeana.metis.schema.jibx.SameAs) ProxyType(eu.europeana.metis.schema.jibx.ProxyType) Test(org.junit.jupiter.api.Test)

Example 3 with Concept

use of eu.europeana.metis.schema.jibx.Concept in project metis-framework by europeana.

the class LanguageTagStatisticsTest method testConstruction.

@Test
void testConstruction() {
    // Define some about values
    final String about1 = "about1";
    final String about2 = "about2";
    final String about3 = "about3";
    final String about4 = "about4";
    // Create contextual classes for later use. They are all valid to begin with.
    final PlaceType place1 = new PlaceType();
    place1.setPrefLabelList(Collections.singletonList(createPrefLabel("lang1", "value1")));
    place1.setAbout(about1);
    final PlaceType place2 = new PlaceType();
    place2.setPrefLabelList(Collections.singletonList(createPrefLabel("lang2", "value2")));
    place2.setAbout(about2);
    final TimeSpanType timeSpan = new TimeSpanType();
    timeSpan.setPrefLabelList(Collections.singletonList(createPrefLabel("lang3", "value3")));
    timeSpan.setAbout(about3);
    final Concept concept = new Concept();
    final Concept.Choice choiceA = new Concept.Choice();
    choiceA.setPrefLabel(createPrefLabel("lang4a", "value4a"));
    final Concept.Choice choiceB = new Concept.Choice();
    choiceB.setPrefLabel(createPrefLabel("lang4b", "value4b"));
    concept.setChoiceList(Arrays.asList(choiceA, choiceB));
    concept.setAbout(about4);
    // Test that they are all represented.
    final LanguageTagStatistics statistics1 = new LanguageTagStatistics(Arrays.asList(place1, place2), Collections.singletonList(timeSpan), Collections.singletonList(concept));
    assertEquals(new HashSet<>(Arrays.asList(about1, about2, about3, about4)), statistics1.getContextualClassesWithLanguage());
    assertTrue(statistics1.containsContextualClass(about1));
    assertTrue(statistics1.containsContextualClass(about2));
    assertTrue(statistics1.containsContextualClass(about3));
    assertTrue(statistics1.containsContextualClass(about4));
    // Now make some preflabels invalid.
    place1.getPrefLabelList().get(0).setLang(new Lang());
    place2.getPrefLabelList().get(0).setLang(null);
    timeSpan.getPrefLabelList().get(0).setString(" ");
    concept.getChoiceList().get(0).getPrefLabel().getLang().setLang(" ");
    final LanguageTagStatistics statistics2 = new LanguageTagStatistics(Arrays.asList(place1, place2), Collections.singletonList(timeSpan), Collections.singletonList(concept));
    assertEquals(Collections.singleton(about4), statistics2.getContextualClassesWithLanguage());
    concept.getChoiceList().get(1).getPrefLabel().setString(null);
    final LanguageTagStatistics statistics3 = new LanguageTagStatistics(Arrays.asList(place1, place2), Collections.singletonList(timeSpan), Collections.singletonList(concept));
    assertEquals(Collections.emptySet(), statistics3.getContextualClassesWithLanguage());
    // Now make some preflabel collections invalid
    place1.setPrefLabelList(Collections.emptyList());
    place2.setPrefLabelList(null);
    concept.getChoiceList().forEach(Concept.Choice::clearChoiceListSelect);
    concept.getChoiceList().get(0).setAltLabel(new AltLabel());
    concept.getChoiceList().get(0).getAltLabel().setString("altLabelValue");
    concept.getChoiceList().get(0).getAltLabel().setLang(createLang("altLabelLanguage"));
    concept.getChoiceList().get(1).setAltLabel(null);
    final LanguageTagStatistics statistics4 = new LanguageTagStatistics(Arrays.asList(place1, place2), Collections.singletonList(timeSpan), Collections.singletonList(concept));
    assertEquals(Collections.emptySet(), statistics4.getContextualClassesWithLanguage());
    concept.setChoiceList(null);
    final LanguageTagStatistics statistics5 = new LanguageTagStatistics(Arrays.asList(place1, place2), Collections.singletonList(timeSpan), Collections.singletonList(concept));
    assertEquals(Collections.emptySet(), statistics5.getContextualClassesWithLanguage());
}
Also used : Concept(eu.europeana.metis.schema.jibx.Concept) Choice(eu.europeana.metis.schema.jibx.EuropeanaType.Choice) PlaceType(eu.europeana.metis.schema.jibx.PlaceType) TimeSpanType(eu.europeana.metis.schema.jibx.TimeSpanType) AltLabel(eu.europeana.metis.schema.jibx.AltLabel) Lang(eu.europeana.metis.schema.jibx.LiteralType.Lang) Test(org.junit.jupiter.api.Test)

Example 4 with Concept

use of eu.europeana.metis.schema.jibx.Concept in project metis-framework by europeana.

the class DereferenceUtilsTest method testConceptListExtractedValues.

@Test
void testConceptListExtractedValues() {
    RDF rdf = new RDF();
    ProxyType proxy = new ProxyType();
    ArrayList<ProxyType> proxyList = new ArrayList<>();
    proxyList.add(proxy);
    rdf.setProxyList(proxyList);
    Concept concept = new Concept();
    concept.setAbout("http://dummy1.dum");
    Choice choice1 = new Choice();
    BroadMatch broadMatch = new BroadMatch();
    broadMatch.setResource("http://dummy2.dum");
    choice1.setBroadMatch(broadMatch);
    Choice choice2 = new Choice();
    CloseMatch closeMatch = new CloseMatch();
    closeMatch.setResource("http://dummy3.dum");
    choice2.setCloseMatch(closeMatch);
    Choice choice3 = new Choice();
    ExactMatch exactMatch = new ExactMatch();
    exactMatch.setResource("http://dummy4.dum");
    choice3.setExactMatch(exactMatch);
    Choice choice4 = new Choice();
    NarrowMatch narrowMatch = new NarrowMatch();
    narrowMatch.setResource("http://dummy5.dum");
    choice4.setNarrowMatch(narrowMatch);
    Choice choice5 = new Choice();
    RelatedMatch relatedMatch = new RelatedMatch();
    relatedMatch.setResource("http://dummy6.dum");
    choice5.setRelatedMatch(relatedMatch);
    Choice choice6 = new Choice();
    Related related = new Related();
    related.setResource("http://dummy7.dum");
    choice6.setRelated(related);
    Choice choice7 = new Choice();
    Broader broader = new Broader();
    broader.setResource("http://dummy8.dum");
    choice7.setBroader(broader);
    Choice choice8 = new Choice();
    Note note = new Note();
    note.setString("Note");
    choice8.setNote(note);
    ArrayList<Choice> choiceList = new ArrayList<>();
    choiceList.add(choice1);
    choiceList.add(choice2);
    choiceList.add(choice3);
    choiceList.add(choice4);
    choiceList.add(choice5);
    choiceList.add(choice6);
    choiceList.add(choice7);
    concept.setChoiceList(choiceList);
    ArrayList<Concept> conceptList = new ArrayList<>();
    conceptList.add(concept);
    rdf.setConceptList(conceptList);
    Set<String> result = DereferenceUtils.extractReferencesForDereferencing(rdf);
    assertNotNull(result);
    assertEquals(1, result.size());
    assertTrue(result.contains("http://dummy8.dum"));
}
Also used : Concept(eu.europeana.metis.schema.jibx.Concept) RelatedMatch(eu.europeana.metis.schema.jibx.RelatedMatch) Broader(eu.europeana.metis.schema.jibx.Broader) Choice(eu.europeana.metis.schema.jibx.Concept.Choice) CloseMatch(eu.europeana.metis.schema.jibx.CloseMatch) ArrayList(java.util.ArrayList) ExactMatch(eu.europeana.metis.schema.jibx.ExactMatch) Related(eu.europeana.metis.schema.jibx.Related) BroadMatch(eu.europeana.metis.schema.jibx.BroadMatch) RDF(eu.europeana.metis.schema.jibx.RDF) Note(eu.europeana.metis.schema.jibx.Note) ProxyType(eu.europeana.metis.schema.jibx.ProxyType) NarrowMatch(eu.europeana.metis.schema.jibx.NarrowMatch) Test(org.junit.jupiter.api.Test)

Example 5 with Concept

use of eu.europeana.metis.schema.jibx.Concept in project metis-framework by europeana.

the class ConceptFieldInput method apply.

@Override
public ConceptImpl apply(Concept concept) {
    ConceptImpl conceptMongo = new ConceptImpl();
    conceptMongo.setAbout(concept.getAbout());
    if (concept.getChoiceList() != null) {
        for (Concept.Choice choice : concept.getChoiceList()) {
            applyChoice(choice, conceptMongo);
        }
    }
    return conceptMongo;
}
Also used : ConceptImpl(eu.europeana.corelib.solr.entity.ConceptImpl) Concept(eu.europeana.metis.schema.jibx.Concept)

Aggregations

Concept (eu.europeana.metis.schema.jibx.Concept)9 Test (org.junit.jupiter.api.Test)8 PlaceType (eu.europeana.metis.schema.jibx.PlaceType)5 TimeSpanType (eu.europeana.metis.schema.jibx.TimeSpanType)5 RdfWrapper (eu.europeana.indexing.utils.RdfWrapper)3 AgentType (eu.europeana.metis.schema.jibx.AgentType)3 Note (eu.europeana.metis.schema.jibx.Note)3 ProxyType (eu.europeana.metis.schema.jibx.ProxyType)3 ConceptImpl (eu.europeana.corelib.solr.entity.ConceptImpl)2 AltLabel (eu.europeana.metis.schema.jibx.AltLabel)2 Broader (eu.europeana.metis.schema.jibx.Broader)2 CloseMatch (eu.europeana.metis.schema.jibx.CloseMatch)2 Choice (eu.europeana.metis.schema.jibx.Concept.Choice)2 ExactMatch (eu.europeana.metis.schema.jibx.ExactMatch)2 Lang (eu.europeana.metis.schema.jibx.LiteralType.Lang)2 PrefLabel (eu.europeana.metis.schema.jibx.PrefLabel)2 Related (eu.europeana.metis.schema.jibx.Related)2 ArrayList (java.util.ArrayList)2 HashSet (java.util.HashSet)2 Datastore (dev.morphia.Datastore)1