• Stars
    star
    107
  • Rank 313,357 (Top 7 %)
  • Language
    JavaScript
  • Created almost 13 years ago
  • Updated over 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

inference and inspection on freebase data

Freebase is shutting down its APIs in May 2015. This library will not work past that date. Please plan ahead.


Freebase is a masculine but complicated human-curated database.

Nodejs is a straight-talkin language that takes no guff

Giddyup

npm install freebase

then:

var freebase= require('freebase');
freebase.description('tom cruise', {})
//"Tom Cruise, is an American film actor.."

Showin' off

All methods take the following form. The parameters are lazy.

freebase.method( "query",   {options},  callback()  )
freebase.method( "query",  callback()  )
freebase.method( "query",  {options}  )
freebase.method( "query" )

These methods return the same things:

freebase.image("/en/thom_yorke")
freebase.image("http://www.myspace.com/thomyorkemusic", {}, console.log)
freebase.image("thom yorke") //makes a 'decidedly safe guess'
freebase.image({"name":"thom yorke", "id":"/en/thom_yorke"}, console.log)

it's a good idea to include your api_key in each method:

freebase.sentence("meatloaf", {type:"/food/food", key:"MY_API_KEY"})

here are some options that you can ship in to any method:

{ nodeCallback: true, // use the 'error-first' callback form -> callback(error, result){}
  key: "MY_API_KEY", // good idea to include your freebase key, to avoid errors
  limit: 2, // truncate results
  debug: true, // print out the urls being fetched
}

You can also ship in any MQL parameters or search api parameters.

Video Demo

In the friggin browser

Demo - 63kb

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="https://rawgit.com/spencermountain/Freebase.js/master/client_side/freebase.min.js"></script>
<script>
  $(document).ready(function(){

    $.freebase.description("tony hawk", function (r){
      $('body').append(r)
    })

  })
</script>

In the shell:

the library can be run in the console, with the optional second parameter as the method. npm install it with a -g.

freebase george clooney
   # {  "mid": "/m/014zcr", "id": "/en/george_clooney" ... }
freebase sentence george clooney
   #"George Timothy Clooney is an American actor, film director, producer, and screenwriter."

Writing to Freebase:

####Oauth is hard, but you can do it. Instructions:

  • Register a project at [https://code.google.com/apis/console](google api console) and enable the Freebase API
  • In the 'Credentials' section, create a new Client ID -> 'installed application', 'other'
  • Add your data to './auth/credentials.js'
  • Run node ./auth/authenticate.js
  • You will be given a url to visit in your browser, which gives you an OAuth code.
  • Paste the oAuth code, and you'll be given the end tokens.

thats all you need to include in your request:

freebase.add_type("/en/the_who", {type:"/music/artist", token: your_access_token})

freebase.add_alias("/en/melanie_chisholm", {alias:"Sporty Spice", token: your_access_token})

You'll need to get a new token after about 3 hours. (Don't commit your credentials.)

If you're doing inference, or writing a bot, check out freebase_garden

Basic methods

####MQLread API MQL documentation

Books about planets:

var query=[{
  "type":  "/astronomy/planet",
  "name":  null,
  "/book/book_subject/works": []
 }]freebase.mqlread(query, {}, function(r){console.log(r)})

the options object will ship any paramaters to the freebase api.

####Pagination Every Tornado, ever

var query=[{
  "type":"/base/disaster2/tornado",
  "name":null
 }]
freebase.paginate(query, {max:400})

####Search API search api documentation

Hockey players named 'doug'

freebase.search("doug",{type: "/ice_hockey/hockey_player"})

the options object will ship any paramaters to the freebase search api.

####Description API First paragraph of a topic's wikipedia article:

freebase.description("mike myers", {})
freebase.description("http://myspace.com/u2", {})

####Topic API topic api documentation

A nicely treated output of all of a topic's data:

freebase.topic("mike myers", {})
freebase.topic("http://myspace.com/u2", {})

####RDF API RDF api documentation

A string of tuples for a topic:

freebase.rdf("blonde redhead", {})

####Notable-types The most accurate, or notable type for a topic:

freebase.notable("canada", {})
     -> {id:"/location/country", name:"Country"}

Sugar

####Grammar Which pronoun, tense, article and gender to use for this topic

freebase.grammar("washing machine", {})
   -> { plural: true,
        gender: null,
        article: 'a',
        pronoun: 'they',
        copula: 'are' }
freebase.grammar(["prince harry", "miranda july"], {})
   ->  [ { plural: false,
          gender: 'male',
          article: 'a',
          pronoun: 'he',
          copula: 'is' },
        { plural: false,
          gender: 'female',
          article: 'a',
          pronoun: 'she',
          copula: 'is' } ]

####Related Topics Similar topics to this topic

freebase.related("toronto", {}, function(r){
  console.log(r.map(function(v){return v.name}))
})
   /* Toronto FC
      Toronto Maple Leafs
      Toronto Argonauts
      North York
      Toronto Marlies*/

####Wordnet Query all of wordnet, from freebase:

freebase.wordnet("charming")
freebase.wordnet("submarine",{},console.log)

####SameAs links sameAs weblinks for a topic, or url

freebase.same_as_links("toronto")
freebase.same_as_links("http://toronto.ca", {}, console.log)

####Safe-Lookup A common-sense search that only matches when confident:

freebase.lookup("tom green")
freebase.lookup(["sandra bullock","suddenly susan"])

####First Sentence The first sentence from a wikipedia article:

freebase.sentence("kansas", {})
//"Kansas is a U.S. state located in the Midwestern United States."

####Graph-analysis Graph-type queries on topics, dancing over tough values and mediators:

freebase.outgoing("ubuntu", {} )
freebase.incoming("ubuntu", {} )
freebase.graph("ubuntu", {} )

####Schema-agnostic queries A list of topics in a 'is-a' type of collection:

freebase.list("earthquakes", {})

####Translation Translated names for topics:

freebase.translate("radiohead", {lang:"/lang/ko"})
  // "라디오헤드"

####Encoding Encode a string for inclusion in a freebase id/key/whatever

freebase.mql_encode("Aarno Yrjö-Koskinen")
  //"Aarno_Yrj$00F6-Koskinen"

####Schema introspection Find-out relevant information for a type or property:

freebase.property_introspection("politician", {})
   /* { domain: { name: 'Government', id: '/government' },
        is_compound_value: false,
        is_commons: 'Published',
        equivalent_topic: { name: 'Politician', id: '/en/politician' },
        topic_count: 90971,
        property_count: 0,
        included_types: [ { name: 'Person', id: '/people/person' },
                { name: 'Topic', id: '/common/topic' } ],
        ...*/

##Wikipedia

####Wikipedia-Category pages Get the wikipedia url for a topic

freebase.from_category("Category:Bridges_in_Saskatchewan", {
  depth: 2 //levels to recurse down
})
/*[{id: '/wikipedia/en/Long_Creek_Bridge',
   name: 'Long Creek Bridge'},
  {id: '/wikipedia/en/Diefenbaker_Bridge',
   name: 'Diefenbaker Bridge'}
   ...

####Wikipedia-page Get the wikipedia url for a topic

freebase.wikipedia_page("tony hawk", {})
 // http://en.wikipedia/wiki/Tony_Hawk

####Wikipedia categories Get the wikipedia categories on this topic's article

freebase.wikipedia_categories("tony hawk", {})

####Wikipedia topic-links Get the links on it's wikipedia page as freebase ids

freebase.wikipedia_links("tony hawk", {})
 /*[{ id: '/wikipedia/en/Baker_Skateboards',  name: 'Baker Skateboards' },
    { id: '/wikipedia/en/Bam_Margera', name: 'Bam Margera' },
    { id: '/wikipedia/en/Barting_Over', name: 'Barting Over' },
    { id: '/wikipedia/en/Blink-182', name: 'Blink-182' },
    ...*/

####Wikipedia external-links Get the external urls on it's wikipedia page

freebase.wikipedia_external_links("tony hawk", {})
   /*[{ url: 'http://skate.quiksilver.com/riders-detail/',
        domain: 'skate.quiksilver.com' },
      { url: 'http://skateboarding.transworld.net/1000095781/news/tony-hawk-on-theeve-trucks/',
        domain: 'skateboarding.transworld.net' },
        ...*/

##Geographical ####Geolocation Get the lat/lng for a topic

freebase.geolocation("calgary", {})
 //{ latitude: 51.0544444444, longitude: -114.066944444 }

####Nearby List topics near this geolocation

freebase.nearby("cn tower", {type:"/food/restaurant"})
   /*[{id: '/en/sneaky_dees',
       name: 'Sneaky Dee\'s',
      },
      {id: '/en/keg_mansion',
       name: 'Keg Mansion',
      }
      ...*/

####Inside List topics inside of this location

freebase.inside("montreal")
// [{"id": "/en/montreal_forum"}....]

####Place-data From a geo-coordinate, find out its City, Province, Country, and timezone

freebase.place_data({lat:51.545414293637286,lng:-0.07589578628540039}, console.log)

##Writing to freebase ###MQLWrite

  query=[{
    "id": "/en/radiohead",
    "type": [{
      "id": "/music/artist",
      "connect": "insert"
    }]
  }]
freebase.mqlwrite(query, {access_token: your_access_token})

###Add type sugar

freebase.add_type("/en/the_who", {type:"/music/artist", access_token: your_access_token})

###Add alias sugar

freebase.add_alias("/en/melanie_chisholm", {alias:"Sporty Spice", access_token: your_access_token})

##Method-list

  • mqlread -interface to freebase's mql api
  • search -regular search api
  • lookup -freebase search with filters to ensure only a confident, unambiguous result
  • lookup_id -generic info for an id
  • url_lookup -freebase search tuned for looking up a url
  • get_id -like freebase.lookup but satisfied with an id
  • topic -topic api
  • paginate -get all of the results to your query
  • wikipedia_page -get a url for wikipedia based on this topic
  • dbpedia_page -get a url for dbpedia based on this topic
  • mql_encode -quote a unicode string to turn it into a valid mql /type/key/value
  • rdf -RDF api
  • description -get a text blurb from freebase
  • image -get a url for image href of on this topic
  • notable -get a topic's notable type
  • drilldown -get insight into the breakdown of the topics in this type, by type and quality
  • property_introspection -common lookups for freebase property data
  • schema -common lookups for types and properties
  • grammar -get the proper pronoun to use for a topic eg. he/she/they/it
  • same_as_links -turns a url into a freebase topic and list its same:as links
  • translate -return specific language title for a topic
  • sentence -get the first sentence of a topic description
  • list -get a list of topics in a type
  • place_data -from a geo-coordinate and area radius (in feet), get the town, province, country, and timezone for it
  • is_a -get a list of identifiers for a topic
  • property_lookup -lookup soft property matches, like 'birthday' vs 'date of birth'
  • question -give a topic and a property, and get a list of results
  • wordnet -query wordnet via freebase
  • dig -transitive query on a specific property, maximum 3-ply
  • geolocation -lat/long for a topic
  • nearby -list of topics nearby a location
  • inside -list of topics inside a location
  • incoming -get any incoming data to this topic, ignoring cvt types
  • outgoing -return all outgoing links for a topic, traversing cvt types
  • graph -return all outgoing and incoming links for a topic
  • related -get similar topics to a topic
  • wikipedia_categories -get the wikipedia categories for a topic
  • wikipedia_links -outgoing links from this wikipedia page, converted to freebase ids
  • wikipedia_external_links -outgoing links from this wikipedia page, converted to freebase ids
  • from_category -get the freebase topics in a wikipedia category
  • wikipedia_subcategories -find the subcategories of this wikipedia category
  • wikipedia_to_freebase -turn a wikipedia title or url into a freebase topic
  • mqlwrite -write to freebase
  • add_type -add a type to a freebase topic
  • add_alias -add a alias to a freebase topic

##Examples

  • freebase.mqlread([{id:"/en/radiohead",name:null}])
  • freebase.lookup_id('/en/radiohead')
  • freebase.search("bill murray")
  • freebase.url_lookup("http://myspace.com/u2")
  • freebase.lookup("pulp fiction")
  • freebase.get_id("/en/radiohead")
  • freebase.topic("toronto", {filter:"allproperties"})
  • freebase.paginate([{"type":"/astronomy/moon","name":null, limit:2}],{max:13})
  • freebase.description("tunisia")
  • freebase.image('toronto',{type:"/location/citytown"})
  • freebase.grammar("toronto maple leafs")
  • freebase.same_as_links("toronto maple leafs")
  • freebase.translate("toronto maple leafs", {lang:"/lang/ja"})
  • freebase.notable("toronto maple leafs")
  • freebase.sentence('john malkovich',{},console.log)
  • freebase.list("hurricanes",{})
  • freebase.place_data({lat:51.545414293637286,lng:-0.07589578628540039}, {})
  • freebase.incoming("toronto")
  • freebase.outgoing("vancouver")
  • freebase.graph("shawshank redemption")
  • freebase.related("toronto", {})
  • freebase.is_a("george clooney")
  • freebase.property_lookup("albums")
  • freebase.question("keanu reeves", {property:"children"})
  • freebase.dig('/en/toronto', {property:'/location/location/contains'})
  • freebase.gallery('hurricanes')
  • freebase.wordnet("charming")
  • freebase.geolocation("cn tower")
  • freebase.nearby("cn tower", {type:"/location/location"})
  • freebase.inside("montreal")
  • freebase.wikipedia_page('toronto')
  • freebase.dbpedia_page('toronto')
  • freebase.wikipedia_categories("Tunisia")
  • freebase.wikipedia_links("Toronto", {})
  • freebase.wikipedia_external_links("Toronto", {})
  • freebase.property_introspection("/government/politician/party")
  • freebase.schema("politician")
  • freebase.drilldown("/chemistry/chemical_compound",{max:400})
  • freebase.from_category("Category:Bridges_in_Canada", {depth:2})
  • freebase.wikipedia_subcategories("Category:Enzymes",{depth:2}})
  • freebase.rdf("toronto")
  • freebase.documentation()

poo

Creative Commons, MIT

More Repositories

1

compromise

modest natural-language processing
JavaScript
11,140
star
2

spacetime

A lightweight javascript timezone library
JavaScript
3,822
star
3

wtf_wikipedia

a pretty-committed wikipedia markup parser
JavaScript
739
star
4

dumpster-dive

roll a wikipedia dump into mongo
JavaScript
229
star
5

unrequired

find unused javascript files in your project
JavaScript
109
star
6

efrt

neato compression for key-value data
JavaScript
90
star
7

famousd3

get famo.us to render d3js components
JavaScript
27
star
8

somehow-graph

Svelte infographics component
JavaScript
27
star
9

clooney

a graphing library in the famo.us engine
JavaScript
20
star
10

timezone-soft

parse informal timezone names
JavaScript
20
star
11

out-of-character

remove invisible unicode characters
JavaScript
17
star
12

thensome

i guess we'll find out.
JavaScript
15
star
13

spacetime-geo

determine date/time using geo-location
JavaScript
11
star
14

somehow

a number of Svelte infographics
9
star
15

fit-aspect-ratio

like math? me neither!
JavaScript
8
star
16

web-pure-data-front-end

a gui for the pure-data language written for the web
JavaScript
8
star
17

slow

whoa easy there javascript
JavaScript
6
star
18

compromise-highlight

syntax-highlighting for natural language text
JavaScript
6
star
19

wikidata-freebase

helping out in the wikidata migration
JavaScript
6
star
20

spacetime-week

you thought weeks were simple. you weren't right.
JavaScript
5
star
21

sunday-driver

be cool with large files
JavaScript
5
star
22

spacetime-ticks

calculate some sensible break-points between two dates
JavaScript
5
star
23

front_yard

where is the semantic web, if it's not out in front of your own house.
5
star
24

table-turn

html-table parser on the command line
JavaScript
4
star
25

simple_english

simplify natural language english in javascript
JavaScript
4
star
26

somehow-maps

make a map without thinking
JavaScript
4
star
27

compromise-align

generate html aligned by specific text matches
JavaScript
4
star
28

dumpster-dip

parse a wikipedia dump into tiny files
JavaScript
3
star
29

suffix-thumb

find the optimal transformations between words
JavaScript
3
star
30

somehow-calendar

calendar visualization
JavaScript
3
star
31

spacetime-daylight

calculate sunlight exposure for a given timezone
JavaScript
3
star
32

git-slop

cleaner git commands
JavaScript
3
star
33

somehow-circle

an easy way to make radial infographics
JavaScript
3
star
34

townhouse

a new-tab page with browsing history
CoffeeScript
3
star
35

a_wall_map

make a large satelite image to print as a wall map
JavaScript
2
star
36

NLP-OSS-2020

Talk for EMNLP 2020
JavaScript
2
star
37

scratch

first toil, then grave
JavaScript
2
star
38

wtf-plugin-nsfw

WIP content classifier for wikipedia articles
JavaScript
2
star
39

amble

a watch script for cleaner development
JavaScript
2
star
40

wrestlejs

a gui for goofing around with json files
JavaScript
2
star
41

wiki-summary

generate configurable-length descriptions from wikipedia articles
JavaScript
2
star
42

Dirty.js

do questionable things to the js built-in methods
JavaScript
2
star
43

wtf-plugin-mlb

parse baseball game data from wikipedia
JavaScript
2
star
44

crop-aspect

crop an image by a nearby aspect-ratio
JavaScript
2
star
45

nhl_scrape

scrape nhl.com schedule data into json
JavaScript
2
star
46

wtf-plugin-nhl

parse NHL data from wikipedia
JavaScript
2
star
47

Mount-Heavy

an android application to see pictures of nearby people that are no longer living
1
star
48

bitbar

widgets for matryer/bitbar
1
star
49

Spencer-bookmarklets

bookmarklets by spencer
1
star
50

garbage-patch

not the smartest json-patch implementation
JavaScript
1
star
51

Spencer-is-also-ubiquituous

ubiquity commands by spencer
1
star
52

somehow-timeline

a svelte component for layout with time as y-axis
JavaScript
1
star
53

freebase_garden

reasonable workflows for getting wikipedia data into freebase
JavaScript
1
star
54

spencers-chrome-extensions

chrome extensions by spencer
JavaScript
1
star
55

osm_yeah

a workflow for getting openstreetmap data presented into a browser
HTML
1
star
56

spencer-css

some tachyons-inspired css classes
CSS
1
star
57

spencermountain.github.io

yes sir, i do
JavaScript
1
star
58

somehow-ticks

generate nice axis-markings between two arbitrary numbers
JavaScript
1
star
59

somehow-script

a natural-language data-entry format
JavaScript
1
star
60

scal

modern UNIX cal command
JavaScript
1
star
61

somehow-sankey

WIP svelte sankey diagram component
JavaScript
1
star