public void cloneReturnsTripleStoreContainingSameStatements() { TripleStore store = MakeNewTripleStore(); store.Add(new Statement(new BlankNode(), new UriRef("http://example.com/pred"), new BlankNode())); store.Add(new Statement(new BlankNode(), new UriRef("http://example.com/pred2"), new PlainLiteral("foo", "jp"))); store.Add(new Statement(new UriRef("http://example.com/the-thing"), new UriRef("http://example.com/pred3"), new TypedLiteral("1", "http://example.com/types/numeric"))); store.Add(new Statement(new UriRef("http://example.com/other-thing"), new UriRef("http://example.com/pred4"), new UriRef("http://example.com/the-thing"))); TripleStore clone = (TripleStore)store.Clone(); Assert.AreEqual(store.NodeCount, clone.NodeCount); Assert.AreEqual(store.ResourceCount, clone.ResourceCount); TripleStoreVerifier verifier = new TripleStoreVerifier(); verifier.expect("_:a <http://example.com/pred> _:b ."); verifier.expect("_:c <http://example.com/pred2> \"foo\"@jp ."); verifier.expect("<http://example.com/the-thing> <http://example.com/pred3> \"1\"^^<http://example.com/types/numeric> ."); verifier.expect("<http://example.com/other-thing> <http://example.com/pred4> <http://example.com/the-thing> ."); Assert.IsTrue(verifier.verify(clone)); clone.Clear(); store.Clear(); }
public void AddStatementDistinguishesDifferentBlankNodeInstancesForObjects() { TripleStore store = MakeNewTripleStore(); store.Add(new Statement(new UriRef("http://example.com/subj1"), new UriRef("http://example.com/pred"), new BlankNode())); store.Add(new Statement(new UriRef("http://example.com/subj1"), new UriRef("http://example.com/pred"), new BlankNode())); TripleStoreVerifier verifier = new TripleStoreVerifier(); verifier.expect("<http://example.com/subj1> <http://example.com/pred> _:blank1 ."); verifier.expect("<http://example.com/subj1> <http://example.com/pred> _:blank2 ."); Assert.IsTrue(verifier.verify(store)); store.Clear(); }
public void AddTripleStoreWithCommonNodes() { UriRef node1 = new UriRef("any:node1"); UriRef node2 = new UriRef("any:node2"); UriRef node3 = new UriRef("any:node3"); UriRef node4 = new UriRef("any:node4"); UriRef node5 = new UriRef("any:node5"); UriRef node6 = new UriRef("any:node6"); UriRef predicate1 = new UriRef("any:predicate1"); UriRef predicate2 = new UriRef("any:predicate2"); UriRef predicate3 = new UriRef("any:predicate3"); Statement statement1 = new Statement(node1, predicate1, node2); Statement statement2 = new Statement(node3, predicate2, node4); Statement statement3 = new Statement(node5, predicate3, node6); Statement statement4 = new Statement(node1, predicate2, node6); TripleStore firstStore = MakeNewTripleStore(); firstStore.Add(statement1); TripleStore secondStore = MakeNewTripleStore(); secondStore.Add(statement2); secondStore.Add(statement3); secondStore.Add(statement4); firstStore.Add(secondStore); TripleStoreVerifier verifierFirst = new TripleStoreVerifier(); verifierFirst.expect("<any:node1> <any:predicate1> <any:node2> ."); verifierFirst.expect("<any:node3> <any:predicate2> <any:node4> ."); verifierFirst.expect("<any:node5> <any:predicate3> <any:node6> ."); verifierFirst.expect("<any:node1> <any:predicate2> <any:node6> ."); Assert.IsTrue(verifierFirst.verify(firstStore), "first knowledge base includes triples from second"); TripleStoreVerifier verifierSecond = new TripleStoreVerifier(); verifierSecond.expect("<any:node3> <any:predicate2> <any:node4> ."); verifierSecond.expect("<any:node5> <any:predicate3> <any:node6> ."); verifierSecond.expect("<any:node1> <any:predicate2> <any:node6> ."); Assert.IsTrue(verifierSecond.verify(secondStore), "second knowledge base is unchanged"); firstStore.Clear(); secondStore.Clear(); }
public void AddDistinguishesDifferentBlankNodeInstances() { Node theSubject = new NodeStub("http://example.com/subj"); Arc thePredicate = new UriRef("http://example.com/pred"); Node theFirstObject = new UriRef("http://example.com/obj1"); Node theSecondObject = new UriRef("http://example.com/obj2"); TripleStore store = MakeNewTripleStore(); store.Add(new Statement(new BlankNode(), new UriRef("http://example.com/pred"), new UriRef("http://example.com/obj1"))); store.Add(new Statement(new BlankNode(), new UriRef("http://example.com/pred"), new UriRef("http://example.com/obj2"))); TripleStoreVerifier verifier = new TripleStoreVerifier(); verifier.expect("_:node1 <http://example.com/pred> <http://example.com/obj1> ."); verifier.expect("_:node2 <http://example.com/pred> <http://example.com/obj2> ."); Assert.IsTrue(verifier.verify(store)); store.Clear(); }
public void AddStatementDistinguishesDifferentBlankNodeInstancesForSubjects() { TripleStore store = MakeNewTripleStore(); BlankNode node1 = new BlankNode(); BlankNode node2 = new BlankNode(); store.Add(new Statement(node1, new UriRef("http://example.com/pred"), new UriRef("http://example.com/obj1"))); store.Add(new Statement(node1, new UriRef("http://example.com/pred"), new UriRef("http://example.com/obj2"))); store.Add(new Statement(node2, new UriRef("http://example.com/pred"), new UriRef("http://example.com/obj2"))); TripleStoreVerifier verifier = new TripleStoreVerifier(); verifier.expect("_:node1 <http://example.com/pred> <http://example.com/obj1> ."); verifier.expect("_:node1 <http://example.com/pred> <http://example.com/obj2> ."); verifier.expect("_:node2 <http://example.com/pred> <http://example.com/obj2> ."); Assert.IsTrue(verifier.verify(store)); store.Clear(); }
public void AddAllowsSingleQuotesInUriRefs() { TripleStore store = MakeNewTripleStore(); store.Add(new Statement(new UriRef("ex:subj"), new UriRef("ex:pred"), new UriRef("ex:fo'o"))); TripleStoreVerifier verifier = new TripleStoreVerifier(); verifier.expect("<ex:subj> <ex:pred> <ex:fo'o> ."); Assert.IsTrue(verifier.verify(store)); store.Clear(); }
public void AddAllowsSingleQuotesInTypedLiteralValues() { TripleStore store = MakeNewTripleStore(); store.Add(new Statement(new UriRef("ex:subj"), new UriRef("ex:pred"), new TypedLiteral("d'arby", "ex:foo"))); TripleStoreVerifier verifier = new TripleStoreVerifier(); verifier.expect("<ex:subj> <ex:pred> \"d'arby\"^^<ex:foo> ."); Assert.IsTrue(verifier.verify(store)); store.Clear(); }
public void AddAllowsSingleQuotesInLiteralLanguages() { TripleStore store = MakeNewTripleStore(); store.Add(new Statement(new UriRef("ex:subj"), new UriRef("ex:pred"), new PlainLiteral("darby", "f'oo"))); TripleStoreVerifier verifier = new TripleStoreVerifier(); verifier.expect("<ex:subj> <ex:pred> \"darby\"@f'oo ."); Assert.IsTrue(verifier.verify(store)); store.Clear(); }
public void AddDoesNotAllowDuplicates() { TripleStore store = MakeNewTripleStore(); store.Add(new Statement(new UriRef("http://example.com/subj"), new UriRef("http://example.com/pred"), new UriRef("http://example.com/obj"))); store.Add(new Statement(new UriRef("http://example.com/subj"), new UriRef("http://example.com/pred"), new UriRef("http://example.com/obj"))); TripleStoreVerifier verifier = new TripleStoreVerifier(); verifier.expect("<http://example.com/subj> <http://example.com/pred> <http://example.com/obj> ."); Assert.IsTrue(verifier.verify(store)); store.Clear(); }
public void AddTripleStoreWithIdenticalNodesDenotingDifferentResources() { UriRef node1 = new UriRef("any:node1"); UriRef node2 = new UriRef("any:node2"); UriRef node3 = new UriRef("any:node3"); UriRef predicate1 = new UriRef("any:predicate1"); UriRef predicate2 = new UriRef("any:predicate2"); Statement statement1 = new Statement(node1, predicate1, node2); Statement statement2 = new Statement(node1, predicate2, node3); TripleStore firstStore = MakeNewTripleStore(); firstStore.Add(statement1); Resource node1ResourceBefore = firstStore.GetResourceDenotedBy(node1); TripleStore secondStore = MakeNewTripleStore(); firstStore.Add(statement2); firstStore.Add(secondStore); Resource node1ResourceAfter = firstStore.GetResourceDenotedBy(node1); Assert.AreEqual(node1ResourceBefore, node1ResourceAfter); TripleStoreVerifier verifierFirst = new TripleStoreVerifier(); verifierFirst.expect("<any:node1> <any:predicate1> <any:node2> ."); verifierFirst.expect("<any:node1> <any:predicate2> <any:node3> ."); Assert.IsTrue(verifierFirst.verify(firstStore), "first knowledge base includes triples from second"); firstStore.Clear(); secondStore.Clear(); }