-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Agents #20
Comments
I've been through the comments above, and taken action where possible/appropriate. I originally mapped agents using Jolt, so there were some points of difference. I noticed that I had also previously mapped parts of names, so those are now restored in the XSLT-driven version. The identified_by.content for PIDs I had seen as an informational thing rather than a Linked Data URL, so I have left it as found. (We need in any case to have a discussion about the format of NG LD URLs. Maybe we should start by rattling Rob Sanderson's cage and see what he has to say about entity type within the URL.) Notes (as in 7983) are included, but I have specified their type as the one in the ES output, not LinguisticObject. Good idea/ bad idea? (I could easily make this into an array and include them both, but that would change the structure of the output - a feature of JSON which I hate.) I've then re-run 'blind' the seven agents identified as test cases. They are in e.g. http://richardofsussex.me.uk/ng/ciim7-output/agent-7983.json. Please have a look through and report back on further issues, backsliding, etc. Thanks |
@richardofsussex, thanks - looking good! Just a couple of comments:
|
In agent-1184, there is an "active 1278; died 1318" - but then the birth section also says 1278 (without qualification). So what ground truth are we to deduce from this? |
On your third point, _label is meant to be a useful indicator for a programmer, etc., and all the Linked Art examples include it. My inclination is to leave it as it currently is: nothing is harmed by its presence. |
Added test for note.project"lbso": see http://richardofsussex.me.uk/ng/ciim7-output/agent-7983.json |
Some of these comments mirror @RGShepherd comments above, but I have left them in as they flag issues are still current as of the file I checked today:
|
Taking @jpadfield's comments in order:
|
OK, if you check http://richardofsussex.me.uk/ng/ciim7-output/agent-7983.json you'll see that I have addressed points 1, 2 and 4. (The absence of Id was a silly bug: I was testing for 'linked-data' instead of 'linked-art' - an easy mistake to make.) The resolution of 4 leaves another empty json set, so the same question over whether I should vigorously suppress these applies. Also, I'm assuming that you never want the @datatype.actual value output as a classification. I'll get back to the other issues later. |
@richardofsussex I am not sure what you means by "another empty json set" ? |
@RGShepherd the last three things I was referring to as LOs are: flowchart TB
classDef object stroke:#2C5D98,fill:#2C5D98,color:white,rx:5px,ry:5px;
classDef url stroke:#2C5D98,fill:white,color:#2C5D98,rx:5px,ry:5px;
classDef actor2 stroke:black,fill:#FFBDCA,color:black,rx:20px,ry:20px;
classDef classstyle stroke:black,fill:white,color:black,rx:5px,ry:5px;
classDef infoobj stroke:#907010,fill:#fffa40,color:black,rx:20px,ry:20px;
classDef literal stroke:black,fill:#f0f0e0,color:black,rx:2px,ry:2px,max-width:100px;
O0("This Model")
class O0 object;
O1("https://linked.art/ns/v1/linked-art.json")
class O1 url;
click O1 "https://linked.art/ns/v1/linked-art.json"
O0["This Model"] ---->|has context|O1["https://linked.art/ns/v1/linked-art.json"]
O2("_#-0")
class O2 actor2;
O3("Person")
class O3 classstyle;
O2["_"] ---->|type|O3["Person"]
O4("ng:0E4I-0008-0000-0000")
class O4 infoobj;
click O4 "https://data.ng-london.org.uk/0E4I-0008-0000-0000" "Link to: https: ...";
click O4 "https://data.ng.ac.uk/0E4I-0008-0000-0000" "Link to: https://data.ng.ac.uk ...";
O2["_"] ---->|subject_of|O4["ng:0E4I-0008-0000-0000"]
O5("LinguisticObject")
class O5 classstyle;
click O4 "https://data.ng.ac.uk/0E4I-0008-0000-0000" "Link to: https://data.ng.ac.uk ...";
O4["ng:0E4I-0008-0000-0000"] ---->|type|O5["LinguisticObject"]
O6("#34;Allgemeines Lexikon die bildenden K\u00fcnstler: von der Antike bis zur Gegenwart#34;")
class O6 literal;
click O4 "https://data.ng.ac.uk/0E4I-0008-0000-0000" "Link to: https://data.ng.ac.uk ...";
O4["ng:0E4I-0008-0000-0000"] ---->|_label|O6["#34;Allgemeines Lexikon die bildenden K\u00fcnstler: von der<br/>Antike bis zur Gegenwart#34;"]
O7("ng:0DWD-0008-0000-0000")
class O7 infoobj;
click O7 "https://data.ng-london.org.uk/0DWD-0008-0000-0000" "Link to: https: ...";
click O7 "https://data.ng.ac.uk/0DWD-0008-0000-0000" "Link to: https://data.ng.ac.uk ...";
O2["_"] ---->|subject_of|O7["ng:0DWD-0008-0000-0000"]
click O7 "https://data.ng.ac.uk/0DWD-0008-0000-0000" "Link to: https://data.ng.ac.uk ...";
O7["ng:0DWD-0008-0000-0000"] ---->|type|O5["LinguisticObject"]
O8("#34;Ludolf Backhusen (Emden 1630 - Amsterdam 1708)#34;")
class O8 literal;
click O7 "https://data.ng.ac.uk/0DWD-0008-0000-0000" "Link to: https://data.ng.ac.uk ...";
O7["ng:0DWD-0008-0000-0000"] ---->|_label|O8["#34;Ludolf Backhusen (Emden 1630 - Amsterdam 1708)#34;"]
O9("ng:0E2V-0008-0000-0000")
class O9 infoobj;
click O9 "https://data.ng-london.org.uk/0E2V-0008-0000-0000" "Link to: https: ...";
click O9 "https://data.ng.ac.uk/0E2V-0008-0000-0000" "Link to: https://data.ng.ac.uk ...";
O2["_"] ---->|subject_of|O9["ng:0E2V-0008-0000-0000"]
click O9 "https://data.ng.ac.uk/0E2V-0008-0000-0000" "Link to: https://data.ng.ac.uk ...";
O9["ng:0E2V-0008-0000-0000"] ---->|type|O5["LinguisticObject"]
O10("#34;Ludolf Bakhuizen#34;")
class O10 literal;
click O9 "https://data.ng.ac.uk/0E2V-0008-0000-0000" "Link to: https://data.ng.ac.uk ...";
O9["ng:0E2V-0008-0000-0000"] ---->|_label|O10["#34;Ludolf Bakhuizen#34;"]
;
|
|
4: A simplified version of the first few relationships for agent 1007 can be seen below: flowchart TB
classDef object stroke:#2C5D98,fill:#2C5D98,color:white,rx:5px,ry:5px;
classDef url stroke:#2C5D98,fill:white,color:#2C5D98,rx:5px,ry:5px;
classDef actor2 stroke:black,fill:#FFBDCA,color:black,rx:20px,ry:20px;
classDef classstyle stroke:black,fill:white,color:black,rx:5px,ry:5px;
classDef literal stroke:black,fill:#f0f0e0,color:black,rx:2px,ry:2px,max-width:100px;
classDef type2 stroke:red,fill:#FAB565,color:black,rx:20px,ry:20px;
O0("This Model")
class O0 object;
O1("https://linked.art/ns/v1/linked-art.json")
class O1 url;
click O1 "https://linked.art/ns/v1/linked-art.json"
O0["This Model"] ---->|has context|O1["https://linked.art/ns/v1/linked-art.json"]
O2("_#-0")
class O2 actor2;
O3("Person")
class O3 classstyle;
O2["_"] ---->|type|O3["Person"]
O4("#34;Individual: Ludolf Bakhuizen#34;")
class O4 literal;
O2["_"] ---->|_label|O4["#34;Individual: Ludolf Bakhuizen#34;"]
O5("_#-1")
class O5 type2;
O2["_"] ---->|classified_as|O5["_"]
O6("LinguisticObject")
class O6 classstyle;
O5["_"] ---->|type|O6["LinguisticObject"]
O7("aat:300435445")
class O7 type2;
click O7 "http://vocab.getty.edu/aat/300435445" "Link to: http://vocab.getty.edu ...";
click O7 "http://vocab.getty.edu/aat/300435445" "Link to: http://vocab.getty.edu/aat ...";
O5["_"] ---->|classified_as|O7["aat:300435445"]
O8("Type-8")
class O8 classstyle;
click O7 "http://vocab.getty.edu/aat/300435445" "Link to: http://vocab.getty.edu/aat ...";
O7["aat:300435445"] ---->|type|O8["Type"]
O9("#34;titles\/names#34;")
class O9 literal;
click O7 "http://vocab.getty.edu/aat/300435445" "Link to: http://vocab.getty.edu/aat ...";
O7["aat:300435445"] ---->|_label|O9["#34;titles\/names#34;"]
O10("#34;Individual#34;")
class O10 literal;
O5["_"] ---->|content|O10["#34;Individual#34;"]
;
The agent is classified as an individual, via a blank node, I guess as there is no AAT term for individual, but then this blank node is then classified as via another aat term (titles/names) which does not make sense. If we wanted to stick to this sort of structure I would think the following would make more sense: flowchart TB
classDef object stroke:#2C5D98,fill:#2C5D98,color:white,rx:5px,ry:5px;
classDef url stroke:#2C5D98,fill:white,color:#2C5D98,rx:5px,ry:5px;
classDef actor2 stroke:black,fill:#FFBDCA,color:black,rx:20px,ry:20px;
classDef classstyle stroke:black,fill:white,color:black,rx:5px,ry:5px;
classDef literal stroke:black,fill:#f0f0e0,color:black,rx:2px,ry:2px,max-width:100px;
classDef type2 stroke:red,fill:#FAB565,color:black,rx:20px,ry:20px;
O0("This Model")
class O0 object;
O1("https://linked.art/ns/v1/linked-art.json")
class O1 url;
click O1 "https://linked.art/ns/v1/linked-art.json"
O0["This Model"] ---->|has context|O1["https://linked.art/ns/v1/linked-art.json"]
O2("_#-0")
class O2 actor2;
O3("Person")
class O3 classstyle;
O2["_"] ---->|type|O3["Person"]
O4("#34;Individual: Ludolf Bakhuizen#34;")
class O4 literal;
O2["_"] ---->|_label|O4["#34;Individual: Ludolf Bakhuizen#34;"]
O5("_#-1")
class O5 type2;
O2["_"] ---->|classified_as|O5["_"]
O6("Type-6")
class O6 classstyle;
O5["_"] ---->|type|O6["Type"]
O7("aat:300024979")
class O7 type2;
click O7 "http://vocab.getty.edu/aat/300024979" "Link to: http://vocab.getty.edu ...";
click O7 "http://vocab.getty.edu/aat/300024979" "Link to: http://vocab.getty.edu/aat ...";
O5["_"] ---->|equivalent|O7["aat:300024979"]
O8("Type-8")
class O8 classstyle;
click O7 "http://vocab.getty.edu/aat/300024979" "Link to: http://vocab.getty.edu/aat ...";
O7["aat:300024979"] ---->|type|O8["Type"]
O9("#34;people (agents)#34;")
class O9 literal;
click O7 "http://vocab.getty.edu/aat/300024979" "Link to: http://vocab.getty.edu/aat ...";
O7["aat:300024979"] ---->|_label|O9["#34;people (agents)#34;"]
O10("#34;Individual#34;")
class O10 literal;
O5["_"] ---->|content|O10["#34;Individual#34;"]
;
Note that the initial blank node is now equivalent to a relevant AAT term and it is also typed as a Type. Alternatively we could just go for: flowchart TB
classDef object stroke:#2C5D98,fill:#2C5D98,color:white,rx:5px,ry:5px;
classDef url stroke:#2C5D98,fill:white,color:#2C5D98,rx:5px,ry:5px;
classDef actor2 stroke:black,fill:#FFBDCA,color:black,rx:20px,ry:20px;
classDef classstyle stroke:black,fill:white,color:black,rx:5px,ry:5px;
classDef literal stroke:black,fill:#f0f0e0,color:black,rx:2px,ry:2px,max-width:100px;
classDef type2 stroke:red,fill:#FAB565,color:black,rx:20px,ry:20px;
O0("This Model")
class O0 object;
O1("https://linked.art/ns/v1/linked-art.json")
class O1 url;
click O1 "https://linked.art/ns/v1/linked-art.json"
O0["This Model"] ---->|has context|O1["https://linked.art/ns/v1/linked-art.json"]
O2("_#-0")
class O2 actor2;
O3("Person")
class O3 classstyle;
O2["_"] ---->|type|O3["Person"]
O4("#34;Individual: Ludolf Bakhuizen#34;")
class O4 literal;
O2["_"] ---->|_label|O4["#34;Individual: Ludolf Bakhuizen#34;"]
O5("aat:300024979")
class O5 type2;
click O5 "http://vocab.getty.edu/aat/300024979" "Link to: http://vocab.getty.edu ...";
click O5 "http://vocab.getty.edu/aat/300024979" "Link to: http://vocab.getty.edu/aat ...";
O2["_"] ---->|classified_as|O5["aat:300024979"]
O6("Type-6")
class O6 classstyle;
click O5 "http://vocab.getty.edu/aat/300024979" "Link to: http://vocab.getty.edu/aat ...";
O5["aat:300024979"] ---->|type|O6["Type"]
O7("#34;people (agents)#34;")
class O7 literal;
click O5 "http://vocab.getty.edu/aat/300024979" "Link to: http://vocab.getty.edu/aat ...";
O5["aat:300024979"] ---->|_label|O7["#34;people (agents)#34;"]
;
|
But it's not rendering ... |
Sorry cache error - all three working now |
But this has all been resolved: #20 (comment) |
5: I think this one is perhaps for documentation - it was just a thought that we might be able to flag the purpose of the inverted term was to facilitate name ordering by family name - I do not have an issue with the AAT term, which is correct, I was just wondering if we could make it more obvious for users in the future. But as noted this is perhaps best covered in worked examples within documentation. 6: https://linked.art/example/person/8 maps to: flowchart TB
classDef object stroke:#2C5D98,fill:#2C5D98,color:white,rx:5px,ry:5px;
classDef url stroke:#2C5D98,fill:white,color:#2C5D98,rx:5px,ry:5px;
classDef actor2 stroke:black,fill:#FFBDCA,color:black,rx:20px,ry:20px;
classDef classstyle stroke:black,fill:white,color:black,rx:5px,ry:5px;
classDef literal stroke:black,fill:#f0f0e0,color:black,rx:2px,ry:2px,max-width:100px;
classDef event2 stroke:blue,fill:#96e0f6,color:black,rx:20px,ry:20px;
classDef timespan stroke:blue,fill:#ddfffe,color:black,rx:20px,ry:20px;
classDef place2 stroke:#3a7a3a,fill:#aff090,color:black,rx:20px,ry:20px;
O0("This Model")
class O0 object;
O1("https://linked.art/ns/v1/linked-art.json")
class O1 url;
click O1 "https://linked.art/ns/v1/linked-art.json"
O0["This Model"] ---->|has context|O1["https://linked.art/ns/v1/linked-art.json"]
O2("lae:person/8")
class O2 actor2;
O3("Person")
class O3 classstyle;
click O2 "https://linked.art/example/person/8" "Link to: https://linked.art/example/person ...";
O2["lae:person/8"] ---->|type|O3["Person"]
O4("#34;Amanda B. Curtlett#34;")
class O4 literal;
click O2 "https://linked.art/example/person/8" "Link to: https://linked.art/example/person ...";
O2["lae:person/8"] ---->|_label|O4["#34;Amanda B. Curtlett#34;"]
O5("_#-0")
class O5 event2;
click O2 "https://linked.art/example/person/8" "Link to: https://linked.art/example/person ...";
O2["lae:person/8"] ---->|born|O5["_"]
O6("Birth")
class O6 classstyle;
O5["_"] ---->|type|O6["Birth"]
O7("_#-1")
class O7 timespan;
O5["_"] ---->|timespan|O7["_"]
O8("TimeSpan")
class O8 classstyle;
O7["_"] ---->|type|O8["TimeSpan"]
O9("1767-01-09")
class O9 literal;
O7["_"] ---->|begin_of_the_begin|O9["1767-01-09"]
O10("1767-01-12")
class O10 literal;
O7["_"] ---->|end_of_the_end|O10["1767-01-12"]
O11("_#-2")
class O11 event2;
click O2 "https://linked.art/example/person/8" "Link to: https://linked.art/example/person ...";
O2["lae:person/8"] ---->|died|O11["_"]
O12("Death")
class O12 classstyle;
O11["_"] ---->|type|O12["Death"]
O13("_#-3")
class O13 timespan;
O11["_"] ---->|timespan|O13["_"]
O13["_"] ---->|type|O8["TimeSpan"]
O14("1824-08-21")
class O14 literal;
O13["_"] ---->|begin_of_the_begin|O14["1824-08-21"]
O13["_"] ---->|end_of_the_end|O14["1824-08-21"]
O15("_#-4")
class O15 place2;
O11["_"] ---->|took_place_at|O15["_"]
O16("Place")
class O16 classstyle;
O15["_"] ---->|type|O16["Place"]
O17("#34;Death Place#34;")
class O17 literal;
O15["_"] ---->|_label|O17["#34;Death Place#34;"]
;
As you can see there are additional nodes between the person and the time span, these are the events with type Birth and Death. They are also shown in the documentation : https://linked.art/model/actor/#birth-and-death-formation-and-dissolution - this one also includes an event location but we do not have that as data just now. 7: Ok. 8: This one may well be a question for linked art then, classifying an existing term seems very odd, the logic would seem to be that the LO is a Bio statement and and Brief Text, not that the the term "Bio Statement" is also a "Brief Text" .... 9: Could we just add a "classified_as" an aat:300111999 - publications (documents) statement? What is there is not wrong it just seemed incomplete not to let people know. |
Sorry, I was just responding to your comment - I see @richardofsussex mentions my point 4 but I did not see an answer, I did ask a followup about is comment. Based on your comment it would seem like the additional classified_as has been attached to the wrong node, which I guess would what @richardofsussex was going to fix? But as long as he has caught it then all good :-) |
but we need:
|
Agent 7983 (not duplicating comments already given for 1007
I got side tracked at this stage and the JSON file seems to have been replaced by an elastic search output again now - I will carry on looking next week |
|
OK, I think I've sorted out the birth and death structures. See http://richardofsussex.me.uk/ng/ciim7-output/agent-1007.json or http://richardofsussex.me.uk/ng/ciim7-output/agent-7983.json: please confirm. |
Incidentally, birth and death can either be arrays or simple maps. In the LA examples they tend to be maps; I have arrays, to allow for the possibility of multiple opinions on this event. Is this something we have a choice over, i.e. does the LA model mandate which we should use? I can't work that out from the information in the context document. |
I think Joe was taking issue with the LA "type of a type" mechanism, which I agree is verbose and strange, but which is their solution to the otherwise intractable problem of implementing ".1" relationships, which are integral to the CIDOC CRM model but cannot be expressed naturally in RDF. Or have I missed his point? Are there any other issues which remain unresolved from the blizzard of comments yesterday? |
@richardofsussex yes it was the types-of-types - I can see what they have tried to do, but logic is not consistent, I was emailing about something else so I have asked a question about it. But yes at the moment it does follow the documentation. The issue of applying properties to triples has been examined in RDF* but I have never really explored it. Were you going to add a classified_as to the publications, for example in 1007? |
It is not great to have "<>" in a string like that but I have fixed the issue on my end to cope with them. Are they there for a reason, do they come from something else?
The LA examples do not seem to have this, but I have only looked through a few recently, but we can have them if they are useful. We should probably be consistent with this type of thing if we can, so we can come up with some additional rules of extra things we add on ... |
I believe this is where we are:
|
Ha! except that I think they should be maps; differences of opinion would be managed by assertions, if I've understood correctly. Perhaps @jpadfield could confirm? If so, then we would also have a new
|
I've dealt with 9, 11 and 13: please check and confirm this example agent: http://richardofsussex.me.uk/ng/ciim7-output/agent-7983.json. I'll re-process the other agents in due course. ... Now done |
Agreed - I think everything is now resolved for agents. |
A note that agent-agent relationships exist in the TMS CIIM views, and are on the roadmap for incorporation into the agent |
OK! First of all:
Person
orGroup
- see Types. This can be deduced from the value of @datatype.actual, which will be "Individual" or "Organisation".The text was updated successfully, but these errors were encountered: