Merge pull request #51 from barakmich/prefix_string

Prefix vs String for graph.Direction
This commit is contained in:
Barak Michener 2014-07-03 15:54:29 -04:00
commit 70f622aefe
2 changed files with 24 additions and 7 deletions

View file

@ -114,7 +114,7 @@ func (ts *TripleStore) Size() int64 {
func (ts *TripleStore) createKeyFor(d [3]graph.Direction, triple *graph.Triple) []byte { func (ts *TripleStore) createKeyFor(d [3]graph.Direction, triple *graph.Triple) []byte {
key := make([]byte, 0, 2+(ts.hasher.Size()*3)) key := make([]byte, 0, 2+(ts.hasher.Size()*3))
// TODO(kortschak) Remove dependence on String() method. // TODO(kortschak) Remove dependence on String() method.
key = append(key, []byte(d[0].String()+d[1].String())...) key = append(key, []byte{d[0].Prefix(), d[1].Prefix()}...)
key = append(key, ts.convertStringToByteHash(triple.Get(d[0]))...) key = append(key, ts.convertStringToByteHash(triple.Get(d[0]))...)
key = append(key, ts.convertStringToByteHash(triple.Get(d[1]))...) key = append(key, ts.convertStringToByteHash(triple.Get(d[1]))...)
key = append(key, ts.convertStringToByteHash(triple.Get(d[2]))...) key = append(key, ts.convertStringToByteHash(triple.Get(d[2]))...)
@ -124,7 +124,7 @@ func (ts *TripleStore) createKeyFor(d [3]graph.Direction, triple *graph.Triple)
func (ts *TripleStore) createProvKeyFor(d [3]graph.Direction, triple *graph.Triple) []byte { func (ts *TripleStore) createProvKeyFor(d [3]graph.Direction, triple *graph.Triple) []byte {
key := make([]byte, 0, 2+(ts.hasher.Size()*4)) key := make([]byte, 0, 2+(ts.hasher.Size()*4))
// TODO(kortschak) Remove dependence on String() method. // TODO(kortschak) Remove dependence on String() method.
key = append(key, []byte(graph.Provenance.String()+d[0].String())...) key = append(key, []byte{graph.Provenance.Prefix(), d[0].Prefix()}...)
key = append(key, ts.convertStringToByteHash(triple.Get(graph.Provenance))...) key = append(key, ts.convertStringToByteHash(triple.Get(graph.Provenance))...)
key = append(key, ts.convertStringToByteHash(triple.Get(d[0]))...) key = append(key, ts.convertStringToByteHash(triple.Get(d[0]))...)
key = append(key, ts.convertStringToByteHash(triple.Get(d[1]))...) key = append(key, ts.convertStringToByteHash(triple.Get(d[1]))...)

View file

@ -60,18 +60,35 @@ const (
Provenance Provenance
) )
func (d Direction) Prefix() byte {
switch d {
case Any:
return 'a'
case Subject:
return 's'
case Predicate:
return 'p'
case Provenance:
return 'c'
case Object:
return 'o'
default:
return '\x00'
}
}
func (d Direction) String() string { func (d Direction) String() string {
switch d { switch d {
case Any: case Any:
return "a" return "any"
case Subject: case Subject:
return "s" return "subject"
case Predicate: case Predicate:
return "p" return "predicate"
case Provenance: case Provenance:
return "c" return "provenance"
case Object: case Object:
return "o" return "object"
default: default:
return fmt.Sprint("illegal direction:", byte(d)) return fmt.Sprint("illegal direction:", byte(d))
} }