package eu.fbk.knowledgestore; import java.util.Set; import com.google.common.collect.ImmutableList; import com.google.common.collect.Sets; import org.junit.Assert; import org.junit.Test; import org.openrdf.model.URI; import org.openrdf.model.impl.URIImpl; import org.openrdf.model.vocabulary.DCTERMS; import org.openrdf.model.vocabulary.OWL; import org.openrdf.model.vocabulary.RDF; import org.openrdf.model.vocabulary.RDFS; import eu.fbk.knowledgestore.data.Data; import eu.fbk.knowledgestore.data.Record; import eu.fbk.knowledgestore.vocabulary.KS; import eu.fbk.knowledgestore.vocabulary.NIF; public class RecordTest { private static final URI BOOL_PROP = new URIImpl("test:boolProp"); @Test public void test() { final Record r = Record.create(); r.setID(Data.getValueFactory().createURI("test:r")); r.set(DCTERMS.TITLE, "this is the title"); final Record r2 = Record.create(); r2.setID(Data.getValueFactory().createURI("test:r2")); r2.set(DCTERMS.TITLE, "this is the title"); final Record m = Record.create(); m.setID(Data.getValueFactory().createURI("test:x")); m.set(NIF.END_INDEX, 15); m.set(RDFS.COMMENT, "first", "second", "third"); m.set(KS.MENTION_OF, r, r2); System.out.println(m.toString(Data.getNamespaceMap(), true)); } @Test public void testPropertyAccessors() { final Record r = Record.create(); checkSet(r.getProperties()); checkSet(r.get(RDF.TYPE)); Assert.assertTrue(r.isNull(RDF.TYPE)); Assert.assertTrue(r.isUnique(RDF.TYPE)); Assert.assertFalse(r.isTrue(BOOL_PROP)); Assert.assertFalse(r.isFalse(BOOL_PROP)); r.set(RDF.TYPE, OWL.THING); checkSet(r.getProperties(), RDF.TYPE); checkSet(r.get(RDF.TYPE), OWL.THING); Assert.assertFalse(r.isNull(RDF.TYPE)); Assert.assertTrue(r.isUnique(RDF.TYPE)); try { r.isTrue(RDF.TYPE); Assert.fail(); } catch (final IllegalArgumentException ex) { // ignore } try { r.isFalse(RDF.TYPE); Assert.fail(); } catch (final IllegalArgumentException ex) { // ignore } r.add(RDF.TYPE, RDFS.RESOURCE); checkSet(r.getProperties(), RDF.TYPE); checkSet(r.get(RDF.TYPE), OWL.THING, RDFS.RESOURCE); Assert.assertFalse(r.isUnique(RDF.TYPE)); r.remove(RDF.TYPE, RDFS.RESOURCE); checkSet(r.getProperties(), RDF.TYPE); checkSet(r.get(RDF.TYPE), OWL.THING); Assert.assertTrue(r.isUnique(RDF.TYPE)); r.add(RDFS.LABEL, "label"); checkSet(r.getProperties(), RDF.TYPE, RDFS.LABEL); r.remove(RDFS.LABEL, "label"); checkSet(r.getProperties(), RDF.TYPE); r.set(RDF.TYPE, null); checkSet(r.getProperties()); checkSet(r.get(RDF.TYPE)); Assert.assertTrue(r.isNull(RDF.TYPE)); r.set(RDF.TYPE, ImmutableList.of(OWL.THING)); checkSet(r.getProperties(), RDF.TYPE); checkSet(r.get(RDF.TYPE), OWL.THING); r.set(RDF.TYPE, null); checkSet(r.getProperties()); checkSet(r.get(RDF.TYPE)); r.set(BOOL_PROP, true); Assert.assertTrue(r.isTrue(BOOL_PROP)); Assert.assertFalse(r.isFalse(BOOL_PROP)); r.set(BOOL_PROP, false); Assert.assertFalse(r.isTrue(BOOL_PROP)); Assert.assertTrue(r.isFalse(BOOL_PROP)); r.add(BOOL_PROP, true); try { r.isTrue(BOOL_PROP); Assert.fail(); } catch (final IllegalStateException ex) { // ignore } try { r.isFalse(BOOL_PROP); Assert.fail(); } catch (final IllegalStateException ex) { // ignore } } private void checkSet(final Iterable<?> nodes, final Object... expected) { final Set<Object> nodeSet = Sets.newHashSet(nodes); Assert.assertEquals(expected.length, nodeSet.size()); for (final Object element : expected) { Assert.assertTrue(nodeSet.contains(element)); } } }