├── .gitignore ├── express-test.js ├── package.json ├── render.js ├── web.js ├── LICENSE ├── readme.md ├── neo4j-graphviz.js ├── graph.svg └── oscars.svg /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.jpg 3 | *.png 4 | *.dot 5 | 6 | -------------------------------------------------------------------------------- /express-test.js: -------------------------------------------------------------------------------- 1 | // usage: http://localhost:3000/?query=match%20path=(n)-->(m)%20return%20path%20limit%20100 2 | var express = require('express'); 3 | var ng = require("./neo4j-graphviz"); 4 | 5 | var pwd = '****'; 6 | var app = express(); 7 | 8 | app.get('/', function(req, res){ 9 | var type = "svg"; 10 | ng.renderGraph("bolt://localhost","neo4j", pwd,"neo4j", req.params["query"], "neato", type, function(error,data) { 11 | if (error) res.status(500).send(error); 12 | else { 13 | res.type(type).send(data); 14 | } 15 | }); 16 | }); 17 | app.listen(3000); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "neo4j-graphviz", 3 | "version": "1.0.2", 4 | "description": "minimal javascript library/tool to generate graphviz visualization from a neo4j cypher query", 5 | "main": "neo4j-graphviz.js", 6 | "scripts": { 7 | "test": "", 8 | "start": "node web.js" 9 | }, 10 | "author": "Michael Hunger", 11 | "license": "MIT", 12 | "dependencies": { 13 | "express": "^4.17.3", 14 | "graphviz": "0.0.8", 15 | "neo4j-driver": "^4.4.5" 16 | }, 17 | "devDependencies": {}, 18 | "repository": { 19 | "type": "git", 20 | "url": "git://github.com/jexp/neo4j-graphviz.git" 21 | }, 22 | "bugs": { 23 | "url": "https://github.com/jexp/neo4j-graphviz/issues" 24 | }, 25 | "homepage": "https://github.com/jexp/neo4j-graphviz#readme" 26 | } 27 | -------------------------------------------------------------------------------- /render.js: -------------------------------------------------------------------------------- 1 | var ng = require("./neo4j-graphviz"); 2 | 3 | function renderGraphCommand(query) { 4 | // var query = "MATCH path = (a)-[r]->(b) WITH * LIMIT 100 RETURN collect(r), collect({a:a,b:b})"; 5 | query = query || "MATCH path = (a)-[r]->(b) RETURN path LIMIT 100"; 6 | 7 | var pwd = process.argv[2] || "test"; 8 | var file = process.argv[3] || "graph.jpg"; 9 | 10 | var use = process.argv[4] || "neato"; 11 | ng.renderGraph("bolt://localhost","neo4j",pwd,"neo4j",query,use,file); 12 | } 13 | 14 | if (process.argv.length > 2) { 15 | var query=""; 16 | process.stdin 17 | .on('data', function (data) { query += data.toString(); }) 18 | .on('end', function() { renderGraphCommand(query); }); 19 | } else { 20 | console.log("Usage: echo 'MATCH path = (a)-[r]->(b) RETURN path LIMIT 10' | node render.js '****' [file.png/svg/jpg] [neato] "); 21 | } 22 | -------------------------------------------------------------------------------- /web.js: -------------------------------------------------------------------------------- 1 | // usage: http://localhost:3000/?query=match%20path=(n)-->(m)%20return%20path%20limit%20100 2 | const express = require('express'); 3 | const ng = require("./neo4j-graphviz"); 4 | 5 | const app = express(); 6 | 7 | const url=process.env.NEO4J_URL || "neo4j://localhost"; 8 | const user=process.env.NEO4J_USER || "neo4j"; 9 | const pass=process.env.NEO4J_PASSWORD || "test"; 10 | const db=process.env.NEO4J_DATABASE || "neo4j"; 11 | 12 | app.get('/', function(req, res){ 13 | const type = req.accepts("image/jpeg")||req.accepts("image/jpg") ? "jpeg" : 14 | req.accepts("image/svg") || req.accepts("image/svg+xml") ? "svg" : "png"; 15 | const style= "neato"; 16 | const query = req.params["query"] || `MATCH (n)-[r]->(m) RETURN * LIMIT 20`; 17 | ng.renderGraph(url,user, pass, db, query, style, type, function(error,data) { 18 | if (error) res.status(500).send(error); 19 | else { 20 | res.type("image/"+type).send(data); 21 | } 22 | }); 23 | }); 24 | const port = process.env.PORT || 3001; 25 | console.log(`Server started on ${port} against ${url} user ${user} db ${db}`); 26 | app.listen(port); -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Michael Hunger 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # neo4j-graphviz 2 | 3 | Minimal Javascript library/tool for generating *dot* and graphviz renderings from a Neo4j Cypher query. 4 | 5 | Uses these libraries 6 | 7 | * neo4j-driver 8 | * graphviz 9 | 10 | ## Command Linse Usage 11 | 12 | ### Minimal: 13 | 14 | `node render.js password` 15 | 16 | Will write a graph.jpg based on `MATCH path = (a)-[r]->(b) RETURN path` 17 | 18 | ### Syntax 19 | 20 | ``` 21 | cat query.cypher | node render.js password [file.png/svg/jpg] [renderer] 22 | ``` 23 | 24 | 25 | ### Example: 26 | 27 | From the [Oscars Graph](http://gist.asciidoctor.org/?dropbox-14493611/oscars.adoc). 28 | 29 | ``` 30 | echo 'MATCH path = (n:Nominee {name:"Meryl Streep"})<-[:NOMINATED]-(a:Nomination)-->() RETURN path' | node render.js '****' oscars.svg neato 31 | ``` 32 | 33 | ![](https://rawgithub.com/jexp/neo4j-graphviz/master/oscars.svg) 34 | 35 | 36 | ## Programmatic Usage 37 | 38 | see also `express-test.js` 39 | 40 | ``` 41 | var ng = require("neo4j-graphviz"); 42 | 43 | app.get('/', function(req, res){ 44 | var type = "svg"; 45 | ng.renderGraph("bolt://localhost","neo4j", pwd, req.param("query"), "neato", type, function(error,data) { 46 | if (error) res.status(500).send(error); 47 | else { 48 | res.type(type).send(data); 49 | } 50 | }); 51 | });``` 52 | 53 | ## Heroku deployment 54 | 55 | https://elements.heroku.com/buildpacks/weibeld/heroku-buildpack-graphviz 56 | 57 | ``` 58 | heroku apps:create 59 | heroku buildpacks:add https://github.com/weibeld/heroku-buildpack-graphviz 60 | 61 | heroku config:set NEO4J_URL="neo4j+s://demo.neo4jlabs.com" NEO4J_USER=movies NEO4J_PASSWORD=movies NEO4J_DATABASE=movies 62 | heroku config:set GRAPHVIZ=/app/.heroku-buildpack-graphviz/usr/bin 63 | 64 | git push heroku master 65 | ``` -------------------------------------------------------------------------------- /neo4j-graphviz.js: -------------------------------------------------------------------------------- 1 | const GRAPHVIZ = process.env.GRAPHVIZ || "/usr/local/bin"; 2 | var neo4j = require('neo4j-driver'); 3 | var graphviz = require('graphviz'); 4 | // colors from: http://flatuicolors.com/ 5 | var colors = {all:["#2ecc71","#1abc9c","#3498db","#9b59b6","#34495e","#16a085","#f1c40f","#e67e22", 6 | "#e74c3c","#95a5a6","#f39c12","#2980b9","#8e44ad","#27ae60","#2c3e50","#bdc3c7", 7 | "#c0392b","#d35400"], 8 | used:{}}; 9 | 10 | function merge(o1,o2) { 11 | for(var k in o2) { 12 | if (o2.hasOwnProperty(k)) { 13 | o1[k]=o2[k]; 14 | } 15 | } 16 | return o1; 17 | } 18 | 19 | function getId(field) { 20 | return field.constructor.name == "Integer" ? field.toString() : (field.identity) ? field.identity.toString() : null; 21 | } 22 | function labels(node) { 23 | return ":"+node.labels.join(":"); 24 | } 25 | function name(node) { 26 | var x = ["^name$","^title$","^label$","value","name$","title$","label$",""]; 27 | var props = node.properties; 28 | for (var i=0;i 2 | 4 | 6 | 7 | 9 | 10 | G 11 | 12 | 13 | 35028->32046 14 | 15 | 16 | IN_YEAR 17 | 18 | 19 | 35028->32087 20 | 21 | 22 | IN_CATEGORY 23 | 24 | 25 | 35028->32631 26 | 27 | 28 | NOMINATED 29 | 30 | 31 | 35028->33588 32 | 33 | 34 | FOR_MOVIE 35 | 36 | 37 | 35048->32047 38 | 39 | 40 | IN_YEAR 41 | 42 | 43 | 35048->32087 44 | 45 | 46 | IN_CATEGORY 47 | 48 | 49 | 35048->32631 50 | 51 | 52 | NOMINATED 53 | 54 | 55 | 35048->33598 56 | 57 | 58 | FOR_MOVIE 59 | 60 | 61 | 35083->32049 62 | 63 | 64 | IN_YEAR 65 | 66 | 67 | 35083->32089 68 | 69 | 70 | IN_CATEGORY 71 | 72 | 73 | 35083->32631 74 | 75 | 76 | NOMINATED 77 | 78 | 79 | 35083->33631 80 | 81 | 82 | FOR_MOVIE 83 | 84 | 85 | 35102->32050 86 | 87 | 88 | IN_YEAR 89 | 90 | 91 | 35102->32089 92 | 93 | 94 | IN_CATEGORY 95 | 96 | 97 | 35102->32631 98 | 99 | 100 | NOMINATED 101 | 102 | 103 | 35102->33642 104 | 105 | 106 | FOR_MOVIE 107 | 108 | 109 | 35121->32051 110 | 111 | 112 | IN_YEAR 113 | 114 | 115 | 35121->32089 116 | 117 | 118 | IN_CATEGORY 119 | 120 | 121 | 35121->32631 122 | 123 | 124 | NOMINATED 125 | 126 | 127 | 35121->33652 128 | 129 | 130 | FOR_MOVIE 131 | 132 | 133 | 35163->32053 134 | 135 | 136 | IN_YEAR 137 | 138 | 139 | 35163->32089 140 | 141 | 142 | IN_CATEGORY 143 | 144 | 145 | 35163->32631 146 | 147 | 148 | NOMINATED 149 | 150 | 151 | 35163->33677 152 | 153 | 154 | FOR_MOVIE 155 | 156 | 157 | 35203->32055 158 | 159 | 160 | IN_YEAR 161 | 162 | 163 | 35203->32089 164 | 165 | 166 | IN_CATEGORY 167 | 168 | 169 | 35203->32631 170 | 171 | 172 | NOMINATED 173 | 174 | 175 | 35203->33700 176 | 177 | 178 | FOR_MOVIE 179 | 180 | 181 | 35222->32056 182 | 183 | 184 | IN_YEAR 185 | 186 | 187 | 35222->32089 188 | 189 | 190 | IN_CATEGORY 191 | 192 | 193 | 35222->32631 194 | 195 | 196 | NOMINATED 197 | 198 | 199 | 35222->33724 200 | 201 | 202 | FOR_MOVIE 203 | 204 | 205 | 35262->32058 206 | 207 | 208 | IN_YEAR 209 | 210 | 211 | 35262->32089 212 | 213 | 214 | IN_CATEGORY 215 | 216 | 217 | 35262->32631 218 | 219 | 220 | NOMINATED 221 | 222 | 223 | 35262->33753 224 | 225 | 226 | FOR_MOVIE 227 | 228 | 229 | 35362->32063 230 | 231 | 232 | IN_YEAR 233 | 234 | 235 | 35362->32089 236 | 237 | 238 | IN_CATEGORY 239 | 240 | 241 | 35362->32631 242 | 243 | 244 | NOMINATED 245 | 246 | 247 | 35362->33824 248 | 249 | 250 | FOR_MOVIE 251 | 252 | 253 | 35422->32066 254 | 255 | 256 | IN_YEAR 257 | 258 | 259 | 35422->32089 260 | 261 | 262 | IN_CATEGORY 263 | 264 | 265 | 35422->32631 266 | 267 | 268 | NOMINATED 269 | 270 | 271 | 35422->33867 272 | 273 | 274 | FOR_MOVIE 275 | 276 | 277 | 35442->32067 278 | 279 | 280 | IN_YEAR 281 | 282 | 283 | 35442->32089 284 | 285 | 286 | IN_CATEGORY 287 | 288 | 289 | 35442->32631 290 | 291 | 292 | NOMINATED 293 | 294 | 295 | 35442->33882 296 | 297 | 298 | FOR_MOVIE 299 | 300 | 301 | 35507->32070 302 | 303 | 304 | IN_YEAR 305 | 306 | 307 | 35507->32087 308 | 309 | 310 | IN_CATEGORY 311 | 312 | 313 | 35507->32631 314 | 315 | 316 | NOMINATED 317 | 318 | 319 | 35507->33912 320 | 321 | 322 | FOR_MOVIE 323 | 324 | 325 | 35582->32074 326 | 327 | 328 | IN_YEAR 329 | 330 | 331 | 35582->32089 332 | 333 | 334 | IN_CATEGORY 335 | 336 | 337 | 35582->32631 338 | 339 | 340 | NOMINATED 341 | 342 | 343 | 35582->33977 344 | 345 | 346 | FOR_MOVIE 347 | 348 | 349 | 35622->32076 350 | 351 | 352 | IN_YEAR 353 | 354 | 355 | 35622->32089 356 | 357 | 358 | IN_CATEGORY 359 | 360 | 361 | 35622->32631 362 | 363 | 364 | NOMINATED 365 | 366 | 367 | 35622->34003 368 | 369 | 370 | FOR_MOVIE 371 | 372 | 373 | 35643->32077 374 | 375 | 376 | IN_YEAR 377 | 378 | 379 | 35643->32089 380 | 381 | 382 | IN_CATEGORY 383 | 384 | 385 | 35643->32631 386 | 387 | 388 | NOMINATED 389 | 390 | 391 | 35643->34023 392 | 393 | 394 | FOR_MOVIE 395 | 396 | 397 | 35682->32079 398 | 399 | 400 | IN_YEAR 401 | 402 | 403 | 35682->32089 404 | 405 | 406 | IN_CATEGORY 407 | 408 | 409 | 35682->32631 410 | 411 | 412 | NOMINATED 413 | 414 | 415 | 35682->34049 416 | 417 | 418 | FOR_MOVIE 419 | 420 | 421 | 35723->32081 422 | 423 | 424 | IN_YEAR 425 | 426 | 427 | 35723->32089 428 | 429 | 430 | IN_CATEGORY 431 | 432 | 433 | 35723->32631 434 | 435 | 436 | NOMINATED 437 | 438 | 439 | 35723->34072 440 | 441 | 442 | FOR_MOVIE 443 | 444 | 445 | 35748->32082 446 | 447 | 448 | IN_YEAR 449 | 450 | 451 | 35748->32087 452 | 453 | 454 | IN_CATEGORY 455 | 456 | 457 | 35748->32631 458 | 459 | 460 | NOMINATED 461 | 462 | 463 | 35748->34085 464 | 465 | 466 | FOR_MOVIE 467 | 468 | 469 | 78800->32089 470 | 471 | 472 | IN_CATEGORY 473 | 474 | 475 | 78800->32631 476 | 477 | 478 | NOMINATED 479 | 480 | 481 | 78800->78780 482 | 483 | 484 | IN_YEAR 485 | 486 | 487 | 78800->78923 488 | 489 | 490 | FOR_MOVIE 491 | 492 | 493 | 32046 494 | 495 | :Year 496 | 497 | 1978 498 | 499 | 500 | 32047 501 | 502 | :Year 503 | 504 | 1979 505 | 506 | 507 | 32049 508 | 509 | :Year 510 | 511 | 1981 512 | 513 | 514 | 32050 515 | 516 | :Year 517 | 518 | 1982 519 | 520 | 521 | 32051 522 | 523 | :Year 524 | 525 | 1983 526 | 527 | 528 | 32053 529 | 530 | :Year 531 | 532 | 1985 533 | 534 | 535 | 32055 536 | 537 | :Year 538 | 539 | 1987 540 | 541 | 542 | 32056 543 | 544 | :Year 545 | 546 | 1988 547 | 548 | 549 | 32058 550 | 551 | :Year 552 | 553 | 1990 554 | 555 | 556 | 32063 557 | 558 | :Year 559 | 560 | 1995 561 | 562 | 563 | 32066 564 | 565 | :Year 566 | 567 | 1998 568 | 569 | 570 | 32067 571 | 572 | :Year 573 | 574 | 1999 575 | 576 | 577 | 32070 578 | 579 | :Year 580 | 581 | 2002 582 | 583 | 584 | 32074 585 | 586 | :Year 587 | 588 | 2006 589 | 590 | 591 | 32076 592 | 593 | :Year 594 | 595 | 2008 596 | 597 | 598 | 32077 599 | 600 | :Year 601 | 602 | 2009 603 | 604 | 605 | 32079 606 | 607 | :Year 608 | 609 | 2011 610 | 611 | 612 | 32081 613 | 614 | :Year 615 | 616 | 2013 617 | 618 | 619 | 32082 620 | 621 | :Year 622 | 623 | 2014 624 | 625 | 626 | 32087 627 | 628 | :Category 629 | 630 | Actress in a Supporting Role 631 | 632 | 633 | 32089 634 | 635 | :Category 636 | 637 | Actress in a Leading Role 638 | 639 | 640 | 32631 641 | 642 | :Nominee 643 | 644 | Meryl Streep 645 | 646 | 647 | 33588 648 | 649 | :Movie 650 | 651 | The Deer Hunter 652 | 653 | 654 | 33598 655 | 656 | :Movie 657 | 658 | Kramer vs. Kramer 659 | 660 | 661 | 33631 662 | 663 | :Movie 664 | 665 | The French Lieutenant's Woman 666 | 667 | 668 | 33642 669 | 670 | :Movie 671 | 672 | Sophie's Choice 673 | 674 | 675 | 33652 676 | 677 | :Movie 678 | 679 | Silkwood 680 | 681 | 682 | 33677 683 | 684 | :Movie 685 | 686 | Out of Africa 687 | 688 | 689 | 33700 690 | 691 | :Movie 692 | 693 | Ironweed 694 | 695 | 696 | 33724 697 | 698 | :Movie 699 | 700 | A Cry in the Dark 701 | 702 | 703 | 33753 704 | 705 | :Movie 706 | 707 | Postcards from the Edge 708 | 709 | 710 | 33824 711 | 712 | :Movie 713 | 714 | The Bridges of Madison County 715 | 716 | 717 | 33867 718 | 719 | :Movie 720 | 721 | One True Thing 722 | 723 | 724 | 33882 725 | 726 | :Movie 727 | 728 | Music of the Heart 729 | 730 | 731 | 33912 732 | 733 | :Movie 734 | 735 | Adaptation 736 | 737 | 738 | 33977 739 | 740 | :Movie 741 | 742 | The Devil Wears Prada 743 | 744 | 745 | 34003 746 | 747 | :Movie 748 | 749 | Doubt 750 | 751 | 752 | 34023 753 | 754 | :Movie 755 | 756 | Julie & Julia 757 | 758 | 759 | 34049 760 | 761 | :Movie 762 | 763 | The Iron Lady 764 | 765 | 766 | 34072 767 | 768 | :Movie 769 | 770 | August: Osage County 771 | 772 | 773 | 34085 774 | 775 | :Movie 776 | 777 | Into the Woods 778 | 779 | 780 | 35028 781 | 782 | :Nomination 783 | 784 | Meryl Streep 785 | 786 | 787 | 35048 788 | 789 | :Nomination:Award 790 | 791 | Meryl Streep 792 | 793 | 794 | 35083 795 | 796 | :Nomination 797 | 798 | Meryl Streep 799 | 800 | 801 | 35102 802 | 803 | :Nomination:Award 804 | 805 | Meryl Streep 806 | 807 | 808 | 35121 809 | 810 | :Nomination 811 | 812 | Meryl Streep 813 | 814 | 815 | 35163 816 | 817 | :Nomination 818 | 819 | Meryl Streep 820 | 821 | 822 | 35203 823 | 824 | :Nomination 825 | 826 | Meryl Streep 827 | 828 | 829 | 35222 830 | 831 | :Nomination 832 | 833 | Meryl Streep 834 | 835 | 836 | 35262 837 | 838 | :Nomination 839 | 840 | Meryl Streep 841 | 842 | 843 | 35362 844 | 845 | :Nomination 846 | 847 | Meryl Streep 848 | 849 | 850 | 35422 851 | 852 | :Nomination 853 | 854 | Meryl Streep 855 | 856 | 857 | 35442 858 | 859 | :Nomination 860 | 861 | Meryl Streep 862 | 863 | 864 | 35507 865 | 866 | :Nomination 867 | 868 | Meryl Streep 869 | 870 | 871 | 35582 872 | 873 | :Nomination 874 | 875 | Meryl Streep 876 | 877 | 878 | 35622 879 | 880 | :Nomination 881 | 882 | Meryl Streep 883 | 884 | 885 | 35643 886 | 887 | :Nomination 888 | 889 | Meryl Streep 890 | 891 | 892 | 35682 893 | 894 | :Nomination:Award 895 | 896 | Meryl Streep 897 | 898 | 899 | 35723 900 | 901 | :Nomination 902 | 903 | Meryl Streep 904 | 905 | 906 | 35748 907 | 908 | :Nomination 909 | 910 | Meryl Streep 911 | 912 | 913 | 78780 914 | 915 | :Year 916 | 917 | 2016 918 | 919 | 920 | 78800 921 | 922 | :Nomination 923 | 924 | Meryl Streep 925 | 926 | 927 | 78923 928 | 929 | :Movie 930 | 931 | Florence Foster Jenkins 932 | 933 | 934 | 935 | -------------------------------------------------------------------------------- /oscars.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | G 11 | 12 | 13 | 35028->32046 14 | 15 | 16 | IN_YEAR 17 | 18 | 19 | 35028->32087 20 | 21 | 22 | IN_CATEGORY 23 | 24 | 25 | 35028->32631 26 | 27 | 28 | NOMINATED 29 | 30 | 31 | 35028->33588 32 | 33 | 34 | FOR_MOVIE 35 | 36 | 37 | 35048->32047 38 | 39 | 40 | IN_YEAR 41 | 42 | 43 | 35048->32087 44 | 45 | 46 | IN_CATEGORY 47 | 48 | 49 | 35048->32631 50 | 51 | 52 | NOMINATED 53 | 54 | 55 | 35048->33598 56 | 57 | 58 | FOR_MOVIE 59 | 60 | 61 | 35083->32049 62 | 63 | 64 | IN_YEAR 65 | 66 | 67 | 35083->32089 68 | 69 | 70 | IN_CATEGORY 71 | 72 | 73 | 35083->32631 74 | 75 | 76 | NOMINATED 77 | 78 | 79 | 35083->33631 80 | 81 | 82 | FOR_MOVIE 83 | 84 | 85 | 35102->32050 86 | 87 | 88 | IN_YEAR 89 | 90 | 91 | 35102->32089 92 | 93 | 94 | IN_CATEGORY 95 | 96 | 97 | 35102->32631 98 | 99 | 100 | NOMINATED 101 | 102 | 103 | 35102->33642 104 | 105 | 106 | FOR_MOVIE 107 | 108 | 109 | 35121->32051 110 | 111 | 112 | IN_YEAR 113 | 114 | 115 | 35121->32089 116 | 117 | 118 | IN_CATEGORY 119 | 120 | 121 | 35121->32631 122 | 123 | 124 | NOMINATED 125 | 126 | 127 | 35121->33652 128 | 129 | 130 | FOR_MOVIE 131 | 132 | 133 | 35163->32053 134 | 135 | 136 | IN_YEAR 137 | 138 | 139 | 35163->32089 140 | 141 | 142 | IN_CATEGORY 143 | 144 | 145 | 35163->32631 146 | 147 | 148 | NOMINATED 149 | 150 | 151 | 35163->33677 152 | 153 | 154 | FOR_MOVIE 155 | 156 | 157 | 35203->32055 158 | 159 | 160 | IN_YEAR 161 | 162 | 163 | 35203->32089 164 | 165 | 166 | IN_CATEGORY 167 | 168 | 169 | 35203->32631 170 | 171 | 172 | NOMINATED 173 | 174 | 175 | 35203->33700 176 | 177 | 178 | FOR_MOVIE 179 | 180 | 181 | 35222->32056 182 | 183 | 184 | IN_YEAR 185 | 186 | 187 | 35222->32089 188 | 189 | 190 | IN_CATEGORY 191 | 192 | 193 | 35222->32631 194 | 195 | 196 | NOMINATED 197 | 198 | 199 | 35222->33724 200 | 201 | 202 | FOR_MOVIE 203 | 204 | 205 | 35262->32058 206 | 207 | 208 | IN_YEAR 209 | 210 | 211 | 35262->32089 212 | 213 | 214 | IN_CATEGORY 215 | 216 | 217 | 35262->32631 218 | 219 | 220 | NOMINATED 221 | 222 | 223 | 35262->33753 224 | 225 | 226 | FOR_MOVIE 227 | 228 | 229 | 35362->32063 230 | 231 | 232 | IN_YEAR 233 | 234 | 235 | 35362->32089 236 | 237 | 238 | IN_CATEGORY 239 | 240 | 241 | 35362->32631 242 | 243 | 244 | NOMINATED 245 | 246 | 247 | 35362->33824 248 | 249 | 250 | FOR_MOVIE 251 | 252 | 253 | 35422->32066 254 | 255 | 256 | IN_YEAR 257 | 258 | 259 | 35422->32089 260 | 261 | 262 | IN_CATEGORY 263 | 264 | 265 | 35422->32631 266 | 267 | 268 | NOMINATED 269 | 270 | 271 | 35422->33867 272 | 273 | 274 | FOR_MOVIE 275 | 276 | 277 | 35442->32067 278 | 279 | 280 | IN_YEAR 281 | 282 | 283 | 35442->32089 284 | 285 | 286 | IN_CATEGORY 287 | 288 | 289 | 35442->32631 290 | 291 | 292 | NOMINATED 293 | 294 | 295 | 35442->33882 296 | 297 | 298 | FOR_MOVIE 299 | 300 | 301 | 35507->32070 302 | 303 | 304 | IN_YEAR 305 | 306 | 307 | 35507->32087 308 | 309 | 310 | IN_CATEGORY 311 | 312 | 313 | 35507->32631 314 | 315 | 316 | NOMINATED 317 | 318 | 319 | 35507->33912 320 | 321 | 322 | FOR_MOVIE 323 | 324 | 325 | 35582->32074 326 | 327 | 328 | IN_YEAR 329 | 330 | 331 | 35582->32089 332 | 333 | 334 | IN_CATEGORY 335 | 336 | 337 | 35582->32631 338 | 339 | 340 | NOMINATED 341 | 342 | 343 | 35582->33977 344 | 345 | 346 | FOR_MOVIE 347 | 348 | 349 | 35622->32076 350 | 351 | 352 | IN_YEAR 353 | 354 | 355 | 35622->32089 356 | 357 | 358 | IN_CATEGORY 359 | 360 | 361 | 35622->32631 362 | 363 | 364 | NOMINATED 365 | 366 | 367 | 35622->34003 368 | 369 | 370 | FOR_MOVIE 371 | 372 | 373 | 35643->32077 374 | 375 | 376 | IN_YEAR 377 | 378 | 379 | 35643->32089 380 | 381 | 382 | IN_CATEGORY 383 | 384 | 385 | 35643->32631 386 | 387 | 388 | NOMINATED 389 | 390 | 391 | 35643->34023 392 | 393 | 394 | FOR_MOVIE 395 | 396 | 397 | 35682->32079 398 | 399 | 400 | IN_YEAR 401 | 402 | 403 | 35682->32089 404 | 405 | 406 | IN_CATEGORY 407 | 408 | 409 | 35682->32631 410 | 411 | 412 | NOMINATED 413 | 414 | 415 | 35682->34049 416 | 417 | 418 | FOR_MOVIE 419 | 420 | 421 | 35723->32081 422 | 423 | 424 | IN_YEAR 425 | 426 | 427 | 35723->32089 428 | 429 | 430 | IN_CATEGORY 431 | 432 | 433 | 35723->32631 434 | 435 | 436 | NOMINATED 437 | 438 | 439 | 35723->34072 440 | 441 | 442 | FOR_MOVIE 443 | 444 | 445 | 35748->32082 446 | 447 | 448 | IN_YEAR 449 | 450 | 451 | 35748->32087 452 | 453 | 454 | IN_CATEGORY 455 | 456 | 457 | 35748->32631 458 | 459 | 460 | NOMINATED 461 | 462 | 463 | 35748->34085 464 | 465 | 466 | FOR_MOVIE 467 | 468 | 469 | 78800->32089 470 | 471 | 472 | IN_CATEGORY 473 | 474 | 475 | 78800->32631 476 | 477 | 478 | NOMINATED 479 | 480 | 481 | 78800->78780 482 | 483 | 484 | IN_YEAR 485 | 486 | 487 | 78800->78923 488 | 489 | 490 | FOR_MOVIE 491 | 492 | 493 | 32046 494 | 495 | :Year 496 | 497 | 1978 498 | 499 | 500 | 32047 501 | 502 | :Year 503 | 504 | 1979 505 | 506 | 507 | 32049 508 | 509 | :Year 510 | 511 | 1981 512 | 513 | 514 | 32050 515 | 516 | :Year 517 | 518 | 1982 519 | 520 | 521 | 32051 522 | 523 | :Year 524 | 525 | 1983 526 | 527 | 528 | 32053 529 | 530 | :Year 531 | 532 | 1985 533 | 534 | 535 | 32055 536 | 537 | :Year 538 | 539 | 1987 540 | 541 | 542 | 32056 543 | 544 | :Year 545 | 546 | 1988 547 | 548 | 549 | 32058 550 | 551 | :Year 552 | 553 | 1990 554 | 555 | 556 | 32063 557 | 558 | :Year 559 | 560 | 1995 561 | 562 | 563 | 32066 564 | 565 | :Year 566 | 567 | 1998 568 | 569 | 570 | 32067 571 | 572 | :Year 573 | 574 | 1999 575 | 576 | 577 | 32070 578 | 579 | :Year 580 | 581 | 2002 582 | 583 | 584 | 32074 585 | 586 | :Year 587 | 588 | 2006 589 | 590 | 591 | 32076 592 | 593 | :Year 594 | 595 | 2008 596 | 597 | 598 | 32077 599 | 600 | :Year 601 | 602 | 2009 603 | 604 | 605 | 32079 606 | 607 | :Year 608 | 609 | 2011 610 | 611 | 612 | 32081 613 | 614 | :Year 615 | 616 | 2013 617 | 618 | 619 | 32082 620 | 621 | :Year 622 | 623 | 2014 624 | 625 | 626 | 32087 627 | 628 | :Category 629 | 630 | Actress in a Supporting Role 631 | 632 | 633 | 32089 634 | 635 | :Category 636 | 637 | Actress in a Leading Role 638 | 639 | 640 | 32631 641 | 642 | :Nominee 643 | 644 | Meryl Streep 645 | 646 | 647 | 33588 648 | 649 | :Movie 650 | 651 | The Deer Hunter 652 | 653 | 654 | 33598 655 | 656 | :Movie 657 | 658 | Kramer vs. Kramer 659 | 660 | 661 | 33631 662 | 663 | :Movie 664 | 665 | The French Lieutenant's Woman 666 | 667 | 668 | 33642 669 | 670 | :Movie 671 | 672 | Sophie's Choice 673 | 674 | 675 | 33652 676 | 677 | :Movie 678 | 679 | Silkwood 680 | 681 | 682 | 33677 683 | 684 | :Movie 685 | 686 | Out of Africa 687 | 688 | 689 | 33700 690 | 691 | :Movie 692 | 693 | Ironweed 694 | 695 | 696 | 33724 697 | 698 | :Movie 699 | 700 | A Cry in the Dark 701 | 702 | 703 | 33753 704 | 705 | :Movie 706 | 707 | Postcards from the Edge 708 | 709 | 710 | 33824 711 | 712 | :Movie 713 | 714 | The Bridges of Madison County 715 | 716 | 717 | 33867 718 | 719 | :Movie 720 | 721 | One True Thing 722 | 723 | 724 | 33882 725 | 726 | :Movie 727 | 728 | Music of the Heart 729 | 730 | 731 | 33912 732 | 733 | :Movie 734 | 735 | Adaptation 736 | 737 | 738 | 33977 739 | 740 | :Movie 741 | 742 | The Devil Wears Prada 743 | 744 | 745 | 34003 746 | 747 | :Movie 748 | 749 | Doubt 750 | 751 | 752 | 34023 753 | 754 | :Movie 755 | 756 | Julie & Julia 757 | 758 | 759 | 34049 760 | 761 | :Movie 762 | 763 | The Iron Lady 764 | 765 | 766 | 34072 767 | 768 | :Movie 769 | 770 | August: Osage County 771 | 772 | 773 | 34085 774 | 775 | :Movie 776 | 777 | Into the Woods 778 | 779 | 780 | 35028 781 | 782 | :Nomination 783 | 784 | Meryl Streep 785 | 786 | 787 | 35048 788 | 789 | :Nomination:Award 790 | 791 | Meryl Streep 792 | 793 | 794 | 35083 795 | 796 | :Nomination 797 | 798 | Meryl Streep 799 | 800 | 801 | 35102 802 | 803 | :Nomination:Award 804 | 805 | Meryl Streep 806 | 807 | 808 | 35121 809 | 810 | :Nomination 811 | 812 | Meryl Streep 813 | 814 | 815 | 35163 816 | 817 | :Nomination 818 | 819 | Meryl Streep 820 | 821 | 822 | 35203 823 | 824 | :Nomination 825 | 826 | Meryl Streep 827 | 828 | 829 | 35222 830 | 831 | :Nomination 832 | 833 | Meryl Streep 834 | 835 | 836 | 35262 837 | 838 | :Nomination 839 | 840 | Meryl Streep 841 | 842 | 843 | 35362 844 | 845 | :Nomination 846 | 847 | Meryl Streep 848 | 849 | 850 | 35422 851 | 852 | :Nomination 853 | 854 | Meryl Streep 855 | 856 | 857 | 35442 858 | 859 | :Nomination 860 | 861 | Meryl Streep 862 | 863 | 864 | 35507 865 | 866 | :Nomination 867 | 868 | Meryl Streep 869 | 870 | 871 | 35582 872 | 873 | :Nomination 874 | 875 | Meryl Streep 876 | 877 | 878 | 35622 879 | 880 | :Nomination 881 | 882 | Meryl Streep 883 | 884 | 885 | 35643 886 | 887 | :Nomination 888 | 889 | Meryl Streep 890 | 891 | 892 | 35682 893 | 894 | :Nomination:Award 895 | 896 | Meryl Streep 897 | 898 | 899 | 35723 900 | 901 | :Nomination 902 | 903 | Meryl Streep 904 | 905 | 906 | 35748 907 | 908 | :Nomination 909 | 910 | Meryl Streep 911 | 912 | 913 | 78780 914 | 915 | :Year 916 | 917 | 2016 918 | 919 | 920 | 78800 921 | 922 | :Nomination 923 | 924 | Meryl Streep 925 | 926 | 927 | 78923 928 | 929 | :Movie 930 | 931 | Florence Foster Jenkins 932 | 933 | 934 | 935 | --------------------------------------------------------------------------------