Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Freebase MQL filter where value != null?

Tags:

freebase

mql

I'm trying to write an MQL query that filters out null values.

The query I have now (can be executed using the MQL Query Editor):

[
  {
    "/common/topic/image" : [
      {
        "id" : null
      }
    ],
    "article" : [
      {
        "content" : null
      }
    ],
    "name" : "bill gates",
    "type" : "/common/topic"
  }
]

The results I am getting:

[
  {
    "/common/topic/image" : [
      {
        "id" : "/guid/9202a8c04000641f8000000004fb4c01"
      },
      {
        "id" : "/wikipedia/images/commons_id/4486276"
      }
    ],
    "article" : [
      {
        "content" : null
      },
      {
        "content" : "/guid/9202a8c04000641f800000000903535d"
      }
    ],
    "name" : "Bill Gates",
    "type" : "/common/topic"
  }
]

I'm trying to figure out how I can filter out the "content" : null match in the "article" array at query time. I looked through the MQL documentation but I didn't see a clear way to do this.

like image 491
Eric Schoonover Avatar asked Mar 24 '09 17:03

Eric Schoonover


1 Answers

To filter out articles that don't have any content assigned to them you'll have to expand the content id attribute and set the optional directive to false.

[
  {
    "/common/topic/image" : [
      {
        "id" : null
      }
    ],
    "article" : [
      {
        "content" : {
          "id" : null,
          "optional" : false
        }
      }
    ],
    "name" : "bill gates",
    "type" : "/common/topic"
  }
]

This will give you the following result:

[
  {
    "/common/topic/image" : [
      {
        "id" : "/guid/9202a8c04000641f8000000004fb4c01"
      },
      {
        "id" : "/wikipedia/images/commons_id/4486276"
      }
    ],
    "article" : [
      {
        "content" : {
          "id" : "/guid/9202a8c04000641f800000000903535d"
        }
      }
    ],
    "name" : "Bill Gates",
    "type" : "/common/topic"
  }
]

For more information about using the optional directive see the documentation here.

like image 119
Shawn Simister Avatar answered Nov 12 '22 15:11

Shawn Simister