Rename Provenance -> Label

's/Provenance/Label/g' 's/provenance/label/g' with human vetting.
This commit is contained in:
kortschak 2014-07-29 08:44:39 +09:30
parent 410202f3e0
commit 274d9ef57e
20 changed files with 416 additions and 416 deletions

View file

@ -26,7 +26,7 @@ Usually something that should be taken care of.
### Bootstraps
Start discussing bootstrap triples, things that make the database self-describing, if they exist (though they need not). Talk about sameAs and indexing and type systems and whatnot.
### Better surfacing of Provenance
### Better surfacing of Label
It exists, it's indexed, but it's basically useless right now
### Optimize HasA Iterator
@ -39,7 +39,7 @@ A simple example is just to convert the HasA to a fixed (next them out) if the s
A way to limit the number of subresults at a point, without even running the query. Essentially, much as GetLimit() does for the end, be able to do the same in between
#### "Up" and "Down" traversals
Getting to the predicates from a node, or the nodes from a predicate, or some odd combinations thereof. Ditto for provenance.
Getting to the predicates from a node, or the nodes from a predicate, or some odd combinations thereof. Ditto for label.
#### Value comparison
Expose the value-comparison iterator in the language

View file

@ -93,7 +93,7 @@ POST Body: JSON triples
"subject": "Subject Node",
"predicate": "Predicate Node",
"object": "Object node",
"provenance": "Provenance node" // Optional
"label": "Label node" // Optional
}] // More than one triple allowed.
```
@ -121,7 +121,7 @@ POST Body: JSON triples
"subject": "Subject Node",
"predicate": "Predicate Node",
"object": "Object node",
"provenance": "Provenance node" // Optional
"label": "Label node" // Optional
}] // More than one triple allowed.
```

View file

@ -17,7 +17,7 @@ package iterator
// "Value Comparison" is a unary operator -- a filter across the values in the
// relevant subiterator.
//
// This is hugely useful for things like provenance, but value ranges in general
// This is hugely useful for things like label, but value ranges in general
// come up from time to time. At *worst* we're as big as our underlying iterator.
// At best, we're the null iterator.
//

View file

@ -124,7 +124,7 @@ func PositionOf(prefix []byte, d quad.Direction, qs *TripleStore) int {
return qs.hasher.Size() + 2
case quad.Object:
return 2*qs.hasher.Size() + 2
case quad.Provenance:
case quad.Label:
return -1
}
}
@ -136,7 +136,7 @@ func PositionOf(prefix []byte, d quad.Direction, qs *TripleStore) int {
return 2
case quad.Object:
return qs.hasher.Size() + 2
case quad.Provenance:
case quad.Label:
return -1
}
}
@ -148,7 +148,7 @@ func PositionOf(prefix []byte, d quad.Direction, qs *TripleStore) int {
return 2*qs.hasher.Size() + 2
case quad.Object:
return 2
case quad.Provenance:
case quad.Label:
return -1
}
}
@ -160,7 +160,7 @@ func PositionOf(prefix []byte, d quad.Direction, qs *TripleStore) int {
return qs.hasher.Size() + 2
case quad.Object:
return 3*qs.hasher.Size() + 2
case quad.Provenance:
case quad.Label:
return 2
}
}

View file

@ -73,7 +73,7 @@ func (o ordered) Less(i, j int) bool {
o[i].Subject == o[j].Subject &&
o[i].Predicate == o[j].Predicate &&
o[i].Object == o[j].Object &&
o[i].Provenance < o[j].Provenance:
o[i].Label < o[j].Label:
return true
@ -359,8 +359,8 @@ func TestSetIterator(t *testing.T) {
t.Errorf("Failed to get expected results from predicate iterator, got:%v expect:%v", got, expect)
}
// Provenance iterator.
it = qs.TripleIterator(quad.Provenance, qs.ValueOf("status_graph"))
// Label iterator.
it = qs.TripleIterator(quad.Label, qs.ValueOf("status_graph"))
expect = []*quad.Quad{
{"B", "status", "cool", "status_graph"},

View file

@ -125,8 +125,8 @@ func (qs *TripleStore) createKeyFor(d [3]quad.Direction, triple *quad.Quad) []by
func (qs *TripleStore) createProvKeyFor(d [3]quad.Direction, triple *quad.Quad) []byte {
key := make([]byte, 0, 2+(qs.hasher.Size()*4))
// TODO(kortschak) Remove dependence on String() method.
key = append(key, []byte{quad.Provenance.Prefix(), d[0].Prefix()}...)
key = append(key, qs.convertStringToByteHash(triple.Get(quad.Provenance))...)
key = append(key, []byte{quad.Label.Prefix(), d[0].Prefix()}...)
key = append(key, qs.convertStringToByteHash(triple.Get(quad.Label))...)
key = append(key, qs.convertStringToByteHash(triple.Get(d[0]))...)
key = append(key, qs.convertStringToByteHash(triple.Get(d[1]))...)
key = append(key, qs.convertStringToByteHash(triple.Get(d[2]))...)
@ -176,9 +176,9 @@ func (qs *TripleStore) RemoveTriple(t *quad.Quad) {
qs.UpdateValueKeyBy(t.Get(quad.Subject), -1, batch)
qs.UpdateValueKeyBy(t.Get(quad.Predicate), -1, batch)
qs.UpdateValueKeyBy(t.Get(quad.Object), -1, batch)
if t.Get(quad.Provenance) != "" {
if t.Get(quad.Label) != "" {
batch.Delete(qs.createProvKeyFor(pso, t))
qs.UpdateValueKeyBy(t.Get(quad.Provenance), -1, batch)
qs.UpdateValueKeyBy(t.Get(quad.Label), -1, batch)
}
err = qs.db.Write(batch, nil)
if err != nil {
@ -197,7 +197,7 @@ func (qs *TripleStore) buildTripleWrite(batch *leveldb.Batch, t *quad.Quad) {
batch.Put(qs.createKeyFor(spo, t), bytes)
batch.Put(qs.createKeyFor(osp, t), bytes)
batch.Put(qs.createKeyFor(pos, t), bytes)
if t.Get(quad.Provenance) != "" {
if t.Get(quad.Label) != "" {
batch.Put(qs.createProvKeyFor(pso, t), bytes)
}
}
@ -207,8 +207,8 @@ func (qs *TripleStore) buildWrite(batch *leveldb.Batch, t *quad.Quad) {
qs.UpdateValueKeyBy(t.Get(quad.Subject), 1, nil)
qs.UpdateValueKeyBy(t.Get(quad.Predicate), 1, nil)
qs.UpdateValueKeyBy(t.Get(quad.Object), 1, nil)
if t.Get(quad.Provenance) != "" {
qs.UpdateValueKeyBy(t.Get(quad.Provenance), 1, nil)
if t.Get(quad.Label) != "" {
qs.UpdateValueKeyBy(t.Get(quad.Label), 1, nil)
}
}
@ -272,8 +272,8 @@ func (qs *TripleStore) AddTripleSet(t_s []*quad.Quad) {
resizeMap[t.Subject]++
resizeMap[t.Predicate]++
resizeMap[t.Object]++
if t.Provenance != "" {
resizeMap[t.Provenance]++
if t.Label != "" {
resizeMap[t.Label]++
}
}
for k, v := range resizeMap {
@ -411,7 +411,7 @@ func (qs *TripleStore) TripleIterator(d quad.Direction, val graph.Value) graph.I
prefix = "po"
case quad.Object:
prefix = "os"
case quad.Provenance:
case quad.Label:
prefix = "cp"
default:
panic("unreachable " + d.String())

View file

@ -29,7 +29,7 @@ type TripleDirectionIndex struct {
subject map[int64]*llrb.LLRB
predicate map[int64]*llrb.LLRB
object map[int64]*llrb.LLRB
provenance map[int64]*llrb.LLRB
label map[int64]*llrb.LLRB
}
func NewTripleDirectionIndex() *TripleDirectionIndex {
@ -37,7 +37,7 @@ func NewTripleDirectionIndex() *TripleDirectionIndex {
tdi.subject = make(map[int64]*llrb.LLRB)
tdi.predicate = make(map[int64]*llrb.LLRB)
tdi.object = make(map[int64]*llrb.LLRB)
tdi.provenance = make(map[int64]*llrb.LLRB)
tdi.label = make(map[int64]*llrb.LLRB)
return &tdi
}
@ -49,8 +49,8 @@ func (tdi *TripleDirectionIndex) GetForDir(d quad.Direction) map[int64]*llrb.LLR
return tdi.object
case quad.Predicate:
return tdi.predicate
case quad.Provenance:
return tdi.provenance
case quad.Label:
return tdi.label
}
panic("illegal direction")
}
@ -104,9 +104,9 @@ func (ts *TripleStore) AddTripleSet(triples []*quad.Quad) {
func (ts *TripleStore) tripleExists(t *quad.Quad) (bool, int64) {
smallest := -1
var smallest_tree *llrb.LLRB
for d := quad.Subject; d <= quad.Provenance; d++ {
for d := quad.Subject; d <= quad.Label; d++ {
sid := t.Get(d)
if d == quad.Provenance && sid == "" {
if d == quad.Label && sid == "" {
continue
}
id, ok := ts.idMap[sid]
@ -148,9 +148,9 @@ func (ts *TripleStore) AddTriple(t *quad.Quad) {
ts.size++
ts.tripleIdCounter++
for d := quad.Subject; d <= quad.Provenance; d++ {
for d := quad.Subject; d <= quad.Label; d++ {
sid := t.Get(d)
if d == quad.Provenance && sid == "" {
if d == quad.Label && sid == "" {
continue
}
if _, ok := ts.idMap[sid]; !ok {
@ -160,8 +160,8 @@ func (ts *TripleStore) AddTriple(t *quad.Quad) {
}
}
for d := quad.Subject; d <= quad.Provenance; d++ {
if d == quad.Provenance && t.Get(d) == "" {
for d := quad.Subject; d <= quad.Label; d++ {
if d == quad.Label && t.Get(d) == "" {
continue
}
id := ts.idMap[t.Get(d)]
@ -183,8 +183,8 @@ func (ts *TripleStore) RemoveTriple(t *quad.Quad) {
ts.triples[tripleID] = quad.Quad{}
ts.size--
for d := quad.Subject; d <= quad.Provenance; d++ {
if d == quad.Provenance && t.Get(d) == "" {
for d := quad.Subject; d <= quad.Label; d++ {
if d == quad.Label && t.Get(d) == "" {
continue
}
id := ts.idMap[t.Get(d)]
@ -192,8 +192,8 @@ func (ts *TripleStore) RemoveTriple(t *quad.Quad) {
tree.Delete(Int64(tripleID))
}
for d := quad.Subject; d <= quad.Provenance; d++ {
if d == quad.Provenance && t.Get(d) == "" {
for d := quad.Subject; d <= quad.Label; d++ {
if d == quad.Label && t.Get(d) == "" {
continue
}
id, ok := ts.idMap[t.Get(d)]
@ -201,8 +201,8 @@ func (ts *TripleStore) RemoveTriple(t *quad.Quad) {
continue
}
stillExists := false
for d := quad.Subject; d <= quad.Provenance; d++ {
if d == quad.Provenance && t.Get(d) == "" {
for d := quad.Subject; d <= quad.Label; d++ {
if d == quad.Label && t.Get(d) == "" {
continue
}
nodeTree := ts.index.GetOrCreate(d, id)

View file

@ -58,7 +58,7 @@ func makeTestStore(data []*quad.Quad) (*TripleStore, []pair) {
ind []pair
)
for _, t := range data {
for _, qp := range []string{t.Subject, t.Predicate, t.Object, t.Provenance} {
for _, qp := range []string{t.Subject, t.Predicate, t.Object, t.Label} {
if _, ok := seen[qp]; !ok && qp != "" {
val++
ind = append(ind, pair{qp, val})

View file

@ -53,8 +53,8 @@ func NewIterator(qs *TripleStore, collection string, d quad.Direction, val graph
m.constraint = bson.M{"Predicate": m.name}
case quad.Object:
m.constraint = bson.M{"Object": m.name}
case quad.Provenance:
m.constraint = bson.M{"Provenance": m.name}
case quad.Label:
m.constraint = bson.M{"Label": m.name}
}
m.qs = qs
@ -143,7 +143,7 @@ func (it *Iterator) Check(v graph.Value) bool {
offset = (it.qs.hasher.Size() * 2)
case quad.Object:
offset = (it.qs.hasher.Size() * 2) * 2
case quad.Provenance:
case quad.Label:
offset = (it.qs.hasher.Size() * 2) * 3
}
val := v.(string)[offset : it.qs.hasher.Size()*2+offset]

View file

@ -69,7 +69,7 @@ func createNewMongoGraph(addr string, options graph.Options) error {
db.C("triples").EnsureIndex(indexOpts)
indexOpts.Key = []string{"Obj"}
db.C("triples").EnsureIndex(indexOpts)
indexOpts.Key = []string{"Provenance"}
indexOpts.Key = []string{"Label"}
db.C("triples").EnsureIndex(indexOpts)
return nil
}
@ -96,7 +96,7 @@ func (qs *TripleStore) getIdForTriple(t *quad.Quad) string {
id := qs.ConvertStringToByteHash(t.Subject)
id += qs.ConvertStringToByteHash(t.Predicate)
id += qs.ConvertStringToByteHash(t.Object)
id += qs.ConvertStringToByteHash(t.Provenance)
id += qs.ConvertStringToByteHash(t.Label)
return id
}
@ -157,7 +157,7 @@ func (qs *TripleStore) writeTriple(t *quad.Quad) bool {
"Subject": t.Subject,
"Predicate": t.Predicate,
"Object": t.Object,
"Provenance": t.Provenance,
"Label": t.Label,
}
err := qs.db.C("triples").Insert(tripledoc)
if err != nil {
@ -176,8 +176,8 @@ func (qs *TripleStore) AddTriple(t *quad.Quad) {
qs.updateNodeBy(t.Subject, 1)
qs.updateNodeBy(t.Predicate, 1)
qs.updateNodeBy(t.Object, 1)
if t.Provenance != "" {
qs.updateNodeBy(t.Provenance, 1)
if t.Label != "" {
qs.updateNodeBy(t.Label, 1)
}
}
@ -190,8 +190,8 @@ func (qs *TripleStore) AddTripleSet(in []*quad.Quad) {
ids[t.Subject]++
ids[t.Object]++
ids[t.Predicate]++
if t.Provenance != "" {
ids[t.Provenance]++
if t.Label != "" {
ids[t.Label]++
}
}
}
@ -212,8 +212,8 @@ func (qs *TripleStore) RemoveTriple(t *quad.Quad) {
qs.updateNodeBy(t.Subject, -1)
qs.updateNodeBy(t.Predicate, -1)
qs.updateNodeBy(t.Object, -1)
if t.Provenance != "" {
qs.updateNodeBy(t.Provenance, -1)
if t.Label != "" {
qs.updateNodeBy(t.Label, -1)
}
}
@ -227,7 +227,7 @@ func (qs *TripleStore) Quad(val graph.Value) *quad.Quad {
bsonDoc["Subject"].(string),
bsonDoc["Predicate"].(string),
bsonDoc["Object"].(string),
bsonDoc["Provenance"].(string),
bsonDoc["Label"].(string),
}
}
@ -292,7 +292,7 @@ func (qs *TripleStore) TripleDirection(in graph.Value, d quad.Direction) graph.V
offset = (qs.hasher.Size() * 2)
case quad.Object:
offset = (qs.hasher.Size() * 2) * 2
case quad.Provenance:
case quad.Label:
offset = (qs.hasher.Size() * 2) * 3
}
val := in.(string)[offset : qs.hasher.Size()*2+offset]
@ -328,8 +328,8 @@ func (qs *TripleStore) BulkLoad(dec quad.Unmarshaler) error {
emit(s_key, {"_id": s_key, "Name" : this.Subject, "Size" : 1})
emit(p_key, {"_id": p_key, "Name" : this.Predicate, "Size" : 1})
emit(o_key, {"_id": o_key, "Name" : this.Object, "Size" : 1})
if (this.Provenance != "") {
emit(c_key, {"_id": c_key, "Name" : this.Provenance, "Size" : 1})
if (this.Label != "") {
emit(c_key, {"_id": c_key, "Name" : this.Label, "Size" : 1})
}
}
`,

View file

@ -32,7 +32,7 @@ var parseTests = []struct {
message: "parse correct JSON",
input: `[
{"subject": "foo", "predicate": "bar", "object": "baz"},
{"subject": "foo", "predicate": "bar", "object": "baz", "provenance": "graph"}
{"subject": "foo", "predicate": "bar", "object": "baz", "label": "graph"}
]`,
expect: []*quad.Quad{
{"foo", "bar", "baz", ""},

View file

@ -70,7 +70,7 @@
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isQuoted, isEscaped)
q.Label = unEscape(data[label:p], isQuoted, isEscaped)
isEscaped = false
isQuoted = false
}

View file

@ -44,7 +44,7 @@ var testNTriples = []struct {
Subject: "this",
Predicate: "is",
Object: "valid",
Provenance: "",
Label: "",
},
},
{
@ -54,7 +54,7 @@ var testNTriples = []struct {
Subject: "this",
Predicate: "is",
Object: "valid too",
Provenance: "",
Label: "",
},
},
{
@ -64,7 +64,7 @@ var testNTriples = []struct {
Subject: "he",
Predicate: "said",
Object: `"That's all folks"`,
Provenance: "",
Label: "",
},
},
{
@ -74,7 +74,7 @@ var testNTriples = []struct {
Subject: ":/guid/9202a8c04000641f80000000010c843c",
Predicate: "name",
Object: "George Morris",
Provenance: "",
Label: "",
},
},
{
@ -84,7 +84,7 @@ var testNTriples = []struct {
Subject: "foo",
Predicate: "is",
Object: "\tA big tough\r\nDeal\\",
Provenance: "",
Label: "",
},
},
@ -96,7 +96,7 @@ var testNTriples = []struct {
Subject: "this",
Predicate: "is",
Object: "valid",
Provenance: "quad",
Label: "quad",
},
},
{
@ -106,7 +106,7 @@ var testNTriples = []struct {
Subject: "this",
Predicate: "is",
Object: "valid",
Provenance: "quad thing",
Label: "quad thing",
},
},
{
@ -116,7 +116,7 @@ var testNTriples = []struct {
Subject: `"this`,
Predicate: `"is`,
Object: `"valid`,
Provenance: `"quad thing`,
Label: `"quad thing`,
},
},
@ -128,7 +128,7 @@ var testNTriples = []struct {
Subject: "http://example/s",
Predicate: "http://example/p",
Object: "http://example/o",
Provenance: "",
Label: "",
},
},
{
@ -138,7 +138,7 @@ var testNTriples = []struct {
Subject: "http://example/s",
Predicate: "http://example/p",
Object: "_:o",
Provenance: "",
Label: "",
},
},
{
@ -148,7 +148,7 @@ var testNTriples = []struct {
Subject: "http://example/s",
Predicate: "http://example/p",
Object: "o",
Provenance: "",
Label: "",
},
},
{
@ -158,7 +158,7 @@ var testNTriples = []struct {
Subject: "http://example/s",
Predicate: "http://example/p",
Object: `"o"^^<http://example/dt>`,
Provenance: "",
Label: "",
},
},
{
@ -168,7 +168,7 @@ var testNTriples = []struct {
Subject: "http://example/s",
Predicate: "http://example/p",
Object: `"o"@en`,
Provenance: ""},
Label: ""},
},
// Tests taken from http://www.w3.org/TR/n-quads/ and http://www.w3.org/TR/n-triples/.
@ -181,7 +181,7 @@ var testNTriples = []struct {
Subject: "_:100000",
Predicate: "/film/performance/actor",
Object: "/en/larry_fine_1902",
Provenance: "",
Label: "",
},
err: nil,
},
@ -193,7 +193,7 @@ var testNTriples = []struct {
Subject: "_:10011",
Predicate: "/film/performance/character",
Object: "Tomás de Torquemada",
Provenance: "",
Label: "",
},
err: nil,
},
@ -206,7 +206,7 @@ var testNTriples = []struct {
Subject: "http://one.example/subject1",
Predicate: "http://one.example/predicate1",
Object: "http://one.example/object1",
Provenance: "",
Label: "",
},
err: nil,
},
@ -217,7 +217,7 @@ var testNTriples = []struct {
Subject: "_:subject1",
Predicate: "http://an.example/predicate1",
Object: "object1",
Provenance: "",
Label: "",
},
err: nil,
},
@ -228,7 +228,7 @@ var testNTriples = []struct {
Subject: "_:subject2",
Predicate: "http://an.example/predicate2",
Object: "object2",
Provenance: "",
Label: "",
},
err: nil,
},
@ -241,7 +241,7 @@ var testNTriples = []struct {
Subject: "http://example.org/#spiderman",
Predicate: "http://www.perceive.net/schemas/relationship/enemyOf",
Object: "http://example.org/#green-goblin",
Provenance: "",
Label: "",
},
err: nil,
},
@ -254,7 +254,7 @@ var testNTriples = []struct {
Subject: "_:alice",
Predicate: "http://xmlns.com/foaf/0.1/knows",
Object: "_:bob",
Provenance: "",
Label: "",
},
err: nil,
},
@ -265,7 +265,7 @@ var testNTriples = []struct {
Subject: "_:bob",
Predicate: "http://xmlns.com/foaf/0.1/knows",
Object: "_:alice",
Provenance: "",
Label: "",
},
err: nil,
},
@ -278,7 +278,7 @@ var testNTriples = []struct {
Subject: "http://one.example/subject1",
Predicate: "http://one.example/predicate1",
Object: "http://one.example/object1",
Provenance: "http://example.org/graph3",
Label: "http://example.org/graph3",
},
err: nil,
},
@ -289,7 +289,7 @@ var testNTriples = []struct {
Subject: "_:subject1",
Predicate: "http://an.example/predicate1",
Object: "object1",
Provenance: "http://example.org/graph1",
Label: "http://example.org/graph1",
},
err: nil,
},
@ -300,7 +300,7 @@ var testNTriples = []struct {
Subject: "_:subject2",
Predicate: "http://an.example/predicate2",
Object: "object2",
Provenance: "http://example.org/graph5",
Label: "http://example.org/graph5",
},
err: nil,
},
@ -313,7 +313,7 @@ var testNTriples = []struct {
Subject: "http://example.org/#spiderman",
Predicate: "http://www.perceive.net/schemas/relationship/enemyOf",
Object: "http://example.org/#green-goblin",
Provenance: "http://example.org/graphs/spiderman",
Label: "http://example.org/graphs/spiderman",
},
err: nil,
},
@ -326,7 +326,7 @@ var testNTriples = []struct {
Subject: "_:alice",
Predicate: "http://xmlns.com/foaf/0.1/knows",
Object: "_:bob",
Provenance: "http://example.org/graphs/john",
Label: "http://example.org/graphs/john",
},
err: nil,
},
@ -337,7 +337,7 @@ var testNTriples = []struct {
Subject: "_:bob",
Predicate: "http://xmlns.com/foaf/0.1/knows",
Object: "_:alice",
Provenance: "http://example.org/graphs/james",
Label: "http://example.org/graphs/james",
},
err: nil,
},
@ -350,7 +350,7 @@ var testNTriples = []struct {
Subject: "http://example.org/bob#me",
Predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
Object: "http://xmlns.com/foaf/0.1/Person",
Provenance: "",
Label: "",
},
err: nil,
},
@ -361,7 +361,7 @@ var testNTriples = []struct {
Subject: "http://example.org/bob#me",
Predicate: "http://xmlns.com/foaf/0.1/knows",
Object: "http://example.org/alice#me",
Provenance: "",
Label: "",
},
err: nil,
},
@ -372,7 +372,7 @@ var testNTriples = []struct {
Subject: "http://example.org/bob#me",
Predicate: "http://schema.org/birthDate",
Object: `"1990-07-04"^^<http://www.w3.org/2001/XMLSchema#date>`,
Provenance: "",
Label: "",
},
err: nil,
},
@ -383,7 +383,7 @@ var testNTriples = []struct {
Subject: "http://example.org/bob#me",
Predicate: "http://xmlns.com/foaf/0.1/topic_interest",
Object: "http://www.wikidata.org/entity/Q12418",
Provenance: "",
Label: "",
},
err: nil,
},
@ -394,7 +394,7 @@ var testNTriples = []struct {
Subject: "http://www.wikidata.org/entity/Q12418",
Predicate: "http://purl.org/dc/terms/title",
Object: "Mona Lisa",
Provenance: "",
Label: "",
},
err: nil,
},
@ -405,7 +405,7 @@ var testNTriples = []struct {
Subject: "http://www.wikidata.org/entity/Q12418",
Predicate: "http://purl.org/dc/terms/creator",
Object: "http://dbpedia.org/resource/Leonardo_da_Vinci",
Provenance: "",
Label: "",
},
err: nil,
},
@ -416,7 +416,7 @@ var testNTriples = []struct {
Subject: "http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619",
Predicate: "http://purl.org/dc/terms/subject",
Object: "http://www.wikidata.org/entity/Q12418",
Provenance: "",
Label: "",
},
err: nil,
},
@ -429,7 +429,7 @@ var testNTriples = []struct {
Subject: "http://example.org/bob#me",
Predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
Object: "http://xmlns.com/foaf/0.1/Person",
Provenance: "http://example.org/bob",
Label: "http://example.org/bob",
},
err: nil,
},
@ -440,7 +440,7 @@ var testNTriples = []struct {
Subject: "http://example.org/bob#me",
Predicate: "http://xmlns.com/foaf/0.1/knows",
Object: "http://example.org/alice#me",
Provenance: "http://example.org/bob",
Label: "http://example.org/bob",
},
err: nil,
},
@ -451,7 +451,7 @@ var testNTriples = []struct {
Subject: "http://example.org/bob#me",
Predicate: "http://schema.org/birthDate",
Object: `"1990-07-04"^^<http://www.w3.org/2001/XMLSchema#date>`,
Provenance: "http://example.org/bob",
Label: "http://example.org/bob",
},
err: nil,
},
@ -462,7 +462,7 @@ var testNTriples = []struct {
Subject: "http://example.org/bob#me",
Predicate: "http://xmlns.com/foaf/0.1/topic_interest",
Object: "http://www.wikidata.org/entity/Q12418",
Provenance: "http://example.org/bob",
Label: "http://example.org/bob",
},
err: nil,
},
@ -473,7 +473,7 @@ var testNTriples = []struct {
Subject: "http://www.wikidata.org/entity/Q12418",
Predicate: "http://purl.org/dc/terms/title",
Object: "Mona Lisa",
Provenance: "https://www.wikidata.org/wiki/Special:EntityData/Q12418",
Label: "https://www.wikidata.org/wiki/Special:EntityData/Q12418",
},
err: nil,
},
@ -484,7 +484,7 @@ var testNTriples = []struct {
Subject: "http://www.wikidata.org/entity/Q12418",
Predicate: "http://purl.org/dc/terms/creator",
Object: "http://dbpedia.org/resource/Leonardo_da_Vinci",
Provenance: "https://www.wikidata.org/wiki/Special:EntityData/Q12418",
Label: "https://www.wikidata.org/wiki/Special:EntityData/Q12418",
},
err: nil,
},
@ -495,7 +495,7 @@ var testNTriples = []struct {
Subject: "http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619",
Predicate: "http://purl.org/dc/terms/subject",
Object: "http://www.wikidata.org/entity/Q12418",
Provenance: "https://www.wikidata.org/wiki/Special:EntityData/Q12418",
Label: "https://www.wikidata.org/wiki/Special:EntityData/Q12418",
},
err: nil,
},
@ -506,7 +506,7 @@ var testNTriples = []struct {
Subject: "http://example.org/bob",
Predicate: "http://purl.org/dc/terms/publisher",
Object: "http://example.org",
Provenance: "",
Label: "",
},
err: nil,
},
@ -517,7 +517,7 @@ var testNTriples = []struct {
Subject: "http://example.org/bob",
Predicate: "http://purl.org/dc/terms/rights",
Object: "http://creativecommons.org/licenses/by/3.0/",
Provenance: "",
Label: "",
},
err: nil,
},
@ -554,7 +554,7 @@ var testNTriples = []struct {
Subject: "http://example.org/bob#me",
Predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
Object: "",
Provenance: "",
Label: "",
},
err: quad.ErrIncomplete,
},
@ -565,7 +565,7 @@ var testNTriples = []struct {
Subject: "http://example.org/bob#me",
Predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
Object: "",
Provenance: "",
Label: "",
},
err: quad.ErrIncomplete,
},

View file

@ -1006,7 +1006,7 @@ tr37:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isQuoted, isEscaped)
q.Label = unEscape(data[label:p], isQuoted, isEscaped)
isEscaped = false
isQuoted = false
@ -1023,7 +1023,7 @@ tr47:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isQuoted, isEscaped)
q.Label = unEscape(data[label:p], isQuoted, isEscaped)
isEscaped = false
isQuoted = false
@ -1040,7 +1040,7 @@ tr60:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isQuoted, isEscaped)
q.Label = unEscape(data[label:p], isQuoted, isEscaped)
isEscaped = false
isQuoted = false
@ -1079,7 +1079,7 @@ tr66:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isQuoted, isEscaped)
q.Label = unEscape(data[label:p], isQuoted, isEscaped)
isEscaped = false
isQuoted = false
@ -1096,7 +1096,7 @@ tr61:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isQuoted, isEscaped)
q.Label = unEscape(data[label:p], isQuoted, isEscaped)
isEscaped = false
isQuoted = false
@ -1160,7 +1160,7 @@ tr39:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isQuoted, isEscaped)
q.Label = unEscape(data[label:p], isQuoted, isEscaped)
isEscaped = false
isQuoted = false
@ -1177,7 +1177,7 @@ tr49:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isQuoted, isEscaped)
q.Label = unEscape(data[label:p], isQuoted, isEscaped)
isEscaped = false
isQuoted = false
@ -1265,7 +1265,7 @@ tr253:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isQuoted, isEscaped)
q.Label = unEscape(data[label:p], isQuoted, isEscaped)
isEscaped = false
isQuoted = false
@ -1282,7 +1282,7 @@ tr263:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isQuoted, isEscaped)
q.Label = unEscape(data[label:p], isQuoted, isEscaped)
isEscaped = false
isQuoted = false
@ -1299,7 +1299,7 @@ tr287:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isQuoted, isEscaped)
q.Label = unEscape(data[label:p], isQuoted, isEscaped)
isEscaped = false
isQuoted = false
@ -1326,7 +1326,7 @@ tr293:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isQuoted, isEscaped)
q.Label = unEscape(data[label:p], isQuoted, isEscaped)
isEscaped = false
isQuoted = false
@ -1343,7 +1343,7 @@ tr288:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isQuoted, isEscaped)
q.Label = unEscape(data[label:p], isQuoted, isEscaped)
isEscaped = false
isQuoted = false
@ -1377,7 +1377,7 @@ tr255:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isQuoted, isEscaped)
q.Label = unEscape(data[label:p], isQuoted, isEscaped)
isEscaped = false
isQuoted = false
@ -1394,7 +1394,7 @@ tr265:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isQuoted, isEscaped)
q.Label = unEscape(data[label:p], isQuoted, isEscaped)
isEscaped = false
isQuoted = false

View file

@ -63,7 +63,7 @@
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isEscaped)
q.Label = unEscape(data[label:p], isEscaped)
isEscaped = false
}

View file

@ -44,7 +44,7 @@ var testNTriples = []struct {
Subject: "_:100000",
Predicate: "</film/performance/actor>",
Object: "</en/larry_fine_1902>",
Provenance: "",
Label: "",
},
err: nil,
},
@ -56,7 +56,7 @@ var testNTriples = []struct {
Subject: "_:10011",
Predicate: "</film/performance/character>",
Object: `"Tomás de Torquemada"`,
Provenance: "",
Label: "",
},
err: nil,
},
@ -69,7 +69,7 @@ var testNTriples = []struct {
Subject: "<http://one.example/subject1>",
Predicate: "<http://one.example/predicate1>",
Object: "<http://one.example/object1>",
Provenance: "",
Label: "",
},
err: nil,
},
@ -80,7 +80,7 @@ var testNTriples = []struct {
Subject: "_:subject1",
Predicate: "<http://an.example/predicate1>",
Object: `"object1"`,
Provenance: "",
Label: "",
},
err: nil,
},
@ -91,7 +91,7 @@ var testNTriples = []struct {
Subject: "_:subject2",
Predicate: "<http://an.example/predicate2>",
Object: `"object2"`,
Provenance: "",
Label: "",
},
err: nil,
},
@ -104,7 +104,7 @@ var testNTriples = []struct {
Subject: "<http://example.org/#spiderman>",
Predicate: "<http://www.perceive.net/schemas/relationship/enemyOf>",
Object: "<http://example.org/#green-goblin>",
Provenance: "",
Label: "",
},
err: nil,
},
@ -117,7 +117,7 @@ var testNTriples = []struct {
Subject: "_:alice",
Predicate: "<http://xmlns.com/foaf/0.1/knows>",
Object: "_:bob",
Provenance: "",
Label: "",
},
err: nil,
},
@ -128,7 +128,7 @@ var testNTriples = []struct {
Subject: "_:bob",
Predicate: "<http://xmlns.com/foaf/0.1/knows>",
Object: "_:alice",
Provenance: "",
Label: "",
},
err: nil,
},
@ -141,7 +141,7 @@ var testNTriples = []struct {
Subject: "<http://one.example/subject1>",
Predicate: "<http://one.example/predicate1>",
Object: "<http://one.example/object1>",
Provenance: "<http://example.org/graph3>",
Label: "<http://example.org/graph3>",
},
err: nil,
},
@ -152,7 +152,7 @@ var testNTriples = []struct {
Subject: "_:subject1",
Predicate: "<http://an.example/predicate1>",
Object: `"object1"`,
Provenance: "<http://example.org/graph1>",
Label: "<http://example.org/graph1>",
},
err: nil,
},
@ -163,7 +163,7 @@ var testNTriples = []struct {
Subject: "_:subject2",
Predicate: "<http://an.example/predicate2>",
Object: `"object2"`,
Provenance: "<http://example.org/graph5>",
Label: "<http://example.org/graph5>",
},
err: nil,
},
@ -176,7 +176,7 @@ var testNTriples = []struct {
Subject: "<http://example.org/#spiderman>",
Predicate: "<http://www.perceive.net/schemas/relationship/enemyOf>",
Object: "<http://example.org/#green-goblin>",
Provenance: "<http://example.org/graphs/spiderman>",
Label: "<http://example.org/graphs/spiderman>",
},
err: nil,
},
@ -189,7 +189,7 @@ var testNTriples = []struct {
Subject: "_:alice",
Predicate: "<http://xmlns.com/foaf/0.1/knows>",
Object: "_:bob",
Provenance: "<http://example.org/graphs/john>",
Label: "<http://example.org/graphs/john>",
},
err: nil,
},
@ -200,7 +200,7 @@ var testNTriples = []struct {
Subject: "_:bob",
Predicate: "<http://xmlns.com/foaf/0.1/knows>",
Object: "_:alice",
Provenance: "<http://example.org/graphs/james>",
Label: "<http://example.org/graphs/james>",
},
err: nil,
},
@ -213,7 +213,7 @@ var testNTriples = []struct {
Subject: "<http://example.org/bob#me>",
Predicate: "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>",
Object: "<http://xmlns.com/foaf/0.1/Person>",
Provenance: "",
Label: "",
},
err: nil,
},
@ -224,7 +224,7 @@ var testNTriples = []struct {
Subject: "<http://example.org/bob#me>",
Predicate: "<http://xmlns.com/foaf/0.1/knows>",
Object: "<http://example.org/alice#me>",
Provenance: "",
Label: "",
},
err: nil,
},
@ -235,7 +235,7 @@ var testNTriples = []struct {
Subject: "<http://example.org/bob#me>",
Predicate: "<http://schema.org/birthDate>",
Object: `"1990-07-04"^^<http://www.w3.org/2001/XMLSchema#date>`,
Provenance: "",
Label: "",
},
err: nil,
},
@ -246,7 +246,7 @@ var testNTriples = []struct {
Subject: "<http://example.org/bob#me>",
Predicate: "<http://xmlns.com/foaf/0.1/topic_interest>",
Object: "<http://www.wikidata.org/entity/Q12418>",
Provenance: "",
Label: "",
},
err: nil,
},
@ -257,7 +257,7 @@ var testNTriples = []struct {
Subject: "<http://www.wikidata.org/entity/Q12418>",
Predicate: "<http://purl.org/dc/terms/title>",
Object: `"Mona Lisa"`,
Provenance: "",
Label: "",
},
err: nil,
},
@ -268,7 +268,7 @@ var testNTriples = []struct {
Subject: "<http://www.wikidata.org/entity/Q12418>",
Predicate: "<http://purl.org/dc/terms/creator>",
Object: "<http://dbpedia.org/resource/Leonardo_da_Vinci>",
Provenance: "",
Label: "",
},
err: nil,
},
@ -279,7 +279,7 @@ var testNTriples = []struct {
Subject: "<http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619>",
Predicate: "<http://purl.org/dc/terms/subject>",
Object: "<http://www.wikidata.org/entity/Q12418>",
Provenance: "",
Label: "",
},
err: nil,
},
@ -292,7 +292,7 @@ var testNTriples = []struct {
Subject: "<http://example.org/bob#me>",
Predicate: "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>",
Object: "<http://xmlns.com/foaf/0.1/Person>",
Provenance: "<http://example.org/bob>",
Label: "<http://example.org/bob>",
},
err: nil,
},
@ -303,7 +303,7 @@ var testNTriples = []struct {
Subject: "<http://example.org/bob#me>",
Predicate: "<http://xmlns.com/foaf/0.1/knows>",
Object: "<http://example.org/alice#me>",
Provenance: "<http://example.org/bob>",
Label: "<http://example.org/bob>",
},
err: nil,
},
@ -314,7 +314,7 @@ var testNTriples = []struct {
Subject: "<http://example.org/bob#me>",
Predicate: "<http://schema.org/birthDate>",
Object: `"1990-07-04"^^<http://www.w3.org/2001/XMLSchema#date>`,
Provenance: "<http://example.org/bob>",
Label: "<http://example.org/bob>",
},
err: nil,
},
@ -325,7 +325,7 @@ var testNTriples = []struct {
Subject: "<http://example.org/bob#me>",
Predicate: "<http://xmlns.com/foaf/0.1/topic_interest>",
Object: "<http://www.wikidata.org/entity/Q12418>",
Provenance: "<http://example.org/bob>",
Label: "<http://example.org/bob>",
},
err: nil,
},
@ -336,7 +336,7 @@ var testNTriples = []struct {
Subject: "<http://www.wikidata.org/entity/Q12418>",
Predicate: "<http://purl.org/dc/terms/title>",
Object: `"Mona Lisa"`,
Provenance: "<https://www.wikidata.org/wiki/Special:EntityData/Q12418>",
Label: "<https://www.wikidata.org/wiki/Special:EntityData/Q12418>",
},
err: nil,
},
@ -347,7 +347,7 @@ var testNTriples = []struct {
Subject: "<http://www.wikidata.org/entity/Q12418>",
Predicate: "<http://purl.org/dc/terms/creator>",
Object: "<http://dbpedia.org/resource/Leonardo_da_Vinci>",
Provenance: "<https://www.wikidata.org/wiki/Special:EntityData/Q12418>",
Label: "<https://www.wikidata.org/wiki/Special:EntityData/Q12418>",
},
err: nil,
},
@ -358,7 +358,7 @@ var testNTriples = []struct {
Subject: "<http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619>",
Predicate: "<http://purl.org/dc/terms/subject>",
Object: "<http://www.wikidata.org/entity/Q12418>",
Provenance: "<https://www.wikidata.org/wiki/Special:EntityData/Q12418>",
Label: "<https://www.wikidata.org/wiki/Special:EntityData/Q12418>",
},
err: nil,
},
@ -369,7 +369,7 @@ var testNTriples = []struct {
Subject: "<http://example.org/bob>",
Predicate: "<http://purl.org/dc/terms/publisher>",
Object: "<http://example.org>",
Provenance: "",
Label: "",
},
err: nil,
},
@ -380,7 +380,7 @@ var testNTriples = []struct {
Subject: "<http://example.org/bob>",
Predicate: "<http://purl.org/dc/terms/rights>",
Object: "<http://creativecommons.org/licenses/by/3.0/>",
Provenance: "",
Label: "",
},
err: nil,
},
@ -405,7 +405,7 @@ var testNTriples = []struct {
Subject: "<http://example.org/bob#me>",
Predicate: "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>",
Object: "",
Provenance: "",
Label: "",
},
err: fmt.Errorf("%v: unexpected rune '.' at 78", quad.ErrInvalid),
},
@ -416,7 +416,7 @@ var testNTriples = []struct {
Subject: "<http://example.org/bob#me>",
Predicate: "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>",
Object: "",
Provenance: "",
Label: "",
},
err: fmt.Errorf("%v: unexpected rune '.' at 78", quad.ErrInvalid),
},

View file

@ -619,7 +619,7 @@ tr96:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isEscaped)
q.Label = unEscape(data[label:p], isEscaped)
isEscaped = false
goto st10
@ -660,7 +660,7 @@ tr39:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isEscaped)
q.Label = unEscape(data[label:p], isEscaped)
isEscaped = false
goto st88
@ -785,7 +785,7 @@ tr38:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isEscaped)
q.Label = unEscape(data[label:p], isEscaped)
isEscaped = false
goto st13
@ -1202,7 +1202,7 @@ tr55:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isEscaped)
q.Label = unEscape(data[label:p], isEscaped)
isEscaped = false
goto st90
@ -2682,7 +2682,7 @@ tr97:
if label < 0 {
panic("unexpected parser state: label start not set")
}
q.Provenance = unEscape(data[label:p], isEscaped)
q.Label = unEscape(data[label:p], isEscaped)
isEscaped = false
goto st92

View file

@ -26,8 +26,8 @@ package quad
// list of triples. The rest is just indexing for speed.
//
// Adding fields to the triple is not to be taken lightly. You'll see I mention
// provenance, but don'q as yet use it in any backing store. In general, there
// can be features that can be turned on or off for any store, but I haven'q
// label, but don't as yet use it in any backing store. In general, there
// can be features that can be turned on or off for any store, but I haven't
// decided how to allow/disallow them yet. Another such example would be to add
// a forward and reverse index field -- forward being "order the list of
// objects pointed at by this subject with this predicate" such as first and
@ -51,7 +51,7 @@ type Quad struct {
Subject string `json:"subject"`
Predicate string `json:"predicate"`
Object string `json:"object"`
Provenance string `json:"provenance,omitempty"`
Label string `json:"label,omitempty"`
}
// Direction specifies an edge's type.
@ -63,7 +63,7 @@ const (
Subject
Predicate
Object
Provenance
Label
)
func (d Direction) Prefix() byte {
@ -74,7 +74,7 @@ func (d Direction) Prefix() byte {
return 's'
case Predicate:
return 'p'
case Provenance:
case Label:
return 'c'
case Object:
return 'o'
@ -91,8 +91,8 @@ func (d Direction) String() string {
return "subject"
case Predicate:
return "predicate"
case Provenance:
return "provenance"
case Label:
return "label"
case Object:
return "object"
default:
@ -110,8 +110,8 @@ func (q *Quad) Get(d Direction) string {
return q.Subject
case Predicate:
return q.Predicate
case Provenance:
return q.Provenance
case Label:
return q.Label
case Object:
return q.Object
default:
@ -139,11 +139,11 @@ func (q *Quad) IsValid() bool {
// Prints a triple in N-Quad format.
func (q *Quad) NTriple() string {
if q.Provenance == "" {
if q.Label == "" {
//TODO(barakmich): Proper escaping.
return fmt.Sprintf("%s %s %s .", q.Subject, q.Predicate, q.Object)
} else {
return fmt.Sprintf("%s %s %s %s .", q.Subject, q.Predicate, q.Object, q.Provenance)
return fmt.Sprintf("%s %s %s %s .", q.Subject, q.Predicate, q.Object, q.Label)
}
}

View file

@ -48,7 +48,7 @@ $(function() {
subject: $("#subject").val(),
predicate: $("#predicate").val(),
object: $("#object").val(),
provenance: $("#provenance").val()
label: $("#label").val()
}
if (!checkTriple(triple)) {
return
@ -68,7 +68,7 @@ $(function() {
subject: $("#rsubject").val(),
predicate: $("#rpredicate").val(),
object: $("#robject").val(),
provenance: $("#rprovenance").val()
label: $("#rlabel").val()
}
if (!checkTriple(triple)) {
return

View file

@ -45,7 +45,7 @@
<input id="subject" type="text" placeholder="Subject"></input>
<input id="predicate" type="text" placeholder="Predicate"></input>
<input id="object" type="text" placeholder="Object"></input>
<input id="provenance" type="text" placeholder="Provenance"></input>
<input id="label" type="text" placeholder="Label"></input>
</div>
</div>
<div class="row button-row">
@ -59,7 +59,7 @@
<input id="rsubject" type="text" placeholder="Subject"></input>
<input id="rpredicate" type="text" placeholder="Predicate"></input>
<input id="robject" type="text" placeholder="Object"></input>
<input id="rprovenance" type="text" placeholder="Provenance"></input>
<input id="rlabel" type="text" placeholder="Label"></input>
</div>
</div><!-- /.col-xs-12 main -->
<div class="row button-row">