1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.rdf.simple;
19
20 import org.apache.commons.rdf.api.BlankNodeOrIRI;
21 import org.apache.commons.rdf.api.IRI;
22 import org.apache.commons.rdf.api.Quad;
23 import org.apache.commons.rdf.api.RDFTerm;
24 import org.apache.commons.rdf.api.Triple;
25
26 import java.util.Objects;
27 import java.util.Optional;
28
29
30
31
32 final class QuadImpl implements Quad {
33
34 private final BlankNodeOrIRI graphName;
35 private final BlankNodeOrIRI subject;
36 private final IRI predicate;
37 private final RDFTerm object;
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 public QuadImpl(final BlankNodeOrIRI graphName, final BlankNodeOrIRI subject, final IRI predicate, final RDFTerm object) {
55 this.graphName = graphName;
56 this.subject = Objects.requireNonNull(subject);
57 this.predicate = Objects.requireNonNull(predicate);
58 this.object = Objects.requireNonNull(object);
59 }
60
61 @Override
62 public Optional<BlankNodeOrIRI> getGraphName() {
63 return Optional.ofNullable(graphName);
64 }
65
66 @Override
67 public BlankNodeOrIRI getSubject() {
68 return subject;
69 }
70
71 @Override
72 public IRI getPredicate() {
73 return predicate;
74 }
75
76 @Override
77 public RDFTerm getObject() {
78 return object;
79 }
80
81 @Override
82 public String toString() {
83 return getSubject().ntriplesString() + " " + getPredicate().ntriplesString() + " "
84 + getObject().ntriplesString() + " " + getGraphName().map(g -> g.ntriplesString() + " ").orElse("")
85 + ".";
86 }
87
88 @Override
89 public int hashCode() {
90 return Objects.hash(subject, predicate, object, graphName);
91 }
92
93 @Override
94 public boolean equals(final Object obj) {
95 if (!(obj instanceof Quad)) {
96 return false;
97 }
98 final Quad other = (Quad) obj;
99 return getGraphName().equals(other.getGraphName()) && getSubject().equals(other.getSubject())
100 && getPredicate().equals(other.getPredicate()) && getObject().equals(other.getObject());
101 }
102
103 @Override
104 public Triple asTriple() {
105 return new TripleImpl(getSubject(), getPredicate(), getObject());
106 }
107
108 }