Open kirk86 opened 4 years ago
Zotero can already export to CSV. For a graph, my other plugin contains an exporter that can export to GML, although I'm considering changing that to graphml since yEd no longer seems to read gml
Thanks,
my other plugin contains an exporter that can export to GML, although I'm considering changing that to graphml since yEd no longer seems to read gml
Which one would that be? How about exporting simply a .json file which can easily be used with https://app.mindmapmaker.org. No need for ppl to install additional software and it works on the browser?
I don't know what that expects.
But mind maps are a bad fit it seems to me. Citation graphs are not necessarily strictly hierarchical.
I don't know what that expects.
Here's an example, it's just a json file encoding the relationships between the main topic with subtopics. For instance if we choose all the items from a topic with the flag related linking those items with each other and the topic.
{
"cnodes" : [],
"id" : "1959e9f5-a66f-43dc-ad90-43ac32cee8c1",
"dates" : {
"created" : 1549546773644,
"modified" : 1549546832394
},
"pluginData" : {
"style" : {
"3dcfb5d2-f0f8-4986-ba60-47f00c2f0b09" : {
"font" : {
"color" : "#000000",
"decoration" : "none",
"fontfamily" : "sans-serif",
"weight" : "normal",
"size" : 15,
"style" : "normal"
},
"branchColor" : "#ff9896",
"border" : {
"color" : "#ffa500",
"style" : "dashed",
"background" : "#ffffff",
"visible" : true
},
"lineWidthOffset" : 0
},
"862da6e1-aea1-4ef4-979d-e47c95dbde71" : {
"border" : {
"visible" : true,
"background" : "#ffffff",
"style" : "dashed",
"color" : "#ffa500"
},
"lineWidthOffset" : 0,
"font" : {
"fontfamily" : "sans-serif",
"decoration" : "none",
"color" : "#000000",
"size" : 15,
"style" : "normal",
"weight" : "normal"
},
"branchColor" : "#bcbd22"
},
"25e04c6b-23e0-4cd0-8c3e-59846f77e953" : {
"font" : {
"color" : "#000000",
"fontfamily" : "sans-serif",
"decoration" : "none",
"weight" : "bold",
"style" : "normal",
"size" : 20
},
"branchColor" : "#000000",
"border" : {
"color" : "#ffa500",
"visible" : true,
"background" : "#ffffff",
"style" : "dashed"
},
"lineWidthOffset" : 0
}
},
"attachment" : {
"25e04c6b-23e0-4cd0-8c3e-59846f77e953" : {},
"862da6e1-aea1-4ef4-979d-e47c95dbde71" : {},
"3dcfb5d2-f0f8-4986-ba60-47f00c2f0b09" : {}
},
"layout" : {
"3dcfb5d2-f0f8-4986-ba60-47f00c2f0b09" : {
"foldChildren" : false,
"offset" : {
"x" : -229,
"y" : 181
}
},
"862da6e1-aea1-4ef4-979d-e47c95dbde71" : {
"offset" : {
"x" : 138,
"y" : 189
},
"foldChildren" : false
},
"25e04c6b-23e0-4cd0-8c3e-59846f77e953" : {
"offset" : {
"y" : 0,
"x" : 0
},
"foldChildren" : false
}
},
"url" : {
"25e04c6b-23e0-4cd0-8c3e-59846f77e953" : {},
"862da6e1-aea1-4ef4-979d-e47c95dbde71" : {},
"3dcfb5d2-f0f8-4986-ba60-47f00c2f0b09" : {}
},
"image" : {
"25e04c6b-23e0-4cd0-8c3e-59846f77e953" : {},
"3dcfb5d2-f0f8-4986-ba60-47f00c2f0b09" : {},
"862da6e1-aea1-4ef4-979d-e47c95dbde71" : {}
},
"draw" : {
"3dcfb5d2-f0f8-4986-ba60-47f00c2f0b09" : {},
"862da6e1-aea1-4ef4-979d-e47c95dbde71" : {},
"25e04c6b-23e0-4cd0-8c3e-59846f77e953" : {}
}
},
"dimensions" : {
"x" : 16000,
"y" : 8000
},
"title" : "Bandits",
"mindmap" : {
"root" : {
"id" : "25e04c6b-23e0-4cd0-8c3e-59846f77e953",
"children" : [
{
"parentId" : "25e04c6b-23e0-4cd0-8c3e-59846f77e953",
"text" : {
"caption" : "What?"
},
"id" : "3dcfb5d2-f0f8-4986-ba60-47f00c2f0b09",
"children" : []
},
{
"children" : [],
"id" : "862da6e1-aea1-4ef4-979d-e47c95dbde71",
"text" : {
"caption" : "Where?"
},
"parentId" : "25e04c6b-23e0-4cd0-8c3e-59846f77e953"
}
],
"parentId" : null,
"text" : {
"caption" : "Bandits"
}
}
},
"autosave" : false
}
There's a lot more than just the nodes in there.
True, I'm no expert, it was mainly a suggestion. It could work with maybe the minimum of entries?
If you could experiment and get something minimal, I can have a stab at generating it.
Sure thing, let me know how can I export such a json and I'll try to import and use it at mindmaker.
No I mean if you can create a minimal mindmapmaker-compatible JSON with any data you please manually, I could see whether I can create that from a Zotero translator.
Oh, ok gotcha ya! Here you go.
{
"id": "2b9afd86-fb2b-4c9d-9466-381ce934f145",
"title": "Global History",
"mindmap": {
"root": {
"id": "8438a3b5-3286-470c-b97e-5022d902e5d6",
"parentId": null,
"text": {
"caption": "Global History"
},
"children": [
{
"id": "4694aa99-a7b9-403c-ae69-22ffccc97c55",
"parentId": "8438a3b5-3286-470c-b97e-5022d902e5d6",
"text": {
"caption": "1st World War"
},
"children": [
{
"id": "b3721dde-a017-4b31-a4c2-3f09e30390ea",
"parentId": "4694aa99-a7b9-403c-ae69-22ffccc97c55",
"text": {
"caption": "Italy"
},
"children": []
},
{
"id": "1db876e8-e50c-4dba-8427-e6da2838ff9d",
"parentId": "4694aa99-a7b9-403c-ae69-22ffccc97c55",
"text": {
"caption": "Germany"
},
"children": []
},
{
"id": "70907fad-ba28-4632-a811-827e6ada7eb5",
"parentId": "4694aa99-a7b9-403c-ae69-22ffccc97c55",
"text": {
"caption": "Austria"
},
"children": []
}
]
},
{
"id": "174fc5d9-e189-4399-99fa-7d5bd84e1b94",
"parentId": "8438a3b5-3286-470c-b97e-5022d902e5d6",
"text": {
"caption": "Second World War"
},
"children": [
{
"id": "5e454023-ec22-4b04-9b8b-57ceb78dc7ee",
"parentId": "174fc5d9-e189-4399-99fa-7d5bd84e1b94",
"text": {
"caption": "Combetants"
},
"children": [
{
"id": "e0e3b9a0-7196-49b2-bef1-3740c2440cd4",
"parentId": "5e454023-ec22-4b04-9b8b-57ceb78dc7ee",
"text": {
"caption": "US"
},
"children": []
},
{
"id": "58e06f56-954f-45fb-b275-5552e800702e",
"parentId": "5e454023-ec22-4b04-9b8b-57ceb78dc7ee",
"text": {
"caption": "UK"
},
"children": []
},
{
"id": "ac8de971-97f9-4d50-a9f6-bbdcb604f0fc",
"parentId": "5e454023-ec22-4b04-9b8b-57ceb78dc7ee",
"text": {
"caption": "France"
},
"children": []
},
{
"id": "8040705d-f8a9-4ce6-adf3-0fd630e943ee",
"parentId": "5e454023-ec22-4b04-9b8b-57ceb78dc7ee",
"text": {
"caption": "Soviet Union"
},
"children": []
}
]
}
]
}
]
}
},
"dates": {
"created": 1575158643631,
"modified": 1575159066410
},
"dimensions": {
"x": 16000,
"y": 8000
},
"autosave": false,
"pluginData": {
"style": {
"8438a3b5-3286-470c-b97e-5022d902e5d6": {
"font": {
"style": "normal",
"weight": "bold",
"fontfamily": "sans-serif",
"decoration": "none",
"size": 20,
"color": "#000000"
},
"border": {
"visible": true,
"style": "dashed",
"color": "#ffa500",
"background": "#ffffff"
},
"lineWidthOffset": 0,
"branchColor": "#000000"
},
"4694aa99-a7b9-403c-ae69-22ffccc97c55": {
"font": {
"style": "normal",
"weight": "normal",
"decoration": "none",
"fontfamily": "sans-serif",
"size": 15,
"color": "#000000"
},
"border": {
"visible": true,
"style": "dashed",
"color": "#ffa500",
"background": "#ffffff"
},
"lineWidthOffset": 0,
"branchColor": "#2ca02c"
},
"b3721dde-a017-4b31-a4c2-3f09e30390ea": {
"font": {
"style": "normal",
"weight": "normal",
"decoration": "none",
"fontfamily": "sans-serif",
"size": 15,
"color": "#000000"
},
"border": {
"visible": true,
"style": "dashed",
"color": "#ffa500",
"background": "#ffffff"
},
"lineWidthOffset": 0,
"branchColor": "#2ca02c"
},
"1db876e8-e50c-4dba-8427-e6da2838ff9d": {
"font": {
"style": "normal",
"weight": "normal",
"decoration": "none",
"fontfamily": "sans-serif",
"size": 15,
"color": "#000000"
},
"border": {
"visible": true,
"style": "dashed",
"color": "#ffa500",
"background": "#ffffff"
},
"lineWidthOffset": 0,
"branchColor": "#2ca02c"
},
"70907fad-ba28-4632-a811-827e6ada7eb5": {
"font": {
"style": "normal",
"weight": "normal",
"decoration": "none",
"fontfamily": "sans-serif",
"size": 15,
"color": "#000000"
},
"border": {
"visible": true,
"style": "dashed",
"color": "#ffa500",
"background": "#ffffff"
},
"lineWidthOffset": 0,
"branchColor": "#2ca02c"
},
"174fc5d9-e189-4399-99fa-7d5bd84e1b94": {
"font": {
"style": "normal",
"weight": "normal",
"decoration": "none",
"fontfamily": "sans-serif",
"size": 15,
"color": "#000000"
},
"border": {
"visible": true,
"style": "dashed",
"color": "#ffa500",
"background": "#ffffff"
},
"lineWidthOffset": 0,
"branchColor": "#1f77b4"
},
"5e454023-ec22-4b04-9b8b-57ceb78dc7ee": {
"font": {
"style": "normal",
"weight": "normal",
"decoration": "none",
"fontfamily": "sans-serif",
"size": 15,
"color": "#000000"
},
"border": {
"visible": true,
"style": "dashed",
"color": "#ffa500",
"background": "#ffffff"
},
"lineWidthOffset": 0,
"branchColor": "#1f77b4"
},
"e0e3b9a0-7196-49b2-bef1-3740c2440cd4": {
"font": {
"style": "normal",
"weight": "normal",
"decoration": "none",
"fontfamily": "sans-serif",
"size": 15,
"color": "#000000"
},
"border": {
"visible": true,
"style": "dashed",
"color": "#ffa500",
"background": "#ffffff"
},
"lineWidthOffset": 0,
"branchColor": "#1f77b4"
},
"58e06f56-954f-45fb-b275-5552e800702e": {
"font": {
"style": "normal",
"weight": "normal",
"decoration": "none",
"fontfamily": "sans-serif",
"size": 15,
"color": "#000000"
},
"border": {
"visible": true,
"style": "dashed",
"color": "#ffa500",
"background": "#ffffff"
},
"lineWidthOffset": 0,
"branchColor": "#1f77b4"
},
"ac8de971-97f9-4d50-a9f6-bbdcb604f0fc": {
"font": {
"style": "normal",
"weight": "normal",
"decoration": "none",
"fontfamily": "sans-serif",
"size": 15,
"color": "#000000"
},
"border": {
"visible": true,
"style": "dashed",
"color": "#ffa500",
"background": "#ffffff"
},
"lineWidthOffset": 0,
"branchColor": "#1f77b4"
},
"8040705d-f8a9-4ce6-adf3-0fd630e943ee": {
"font": {
"style": "normal",
"weight": "normal",
"decoration": "none",
"fontfamily": "sans-serif",
"size": 15,
"color": "#000000"
},
"border": {
"visible": true,
"style": "dashed",
"color": "#ffa500",
"background": "#ffffff"
},
"lineWidthOffset": 0,
"branchColor": "#1f77b4"
}
},
"layout": {
"8438a3b5-3286-470c-b97e-5022d902e5d6": {
"offset": {
"x": 0,
"y": 0
},
"foldChildren": false
},
"4694aa99-a7b9-403c-ae69-22ffccc97c55": {
"offset": {
"x": -165,
"y": 74
},
"foldChildren": false
},
"b3721dde-a017-4b31-a4c2-3f09e30390ea": {
"offset": {
"x": -122,
"y": 78
},
"foldChildren": false
},
"1db876e8-e50c-4dba-8427-e6da2838ff9d": {
"offset": {
"x": -126,
"y": -3
},
"foldChildren": false
},
"70907fad-ba28-4632-a811-827e6ada7eb5": {
"offset": {
"x": -115,
"y": -69
},
"foldChildren": false
},
"174fc5d9-e189-4399-99fa-7d5bd84e1b94": {
"offset": {
"x": 97,
"y": 60
},
"foldChildren": false
},
"5e454023-ec22-4b04-9b8b-57ceb78dc7ee": {
"offset": {
"x": 160,
"y": -92
},
"foldChildren": false
},
"e0e3b9a0-7196-49b2-bef1-3740c2440cd4": {
"offset": {
"x": 176,
"y": -94
},
"foldChildren": false
},
"58e06f56-954f-45fb-b275-5552e800702e": {
"offset": {
"x": 219,
"y": 15
},
"foldChildren": false
},
"ac8de971-97f9-4d50-a9f6-bbdcb604f0fc": {
"offset": {
"x": 227,
"y": 99
},
"foldChildren": false
},
"8040705d-f8a9-4ce6-adf3-0fd630e943ee": {
"offset": {
"x": 140,
"y": 204
},
"foldChildren": false
}
},
"image": {
"8438a3b5-3286-470c-b97e-5022d902e5d6": {},
"4694aa99-a7b9-403c-ae69-22ffccc97c55": {},
"b3721dde-a017-4b31-a4c2-3f09e30390ea": {},
"1db876e8-e50c-4dba-8427-e6da2838ff9d": {},
"70907fad-ba28-4632-a811-827e6ada7eb5": {},
"174fc5d9-e189-4399-99fa-7d5bd84e1b94": {},
"5e454023-ec22-4b04-9b8b-57ceb78dc7ee": {},
"e0e3b9a0-7196-49b2-bef1-3740c2440cd4": {},
"58e06f56-954f-45fb-b275-5552e800702e": {},
"ac8de971-97f9-4d50-a9f6-bbdcb604f0fc": {},
"8040705d-f8a9-4ce6-adf3-0fd630e943ee": {}
},
"draw": {
"8438a3b5-3286-470c-b97e-5022d902e5d6": {},
"4694aa99-a7b9-403c-ae69-22ffccc97c55": {},
"b3721dde-a017-4b31-a4c2-3f09e30390ea": {},
"1db876e8-e50c-4dba-8427-e6da2838ff9d": {},
"70907fad-ba28-4632-a811-827e6ada7eb5": {},
"174fc5d9-e189-4399-99fa-7d5bd84e1b94": {},
"5e454023-ec22-4b04-9b8b-57ceb78dc7ee": {},
"e0e3b9a0-7196-49b2-bef1-3740c2440cd4": {},
"58e06f56-954f-45fb-b275-5552e800702e": {},
"ac8de971-97f9-4d50-a9f6-bbdcb604f0fc": {},
"8040705d-f8a9-4ce6-adf3-0fd630e943ee": {}
},
"attachment": {
"8438a3b5-3286-470c-b97e-5022d902e5d6": {},
"4694aa99-a7b9-403c-ae69-22ffccc97c55": {},
"b3721dde-a017-4b31-a4c2-3f09e30390ea": {},
"1db876e8-e50c-4dba-8427-e6da2838ff9d": {},
"70907fad-ba28-4632-a811-827e6ada7eb5": {},
"174fc5d9-e189-4399-99fa-7d5bd84e1b94": {},
"5e454023-ec22-4b04-9b8b-57ceb78dc7ee": {},
"e0e3b9a0-7196-49b2-bef1-3740c2440cd4": {},
"58e06f56-954f-45fb-b275-5552e800702e": {},
"ac8de971-97f9-4d50-a9f6-bbdcb604f0fc": {},
"8040705d-f8a9-4ce6-adf3-0fd630e943ee": {}
},
"url": {
"8438a3b5-3286-470c-b97e-5022d902e5d6": {},
"4694aa99-a7b9-403c-ae69-22ffccc97c55": {},
"b3721dde-a017-4b31-a4c2-3f09e30390ea": {},
"1db876e8-e50c-4dba-8427-e6da2838ff9d": {},
"70907fad-ba28-4632-a811-827e6ada7eb5": {},
"174fc5d9-e189-4399-99fa-7d5bd84e1b94": {},
"5e454023-ec22-4b04-9b8b-57ceb78dc7ee": {},
"e0e3b9a0-7196-49b2-bef1-3740c2440cd4": {},
"58e06f56-954f-45fb-b275-5552e800702e": {},
"ac8de971-97f9-4d50-a9f6-bbdcb604f0fc": {},
"8040705d-f8a9-4ce6-adf3-0fd630e943ee": {}
}
},
"cnodes": []
}
That immediately hits a few problems:
This is why I chose yEd for my existing graph export. GML graphs can contain loops (they're not required to be hierarchies) and yEd does the layout for you.
I understand, maybe one last suggestion, I've looked into yEd and it seems very similar to draw.io. Maybe it is easier to export something in draw.io format rather than mindmapper? The format is an mxfile and it doesn't require to be any type of hierarchy. Here's an example.
<mxfile host="www.draw.io" modified="2019-11-09T03:36:31.032Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" etag="JaKDmXkISXRiHab7IXVM" version="12.2.3" type="device" pages="1"><diagram id="7HDXjiTE2ecu_-DJZMot" name="Page-1">
7Zxbk6I4FMc/jY89lQtJ8LHV7tnLbO1W9cPO7FsgQalF4yA9rfPpNwi0ArGnt8ZDmItWWeQAAX4n/pNzAkzofL1/m8vt6g+jdDYhSO0ndDEhRAhif0vDoTIEQlSGZZ6qyoRPhof0s66NqLY+pkrvWhsWxmRFum0bY7PZ6Lho2WSem6f2ZonJ2kfdyqXuGR5imfWtf6eqWFXWkKGT/RedLlfNkTGq16xls3Ft2K2kMk9nJno3ofPcmKJaWu/nOivZNVyq/e4vrH0+sVxvitfs8Htk/uQ3BXufvPvHzH+bfcwPn2/qWj7J7LG+4Ppki0ND4GmVFvphK+Oy/GSdPKGzVbHObAnbRbnbVtyTdK/toWZJmmVzk5n8uDtVUodJbO27Ijf/6rM1PA51lNg19TnovND7ixeHn5HZpqbNWhf5wW5S70Aa7HUzw7wuP52cFtSm1Zm/Gpusm8nyueYTSbtQw/wfYAk42CSMdewEG4UssA0UBOxz2RdYCg6WS4SSxAWWCoTm83IPsynOXXH8AAEPPAMPwIEjFFrkLuAIMXFcMyTw0DNwBq/JTIcqcAEPSUQ5vxLYYGSazMHBamzRChfYKRdUAoH1rskCHKy8qMliCE3uAvetySF8JxgIHjpbMsUBZcHAwH1r8hQcuGVH3MM5xSPOriUd4cg0uYnzIJsyklPsbMro+HmhKVd7NIEfvtaYOhyZfuMBwsAQIUFdTrhlCAXQY7wucd8CjuHjQ8G5HVe7iAeULJgYmLhvBcfwgWOSaH5BwsU0QldSD0rGJuHwESKOJNbkWhKem8eNKg+zAHKJf0GHjyFH16v2nOBd4+HjTYkYIcqZXF3ge+jMSY+4d42HD0Q1w4E7VzUjX2j2VyAejC3NjeEj0QRJipzjGE9C03WCf7UHiE6XuVSp7mCVrMLdHfbEioTQw54edd/y3ogfMHUtbfjPfU3/9Kj7lngCH6pyFQruzI7bWDWgGFjix5Y1bwBDJgdQrN3De8YZFhqGrHfdJgAhqUNBouPXoSCs/L7YsQJ1oGNLpxP4CDbCSiXOcSNGgk6hmrh3uR4gEPU6UxGMLaFO4KPOSMahcuZyCQ0CpmDI+pdr+OgykTx0R5dzQRl4dDm2LDkBiC4dHeRUKCSEY1hy8TYJ6A5ybMlzAj//6TeVxcaWVKfDRJeK2cGHK83FFVLa5Y3plOOQwVD3LvEUPrqMkLZ0PYhKD7ZvdafwgaXfOdAecd8yTuHnQF+aqeN3t/fAs86ddBX1LuPwkeW4bo3zT/x7jzi7d1b4Jw4fcfqNi7rznP6JD3DDrdfheHfawT/xAe64vXhDBVkIDk58dDoOH3L6fdCnG+R7J95U/N1OrXXH4/6Ju8JNntnDziK7sCyO110ZSi4tX/CPj6ZZcbM7Pjh7azcgZLs/rWxq2TfV2POsamrXbs1nR+w43RIv2n5uu29jNrrj69oks3S5scXYekhb+6z0XxrL7LZesU6VKg8zczWsq9+n102r0df5n4D53xUBg/j/8NP/ff9blffs/1fE43qjbsvn2EuKmdzt0rjtCnvp+eH9eeFDCewNa4qLfQ2wKh1aOLXqPf7egUlQIfOlLr4oY33qZ1iZA2tjy3Umi/RT+zxcrOsj/GXS41+haQXTC3mtpoqdecxjXe918li/ItquKOj6vQLRq+jo+ufL/orW8IpcwbfQGsiYWgMNv9XW0M9j/LouX1ZBkEnsz1wWIxXqsn+pX+SBr/XYGhFvWMsd2NF3Y8SGFO9+2qPloIVZ/jgOCsbooH6W5J2Mjq+n+fkPssromP8Z2EH9pErLQT/4PwjSQbZ4evNQ1WWdXt9E7/4D
</diagram>
</mxfile>
That's most likely encoded binary of some sort. I have no idea what it actually says. I can't sensibly generate that. Is that format documented anywhere?
What's wrong with yEd?
I see this but
So I still don't see a strong case for making a draw.io translator rather than just keeping the existing GML translator.
Draw.io has plans to add GML/graphml import, and I could look at their CSV format, but the native draw.io format doesn't seem to be documented, and Zotero translators are good at producing text, not so good at creating binary formats.
Thanks for taking time looking into it.
I could look at their CSV format
That would be awesome.
What's wrong with yEd?
Nothing in particular. Generally, I try to avoid installing unnecessary stuff. Plus, having something that works online makes things easier to share with other people without forcing them to install anything or maybe learning a new graph editor.
yEd has an online version.
For the csv, you'd have to create a sample csv, not just their sample but an actual csv as you'd want it generated from zotero. If it's quick to create a translator for it I'll give it a stab, but as said, I already have a graph exporter, and while draw.io looks nice I don't see an immediate benefit to creating an extra graph exporter just because draw.io drags its feet on adding GML import.
yEd has an online version
Thanks, didn't know about that. Overall you know better than me what's better in the long run so I don't have any arguments against what you've said and if sth doesn't make sense doing then, by all means, don't do it. I was merely suggesting something mostly cause of my ignorance of the existence of some of the already existing tools in place.
Thanks!
I can still do it if it's sufficiently simple, but it's not something I'm going to add to my existing plugins, since these formats are specific to draw.io.
Hi, I was wondering if it's possible to have the following two things in report?
1) A graph of related items, say I have some papers which I've indicated as related to each other, would it be possible to have a graph like a freemind or something like a file maybe that can be imported in freemind?
2) Is it possible from the selected items in the report to have an excel or csv file for further editing, this might be useful when ur trying to connect ideas?
Thanks!