{"action":"created","comment":{"url":"https://api.github.com/repos/HazyResearch/ddlog/pulls/comments/54523059","id":54523059,"diff_hunk":"@@ -767,193 +521,152 @@ ${if (createTable) {\n         val selectStr = List(varInBody, uwStr).filterNot(_.isEmpty).mkString(\", \")\n \n         // factor input query\n-        inputQueries += s\"\"\"\n+        s\"\"\"\n           SELECT ${selectStr}\n           ${ qc.generateSQLBody(fakeBody) }\"\"\"\n-        // factor function\n-        if (func.length == 0) {\n-          val funcBody = (headAsBody zip stmt.head.terms map { case(x, y) =>\n-            s\"\"\"${if (y.isNegated) \"!\" else \"\"}${x.name}.R${fakeBody indexOf x}.label\"\"\"\n-          })\n-\n-          val function = stmt.head.function match {\n-            case FactorFunction.Imply  => \"Imply\"\n-            case FactorFunction.And    => \"And\"\n-            case FactorFunction.Or     => \"Or\"\n-            case FactorFunction.Equal  => \"Equal\"\n-            case FactorFunction.Linear => \"Linear\"\n-            case FactorFunction.Ratio  => \"Ratio\"\n-            case FactorFunction.IsTrue => ss.variableType get stmt.head.terms(0).name match {\n-              case Some(BooleanType)        => \"Imply\"\n-              case Some(MultinomialType(_)) => \"Multinomial\"\n-            }\n-            case FactorFunction.Multinomial => \"Multinomial\"\n-          }\n-          func = s\"\"\"${function}(${funcBody.mkString(\", \")})\"\"\"\n-        }\n-        // weight\n-        if (weight.length == 0) {\n-          // note error cases should be handled in semantic checker\n-          weight = stmt.weights.variables(0) match {\n-            case IntConst(value) => value.toString\n-            case DoubleConst(value) => value.toString\n-            case StringConst(value) => \"?\"\n-            case _ => {\n-              val weightVars = stmt.weights.variables.zipWithIndex.flatMap {\n-                case(s: Expr, i) => Some(s\"dd_weight_column_${i}\")\n-              } mkString(\", \")\n-              s\"?(${weightVars})\"\n-            }\n-          }\n-        }\n       }\n-      val blockName = ss.resolveInferenceBlockName(stmt)\n-      blocks ::= s\"\"\"\n-        deepdive.inference.factors.${blockName} {\n-          input_query: \\\"\\\"\\\"${inputQueries.mkString(\" UNION ALL \")}\\\"\\\"\\\"\n-          function: \"${func}\"\n-          weight: \"${weight}\"\n-          ${ss.generateDependenciesOfCompiledBlockFor(stmts)}\n-          input_relations: [${\n-            val relationsInHead = stmts flatMap (_.head.terms map (_.name))\n-            val relationsInBody = stmts flatMap ss.relationNamesUsedByStatement\n-            ((relationsInHead ++ relationsInBody) distinct\n-            ) mkString(\"\\n            \", \"\\n            \", \"\\n          \")}]\n-        }\n-      \"\"\"\n-    }\n-    blocks.reverse\n-  }\n \n+    // factor function\n+    val func = {\n+      val funcBody = (headAsBody zip stmt.head.terms map { case(x, y) =>\n+        s\"\"\"${if (y.isNegated) \"!\" else \"\"}${x.name}.R${headAsBody indexOf x}.label\"\"\"\n+      })\n \n-  def compileUserSettings(ss: CompilationState): CompiledBlocks = {\n-    // TODO read user's proto-application.conf and augment it\n-    val mode = ss.mode match {\n-      case ORIGINAL        => \"ORIGINAL\"\n-      case INCREMENTAL     => \"INCREMENTAL\"\n-      case MATERIALIZATION => \"MATERIALIZATION\"\n-      case MERGE           => \"MERGE\"\n+      val function = stmt.head.function match {\n+        case FactorFunction.Imply()  => \"Imply\"\n+        case FactorFunction.And()    => \"And\"\n+        case FactorFunction.Or()     => \"Or\"\n+        case FactorFunction.Equal()  => \"Equal\"\n+        case FactorFunction.Linear() => \"Linear\"\n+        case FactorFunction.Ratio()  => \"Ratio\"\n+        case FactorFunction.IsTrue() =>\n+          schemaDeclarationByRelationName get(stmt.head.terms(0).name) map(_.variableType) match {\n+            case Some(Some(MultinomialType(_))) => \"Multinomial\"\n+            case _ => \"Imply\" // TODO fix to IsTrue\n+          }\n+        case FactorFunction.Multinomial() => \"Multinomial\"\n+      }\n+      s\"\"\"${function}(${funcBody.mkString(\", \")})\"\"\"\n     }\n-    List(\"\"\"\n-  deepdive.db.default {\n-    driver: \"org.postgresql.Driver\"\n-    url: \"jdbc:postgresql://\"${PGHOST}\":\"${PGPORT}\"/\"${DBNAME}\n-    user: ${PGUSER}\n-    password: ${PGPASSWORD}\n-    dbname: ${DBNAME}\n-    host: ${PGHOST}\n-    port: ${PGPORT}\n-    incremental_mode: \"\"\" + s\"\"\"${mode}\n+\n+    // weight\n+    val weight = {\n+      // note error cases should be handled in semantic checker\n+      // FIXME check if all weights.variables are ConstExpr to determine whether it's a fixed or unknown weight\n+      stmt.weights.variables(0) match {\n+        case IntConst(value) => value.toString\n+        case DoubleConst(value) => value.toString\n+        case StringConst(value) => \"?\"\n+        case _ => {\n+          val weightVars = stmt.weights.variables.zipWithIndex.flatMap {\n+            case(s: Expr, i) => Some(s\"dd_weight_column_${i}\")\n+          } mkString(\", \")\n+          s\"?(${weightVars})\"\n+        }\n+      }\n     }\n-    \"\"\")\n+\n+    List(s\"deepdive.inference.factors.${resolveInferenceBlockName(stmt)}\" -> Map(\n+        \"input_query\" -> QuotedString(inputQueries.mkString(\" UNION ALL \")),\n+        \"function\" -> QuotedString(func),\n+        \"weight\" -> QuotedString(weight),\n+        \"input_relations\" -> {\n+          val relationsInHead = stmt.head.terms map (_.name)\n+          val relationsInBody = relationNamesUsedByStatement getOrElse(stmt, List.empty)\n+          (relationsInHead ++ relationsInBody) distinct\n+        }\n+    ))\n   }\n \n-  def compileVariableKey(ss: CompilationState): CompiledBlocks = {\n-    var keys = new ListBuffer[String]()\n-    for (stmt <- (ss.schemaDeclarationGroupByHead map (_._2)).flatten) {\n-      if (stmt.isQuery) keys += s\"\"\"${stmt.a.name} : [${stmt.a.terms.mkString(\", \")}]\"\"\"\n-    }\n-    ss.mode match {\n-      case INCREMENTAL => List(s\"\"\"\n-      deepdive.schema.keys {\n-        ${keys.mkString(\"\\n        \")}\n-      }\"\"\")\n-      case _ => List(\"\")\n-    }\n+  def compile(stmt: Statement): CompiledBlocks = stmt match {\n+    case s: SchemaDeclaration => compile(s)\n+    case s: FunctionDeclaration => compile(s)\n+    case s: ExtractionRule => compile(s)\n+    case s: FunctionCallRule => compile(s)\n+    case s: InferenceRule => compile(s)\n+    case _ => sys.error(s\"Compiler does not recognize statement: ${stmt}\")","path":"src/main/scala/org/deepdive/ddlog/DeepDiveLogCompiler.scala","position":799,"original_position":799,"commit_id":"89007ec4b58eca8a23b87db8c70f538f43a02d86","original_commit_id":"89007ec4b58eca8a23b87db8c70f538f43a02d86","user":{"login":"feiranwang","id":5935656,"avatar_url":"https://avatars.githubusercontent.com/u/5935656?v=3","gravatar_id":"","url":"https://api.github.com/users/feiranwang","html_url":"https://github.com/feiranwang","followers_url":"https://api.github.com/users/feiranwang/followers","following_url":"https://api.github.com/users/feiranwang/following{/other_user}","gists_url":"https://api.github.com/users/feiranwang/gists{/gist_id}","starred_url":"https://api.github.com/users/feiranwang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/feiranwang/subscriptions","organizations_url":"https://api.github.com/users/feiranwang/orgs","repos_url":"https://api.github.com/users/feiranwang/repos","events_url":"https://api.github.com/users/feiranwang/events{/privacy}","received_events_url":"https://api.github.com/users/feiranwang/received_events","type":"User","site_admin":false},"body":"Makes sense. Sorry I was wrong about that.","created_at":"2016-03-01T04:55:05Z","updated_at":"2016-03-01T04:55:05Z","html_url":"https://github.com/HazyResearch/ddlog/pull/84#discussion_r54523059","pull_request_url":"https://api.github.com/repos/HazyResearch/ddlog/pulls/84","_links":{"self":{"href":"https://api.github.com/repos/HazyResearch/ddlog/pulls/comments/54523059"},"html":{"href":"https://github.com/HazyResearch/ddlog/pull/84#discussion_r54523059"},"pull_request":{"href":"https://api.github.com/repos/HazyResearch/ddlog/pulls/84"}}},"pull_request":{"url":"https://api.github.com/repos/HazyResearch/ddlog/pulls/84","id":61159285,"html_url":"https://github.com/HazyResearch/ddlog/pull/84","diff_url":"https://github.com/HazyResearch/ddlog/pull/84.diff","patch_url":"https://github.com/HazyResearch/ddlog/pull/84.patch","issue_url":"https://api.github.com/repos/HazyResearch/ddlog/issues/84","number":84,"state":"open","locked":false,"title":"Refactors DDlog compiler","user":{"login":"netj","id":53634,"avatar_url":"https://avatars.githubusercontent.com/u/53634?v=3","gravatar_id":"","url":"https://api.github.com/users/netj","html_url":"https://github.com/netj","followers_url":"https://api.github.com/users/netj/followers","following_url":"https://api.github.com/users/netj/following{/other_user}","gists_url":"https://api.github.com/users/netj/gists{/gist_id}","starred_url":"https://api.github.com/users/netj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/netj/subscriptions","organizations_url":"https://api.github.com/users/netj/orgs","repos_url":"https://api.github.com/users/netj/repos","events_url":"https://api.github.com/users/netj/events{/privacy}","received_events_url":"https://api.github.com/users/netj/received_events","type":"User","site_admin":false},"body":"for upcoming changes for multinomial, partitioning, delegating SQL codegen to DeepDive (to make it possible to write db-drivers for EmptyHeaded, etc.)\r\n\r\n- Upgrades to Scala 2.11.7 (which seems to help #71 a bit, but rewrite in FastParse still preferable)\r\n- Rewrites most `var`s and stateful logic with side-effect free definitions, so the compilation could be easily understood. (Except `QueryCompiler` which will receive further refactor once we start generate [DeepDive's SQL representation in JSON](https://github.com/HazyResearch/deepdive/blob/master/compiler/compile-config/sql.jq).)\r\n- Generates structured IR and separates HOCON codegen from the main compiler.\r\n- Cleans up the parse tree a bit (no more `Enumeration`) to be compatible with serialization/pickling libraries in the future.\r\n- Drops incremental support that complicated all parts of the compiler.","created_at":"2016-02-29T22:42:23Z","updated_at":"2016-03-01T04:55:05Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a7631ff39cf491d02ced511941bd5ea457d8fcc2","assignee":{"login":"feiranwang","id":5935656,"avatar_url":"https://avatars.githubusercontent.com/u/5935656?v=3","gravatar_id":"","url":"https://api.github.com/users/feiranwang","html_url":"https://github.com/feiranwang","followers_url":"https://api.github.com/users/feiranwang/followers","following_url":"https://api.github.com/users/feiranwang/following{/other_user}","gists_url":"https://api.github.com/users/feiranwang/gists{/gist_id}","starred_url":"https://api.github.com/users/feiranwang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/feiranwang/subscriptions","organizations_url":"https://api.github.com/users/feiranwang/orgs","repos_url":"https://api.github.com/users/feiranwang/repos","events_url":"https://api.github.com/users/feiranwang/events{/privacy}","received_events_url":"https://api.github.com/users/feiranwang/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/HazyResearch/ddlog/pulls/84/commits","review_comments_url":"https://api.github.com/repos/HazyResearch/ddlog/pulls/84/comments","review_comment_url":"https://api.github.com/repos/HazyResearch/ddlog/pulls/comments{/number}","comments_url":"https://api.github.com/repos/HazyResearch/ddlog/issues/84/comments","statuses_url":"https://api.github.com/repos/HazyResearch/ddlog/statuses/89007ec4b58eca8a23b87db8c70f538f43a02d86","head":{"label":"HazyResearch:compiler-refactor","ref":"compiler-refactor","sha":"89007ec4b58eca8a23b87db8c70f538f43a02d86","user":{"login":"HazyResearch","id":2165246,"avatar_url":"https://avatars.githubusercontent.com/u/2165246?v=3","gravatar_id":"","url":"https://api.github.com/users/HazyResearch","html_url":"https://github.com/HazyResearch","followers_url":"https://api.github.com/users/HazyResearch/followers","following_url":"https://api.github.com/users/HazyResearch/following{/other_user}","gists_url":"https://api.github.com/users/HazyResearch/gists{/gist_id}","starred_url":"https://api.github.com/users/HazyResearch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HazyResearch/subscriptions","organizations_url":"https://api.github.com/users/HazyResearch/orgs","repos_url":"https://api.github.com/users/HazyResearch/repos","events_url":"https://api.github.com/users/HazyResearch/events{/privacy}","received_events_url":"https://api.github.com/users/HazyResearch/received_events","type":"Organization","site_admin":false},"repo":{"id":33649698,"name":"ddlog","full_name":"HazyResearch/ddlog","owner":{"login":"HazyResearch","id":2165246,"avatar_url":"https://avatars.githubusercontent.com/u/2165246?v=3","gravatar_id":"","url":"https://api.github.com/users/HazyResearch","html_url":"https://github.com/HazyResearch","followers_url":"https://api.github.com/users/HazyResearch/followers","following_url":"https://api.github.com/users/HazyResearch/following{/other_user}","gists_url":"https://api.github.com/users/HazyResearch/gists{/gist_id}","starred_url":"https://api.github.com/users/HazyResearch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HazyResearch/subscriptions","organizations_url":"https://api.github.com/users/HazyResearch/orgs","repos_url":"https://api.github.com/users/HazyResearch/repos","events_url":"https://api.github.com/users/HazyResearch/events{/privacy}","received_events_url":"https://api.github.com/users/HazyResearch/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/HazyResearch/ddlog","description":"Compiler for writing DeepDive applications in a Datalog-like language","fork":false,"url":"https://api.github.com/repos/HazyResearch/ddlog","forks_url":"https://api.github.com/repos/HazyResearch/ddlog/forks","keys_url":"https://api.github.com/repos/HazyResearch/ddlog/keys{/key_id}","collaborators_url":"https://api.github.com/repos/HazyResearch/ddlog/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/HazyResearch/ddlog/teams","hooks_url":"https://api.github.com/repos/HazyResearch/ddlog/hooks","issue_events_url":"https://api.github.com/repos/HazyResearch/ddlog/issues/events{/number}","events_url":"https://api.github.com/repos/HazyResearch/ddlog/events","assignees_url":"https://api.github.com/repos/HazyResearch/ddlog/assignees{/user}","branches_url":"https://api.github.com/repos/HazyResearch/ddlog/branches{/branch}","tags_url":"https://api.github.com/repos/HazyResearch/ddlog/tags","blobs_url":"https://api.github.com/repos/HazyResearch/ddlog/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/HazyResearch/ddlog/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/HazyResearch/ddlog/git/refs{/sha}","trees_url":"https://api.github.com/repos/HazyResearch/ddlog/git/trees{/sha}","statuses_url":"https://api.github.com/repos/HazyResearch/ddlog/statuses/{sha}","languages_url":"https://api.github.com/repos/HazyResearch/ddlog/languages","stargazers_url":"https://api.github.com/repos/HazyResearch/ddlog/stargazers","contributors_url":"https://api.github.com/repos/HazyResearch/ddlog/contributors","subscribers_url":"https://api.github.com/repos/HazyResearch/ddlog/subscribers","subscription_url":"https://api.github.com/repos/HazyResearch/ddlog/subscription","commits_url":"https://api.github.com/repos/HazyResearch/ddlog/commits{/sha}","git_commits_url":"https://api.github.com/repos/HazyResearch/ddlog/git/commits{/sha}","comments_url":"https://api.github.com/repos/HazyResearch/ddlog/comments{/number}","issue_comment_url":"https://api.github.com/repos/HazyResearch/ddlog/issues/comments{/number}","contents_url":"https://api.github.com/repos/HazyResearch/ddlog/contents/{+path}","compare_url":"https://api.github.com/repos/HazyResearch/ddlog/compare/{base}...{head}","merges_url":"https://api.github.com/repos/HazyResearch/ddlog/merges","archive_url":"https://api.github.com/repos/HazyResearch/ddlog/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/HazyResearch/ddlog/downloads","issues_url":"https://api.github.com/repos/HazyResearch/ddlog/issues{/number}","pulls_url":"https://api.github.com/repos/HazyResearch/ddlog/pulls{/number}","milestones_url":"https://api.github.com/repos/HazyResearch/ddlog/milestones{/number}","notifications_url":"https://api.github.com/repos/HazyResearch/ddlog/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/HazyResearch/ddlog/labels{/name}","releases_url":"https://api.github.com/repos/HazyResearch/ddlog/releases{/id}","deployments_url":"https://api.github.com/repos/HazyResearch/ddlog/deployments","created_at":"2015-04-09T05:12:19Z","updated_at":"2016-01-15T04:00:11Z","pushed_at":"2016-02-29T22:57:57Z","git_url":"git://github.com/HazyResearch/ddlog.git","ssh_url":"git@github.com:HazyResearch/ddlog.git","clone_url":"https://github.com/HazyResearch/ddlog.git","svn_url":"https://github.com/HazyResearch/ddlog","homepage":"","size":1654,"stargazers_count":10,"watchers_count":10,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":17,"forks":2,"open_issues":17,"watchers":10,"default_branch":"master"}},"base":{"label":"HazyResearch:master","ref":"master","sha":"e9b655c1fca4352ecaa514f12323f754208e9aab","user":{"login":"HazyResearch","id":2165246,"avatar_url":"https://avatars.githubusercontent.com/u/2165246?v=3","gravatar_id":"","url":"https://api.github.com/users/HazyResearch","html_url":"https://github.com/HazyResearch","followers_url":"https://api.github.com/users/HazyResearch/followers","following_url":"https://api.github.com/users/HazyResearch/following{/other_user}","gists_url":"https://api.github.com/users/HazyResearch/gists{/gist_id}","starred_url":"https://api.github.com/users/HazyResearch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HazyResearch/subscriptions","organizations_url":"https://api.github.com/users/HazyResearch/orgs","repos_url":"https://api.github.com/users/HazyResearch/repos","events_url":"https://api.github.com/users/HazyResearch/events{/privacy}","received_events_url":"https://api.github.com/users/HazyResearch/received_events","type":"Organization","site_admin":false},"repo":{"id":33649698,"name":"ddlog","full_name":"HazyResearch/ddlog","owner":{"login":"HazyResearch","id":2165246,"avatar_url":"https://avatars.githubusercontent.com/u/2165246?v=3","gravatar_id":"","url":"https://api.github.com/users/HazyResearch","html_url":"https://github.com/HazyResearch","followers_url":"https://api.github.com/users/HazyResearch/followers","following_url":"https://api.github.com/users/HazyResearch/following{/other_user}","gists_url":"https://api.github.com/users/HazyResearch/gists{/gist_id}","starred_url":"https://api.github.com/users/HazyResearch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HazyResearch/subscriptions","organizations_url":"https://api.github.com/users/HazyResearch/orgs","repos_url":"https://api.github.com/users/HazyResearch/repos","events_url":"https://api.github.com/users/HazyResearch/events{/privacy}","received_events_url":"https://api.github.com/users/HazyResearch/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/HazyResearch/ddlog","description":"Compiler for writing DeepDive applications in a Datalog-like language","fork":false,"url":"https://api.github.com/repos/HazyResearch/ddlog","forks_url":"https://api.github.com/repos/HazyResearch/ddlog/forks","keys_url":"https://api.github.com/repos/HazyResearch/ddlog/keys{/key_id}","collaborators_url":"https://api.github.com/repos/HazyResearch/ddlog/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/HazyResearch/ddlog/teams","hooks_url":"https://api.github.com/repos/HazyResearch/ddlog/hooks","issue_events_url":"https://api.github.com/repos/HazyResearch/ddlog/issues/events{/number}","events_url":"https://api.github.com/repos/HazyResearch/ddlog/events","assignees_url":"https://api.github.com/repos/HazyResearch/ddlog/assignees{/user}","branches_url":"https://api.github.com/repos/HazyResearch/ddlog/branches{/branch}","tags_url":"https://api.github.com/repos/HazyResearch/ddlog/tags","blobs_url":"https://api.github.com/repos/HazyResearch/ddlog/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/HazyResearch/ddlog/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/HazyResearch/ddlog/git/refs{/sha}","trees_url":"https://api.github.com/repos/HazyResearch/ddlog/git/trees{/sha}","statuses_url":"https://api.github.com/repos/HazyResearch/ddlog/statuses/{sha}","languages_url":"https://api.github.com/repos/HazyResearch/ddlog/languages","stargazers_url":"https://api.github.com/repos/HazyResearch/ddlog/stargazers","contributors_url":"https://api.github.com/repos/HazyResearch/ddlog/contributors","subscribers_url":"https://api.github.com/repos/HazyResearch/ddlog/subscribers","subscription_url":"https://api.github.com/repos/HazyResearch/ddlog/subscription","commits_url":"https://api.github.com/repos/HazyResearch/ddlog/commits{/sha}","git_commits_url":"https://api.github.com/repos/HazyResearch/ddlog/git/commits{/sha}","comments_url":"https://api.github.com/repos/HazyResearch/ddlog/comments{/number}","issue_comment_url":"https://api.github.com/repos/HazyResearch/ddlog/issues/comments{/number}","contents_url":"https://api.github.com/repos/HazyResearch/ddlog/contents/{+path}","compare_url":"https://api.github.com/repos/HazyResearch/ddlog/compare/{base}...{head}","merges_url":"https://api.github.com/repos/HazyResearch/ddlog/merges","archive_url":"https://api.github.com/repos/HazyResearch/ddlog/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/HazyResearch/ddlog/downloads","issues_url":"https://api.github.com/repos/HazyResearch/ddlog/issues{/number}","pulls_url":"https://api.github.com/repos/HazyResearch/ddlog/pulls{/number}","milestones_url":"https://api.github.com/repos/HazyResearch/ddlog/milestones{/number}","notifications_url":"https://api.github.com/repos/HazyResearch/ddlog/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/HazyResearch/ddlog/labels{/name}","releases_url":"https://api.github.com/repos/HazyResearch/ddlog/releases{/id}","deployments_url":"https://api.github.com/repos/HazyResearch/ddlog/deployments","created_at":"2015-04-09T05:12:19Z","updated_at":"2016-01-15T04:00:11Z","pushed_at":"2016-02-29T22:57:57Z","git_url":"git://github.com/HazyResearch/ddlog.git","ssh_url":"git@github.com:HazyResearch/ddlog.git","clone_url":"https://github.com/HazyResearch/ddlog.git","svn_url":"https://github.com/HazyResearch/ddlog","homepage":"","size":1654,"stargazers_count":10,"watchers_count":10,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":17,"forks":2,"open_issues":17,"watchers":10,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/HazyResearch/ddlog/pulls/84"},"html":{"href":"https://github.com/HazyResearch/ddlog/pull/84"},"issue":{"href":"https://api.github.com/repos/HazyResearch/ddlog/issues/84"},"comments":{"href":"https://api.github.com/repos/HazyResearch/ddlog/issues/84/comments"},"review_comments":{"href":"https://api.github.com/repos/HazyResearch/ddlog/pulls/84/comments"},"review_comment":{"href":"https://api.github.com/repos/HazyResearch/ddlog/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/HazyResearch/ddlog/pulls/84/commits"},"statuses":{"href":"https://api.github.com/repos/HazyResearch/ddlog/statuses/89007ec4b58eca8a23b87db8c70f538f43a02d86"}}}}