Repository: incubator-commonsrdf Updated Branches: refs/heads/master c6c4cbfcf -> 1f19fd831
updated example from introduction.html Project: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/commit/1f19fd83 Tree: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/tree/1f19fd83 Diff: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/diff/1f19fd83 Branch: refs/heads/master Commit: 1f19fd831f13e5e1a443719b2a9a0e38ba8f0e99 Parents: c6c4cbf Author: Stian Soiland-Reyes <st...@apache.org> Authored: Mon Nov 21 14:05:28 2016 +0000 Committer: Stian Soiland-Reyes <st...@apache.org> Committed: Mon Nov 21 14:05:28 2016 +0000 ---------------------------------------------------------------------- examples/src/example/IntroToRDF.java | 176 +++++++++++++++++++++--------- 1 file changed, 122 insertions(+), 54 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/1f19fd83/examples/src/example/IntroToRDF.java ---------------------------------------------------------------------- diff --git a/examples/src/example/IntroToRDF.java b/examples/src/example/IntroToRDF.java index 0aa97f0..58aea85 100644 --- a/examples/src/example/IntroToRDF.java +++ b/examples/src/example/IntroToRDF.java @@ -20,60 +20,128 @@ package example; import org.apache.commons.rdf.api.*; import org.apache.commons.rdf.simple.SimpleRDF; +/** See http://commonsrdf.incubator.apache.org/introduction.html + */ public class IntroToRDF { public static void main(String[] args) { - RDF rdf = new SimpleRDF(); - - IRI alice = rdf.createIRI("Alice"); - System.out.println(alice.ntriplesString()); - - IRI knows = rdf.createIRI("knows"); - IRI bob = rdf.createIRI("Bob"); - - Triple aliceKnowsBob = rdf.createTriple(alice, knows, bob); - System.out.println(aliceKnowsBob.getSubject().ntriplesString()); - - System.out.println(aliceKnowsBob); - - Graph graph = rdf.createGraph(); - graph.add(aliceKnowsBob); - - IRI charlie = rdf.createIRI("Charlie"); - - IRI plays = rdf.createIRI("plays"); - - IRI football = rdf.createIRI("Football"); - IRI tennis = rdf.createIRI("Tennis"); - - graph.add(alice, knows, charlie); - graph.add(alice, plays, tennis); - graph.add(bob, knows, charlie); - graph.add(bob, plays, football); - graph.add(charlie, plays, tennis); - - System.out.println("Who plays Tennis?"); - for (Triple triple : graph.iterate(null, plays, tennis)) { - System.out.println(triple.getSubject()); - System.out.println(plays.equals(triple.getPredicate())); - System.out.println(tennis.equals(triple.getObject())); - } - - System.out.println("Who does Alice know?"); - for (Triple triple : graph.iterate(alice, knows, null)) { - System.out.println(triple.getObject()); - } - - - System.out.println("Does Alice anyone that plays Football?"); - for (Triple triple : graph.iterate(alice, knows, null)) { - RDFTerm aliceFriend = triple.getObject(); - if (! (aliceFriend instanceof BlankNodeOrIRI)) { - continue; - } - if (graph.contains( (BlankNodeOrIRI)aliceFriend, plays, football)) { - System.out.println("Yes, " + aliceFriend); - } - } - - } + RDF rdf = new SimpleRDF(); + + IRI alice = rdf.createIRI("Alice"); + System.out.println(alice.ntriplesString()); + + IRI knows = rdf.createIRI("knows"); + IRI bob = rdf.createIRI("Bob"); + + Triple aliceKnowsBob = rdf.createTriple(alice, knows, bob); + System.out.println(aliceKnowsBob.getSubject().ntriplesString()); + + System.out.println(aliceKnowsBob); + + Graph graph = rdf.createGraph(); + graph.add(aliceKnowsBob); + + IRI charlie = rdf.createIRI("Charlie"); + + IRI plays = rdf.createIRI("plays"); + + IRI football = rdf.createIRI("Football"); + IRI tennis = rdf.createIRI("Tennis"); + + graph.add(alice, knows, charlie); + graph.add(alice, plays, tennis); + graph.add(bob, knows, charlie); + graph.add(bob, plays, football); + graph.add(charlie, plays, tennis); + + System.out.println("Who plays Tennis?"); + for (Triple triple : graph.iterate(null, plays, tennis)) { + System.out.println(triple.getSubject()); + System.out.println(plays.equals(triple.getPredicate())); + System.out.println(tennis.equals(triple.getObject())); + } + + System.out.println("Who does Alice know?"); + for (Triple triple : graph.iterate(alice, knows, null)) { + System.out.println(triple.getObject()); + } + + + System.out.println("Does Alice anyone that plays Football?"); + for (Triple triple : graph.iterate(alice, knows, null)) { + RDFTerm aliceFriend = triple.getObject(); + if (! (aliceFriend instanceof BlankNodeOrIRI)) { + continue; + } + if (graph.contains( (BlankNodeOrIRI)aliceFriend, plays, football)) { + System.out.println("Yes, it is " + aliceFriend); + } + } + + Literal aliceName = rdf.createLiteral("Alice W. Land"); + IRI name = rdf.createIRI("name"); + graph.add(alice, name, aliceName); + + Optional<? extends Triple> nameTriple = graph.stream(alice, name, null).findAny(); + if (nameTriple.isPresent()) { + System.out.println(nameTriple.get()); + } + + + graph.stream(alice, name, null) + .findAny().map(Triple::getObject) + .filter(obj -> obj instanceof Literal) + .map(literalName -> ((Literal)literalName).getLexicalForm()) + .ifPresent(System.out::println); + + IRI playerRating = rdf.createIRI("playerRating"); + Literal aliceRating = rdf.createLiteral("13.37", Types.XSD_FLOAT); + graph.add(alice, playerRating, aliceRating); + + Literal footballInEnglish = rdf.createLiteral("football", "en"); + Literal footballInNorwegian = rdf.createLiteral("fotball", "no"); + graph.add(football, name, footballInEnglish); + graph.add(football, name, footballInNorwegian); + + Literal footballInAmericanEnglish = rdf.createLiteral("soccer", "en-US"); + graph.add(football, name, footballInAmericanEnglish); + + BlankNode someone = rdf.createBlankNode(); + graph.add(charlie, knows, someone); + graph.add(someone, plays, football); + + BlankNode someoneElse = rdf.createBlankNode(); + graph.add(charlie, knows, someoneElse); + + for (Triple heKnows : graph.iterate(charlie, knows, null)) { + if (! (heKnows.getObject() instanceof BlankNodeOrIRI)) { + continue; + } + BlankNodeOrIRI who = (BlankNodeOrIRI)heKnows.getObject(); + System.out.println("Charlie knows "+ who); + for (Triple whoPlays : graph.iterate(who, plays, null)) { + System.out.println(" who plays " + whoPlays.getObject()); + } + } + + // Delete previous BlankNode statements + graph.remove(null,null,someone); + graph.remove(someone,null,null); + + // no Java variable for the new BlankNode instance + graph.add(charlie, knows, rdf.createBlankNode("someone")); + // at any point later (with the same RDF instance) + graph.add(rdf.createBlankNode("someone"), plays, football); + + for (Triple heKnows : graph.iterate(charlie, knows, null)) { + if (! (heKnows.getObject() instanceof BlankNodeOrIRI)) { + continue; + } + BlankNodeOrIRI who = (BlankNodeOrIRI)heKnows.getObject(); + System.out.println("Charlie knows "+ who); + for (Triple whoPlays : graph.iterate(who, plays, null)) { + System.out.println(" who plays " + whoPlays.getObject()); + } + } + + } }