示例#1
0
def fb_save_base():
    op = OptionParser(usage='%prog [options] baseid')
    
    op.disable_interspersed_args()
    
    op.add_option('-s', '--service', dest='service_host',
                    metavar='HOST',
                    default="freebase.com",
                    help='Freebase HTTP service address:port')
    
    op.add_option('-S', '--sandbox', dest='use_sandbox',
                    default=False, action='store_true',
                    help='shortcut for --service=sandbox-freebase.com')

    options, args = op.parse_args()
    
    service_host = options.service_host
    if options.use_sandbox:
        service_host = "sandbox-freebase.com"

    if len(args) < 1:
        op.error('Required baseid missing')
    
    if len(args) > 1:
        op.error('Too many arguments')
    
    s = HTTPMetawebSession(service_host)
    
    print json.dumps(dump_base(s, args[0]), indent=2)
示例#2
0
    def test_restore_over_restore(self):
        domain_id = _create_domain()
        graph = dump_base(s, "/base/contractbridge")
        restore(s, graph, domain_id)

        # now we restore again... it should raise a MetawebError
        self.assertRaises(MetawebError, restore, s, graph, domain_id)
 def test_restore_over_restore(self):
     domain_id = _create_domain()
     graph = dump_base(s, "/base/contractbridge")   
     restore(s, graph, domain_id)
     
     # now we restore again... it should raise a MetawebError
     self.assertRaises(MetawebError, restore, s, graph, domain_id)
示例#4
0
def cmd_dump_base(fb, baseid):
    """dump a base to stdout
    %prog dump_base baseid

    Dump a base by outputting a json representation
    of the types and properties involved.
    """
    print >> sys.stdout, json.dumps(dump_base(fb.mss, baseid), indent=2)
示例#5
0
def cmd_dump_base(fb, baseid):
    """dump a base to stdout
    %prog dump_base baseid

    Dump a base by outputting a json representation
    of the types and properties involved.
    """
    print >> sys.stdout, json.dumps(dump_base(fb.mss, baseid), indent=2)
 def test_copy_an_entire_domain(self):
     domain_id = _create_domain()
     ex_domain_id = "/base/contractbridge" # example domain id
     ex_domain_type = "bridge_player"
     ex_domain_type_id = ex_domain_id + "/" + ex_domain_type
     
     graph = dump_base(s, ex_domain_id)
     restore(s, graph, domain_id)
     
     newperson, realperson = s.mqlreadmulti([{"id" : domain_id + "/" + ex_domain_type, "/type/type/properties" : {"return" : "count" }}, 
                                             {"id" : ex_domain_type_id, "/type/type/properties" : {"return" : "count" }}])
     self.assertEqual(newperson["/type/type/properties"], realperson["/type/type/properties"])
     
     # let's try and check everything.
     # - check all the types are there
     realtypes = s.mqlread([{"id" : None, "type" : "/type/type", "domain" : ex_domain_id}])
     newtypes = s.mqlread([{"id" : None, "type" : "/type/type", "domain" : domain_id}])
     
     l = lambda q: sorted(map(f, q))
     
     realtypes = l(realtypes)
     newtypes  = l(newtypes)
     
     self.assertEqual(len(realtypes), len(newtypes))
     for i in range(len(realtypes)):
         self.assertEqual(realtypes[i].rsplit("/", 1)[-1], newtypes[i].rsplit("/", 1)[-1])
     
     # - check the properties are the same
     
     def get_properties(types):
         properties = set()
         for i in s.mqlreadmulti([{"id" : id, "/type/type/properties" : [{"id" : None}]} for id in types]):
             properties.update(map(lambda x: x["id"], i["/type/type/properties"]))
         return properties
     
     realproperties = sorted(list(get_properties(realtypes)))
     newproperties  = sorted(list(get_properties(newtypes)))
     
     def ignore_base(id): return id.rsplit("/", 1)[-1]
     
     self.assertEqual(len(realproperties), len(newproperties))
     self.assertEqual([ignore_base(prop_id) for prop_id in realproperties], [ignore_base(prop_id) for prop_id in newproperties])
示例#7
0
    def test_copy_an_entire_domain(self):
        domain_id = _create_domain()
        ex_domain_id = "/base/contractbridge"  # example domain id
        ex_domain_type = "bridge_player"
        ex_domain_type_id = ex_domain_id + "/" + ex_domain_type

        graph = dump_base(s, ex_domain_id)
        restore(s, graph, domain_id)

        newperson, realperson = s.mqlreadmulti([{
            "id": domain_id + "/" + ex_domain_type,
            "/type/type/properties": {
                "return": "count"
            }
        }, {
            "id": ex_domain_type_id,
            "/type/type/properties": {
                "return": "count"
            }
        }])
        self.assertEqual(newperson["/type/type/properties"],
                         realperson["/type/type/properties"])

        # let's try and check everything.
        # - check all the types are there
        realtypes = s.mqlread([{
            "id": None,
            "type": "/type/type",
            "domain": ex_domain_id
        }])
        newtypes = s.mqlread([{
            "id": None,
            "type": "/type/type",
            "domain": domain_id
        }])

        l = lambda q: sorted(map(f, q))

        realtypes = l(realtypes)
        newtypes = l(newtypes)

        self.assertEqual(len(realtypes), len(newtypes))
        for i in range(len(realtypes)):
            self.assertEqual(realtypes[i].rsplit("/", 1)[-1],
                             newtypes[i].rsplit("/", 1)[-1])

        # - check the properties are the same

        def get_properties(types):
            properties = set()
            for i in s.mqlreadmulti([{
                    "id": id,
                    "/type/type/properties": [{
                        "id": None
                    }]
            } for id in types]):
                properties.update(
                    map(lambda x: x["id"], i["/type/type/properties"]))
            return properties

        realproperties = sorted(list(get_properties(realtypes)))
        newproperties = sorted(list(get_properties(newtypes)))

        def ignore_base(id):
            return id.rsplit("/", 1)[-1]

        self.assertEqual(len(realproperties), len(newproperties))
        self.assertEqual([ignore_base(prop_id) for prop_id in realproperties],
                         [ignore_base(prop_id) for prop_id in newproperties])