f# - 使用 F# Freebase 类型提供程序访问链接项目的正确方法是什么

标签 f# freebase type-providers f#-data

我有以下代码,旨在列出在 Freebase 上上市的证券交易所网站:

#if INTERACTIVE
#r @"C:\Users\kit\Documents\Visual Studio 11\Projects\Demo\packages\FSharpx.TypeProviders.1.7.4\lib\40\FSharpx.TypeProviders.dll"
#r @"C:\Users\kit\Documents\Visual Studio 11\Projects\Demo\packages\FSharpx.TypeProviders.Freebase.1.7.4\lib\40\FSharpx.TypeProviders.Freebase.dll"
#r @"C:\Users\kit\Documents\Visual Studio 11\Projects\Demo\packages\FSharpx.TypeProviders.Freebase.1.7.4\lib\40\FSharpx.TypeProviders.Freebase.DesignTime.dll"
#endif 

let GetExchanges() =
    let dc = FreebaseData.GetDataContext()
    dc.DataContext.SendingRequest.Add(fun e -> printfn "url: %s" e.RequestUri.AbsoluteUri)

    dc.``Products and Services``.Business.``Stock exchanges``
    |> Seq.truncate 10
    |> Seq.iter (fun exchange -> printfn "Exchange: %s" exchange.Name
                                 exchange.``Official website``
                                 |> Seq.iter (fun site -> printfn "%s" site.Name))

没有最后两行(即仅列出 Exchange 名称),代码可以正常工作。有了这些行,我得到了 400(错误请求)。

该行生成的 URL 是这样的:

https://www.googleapis.com/freebase/v1/mqlread?query=%5B%7B%22/type/object/id%22:null,%20%22/type/object/name%22:null%20,%20%22optional%22:true,%20%22/type/object/type%22:%22/type/uri%22,%20%22!/common/topic/official_website%22:%20%5B%7B%22/type/object/id%22:%22/en/amex%22,%22/type/object/type%22:%22/common/topic%22%20,%20%22limit%22:%20500%7D%5D%7D%5D&cursor

...如果我浏览到它,我会从 Freebase 得到这个:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "badRequest",
    "message": "Can't reverse /common/topic/official_website as it expects /type/uri, not an object"
   }
  ],
  "code": 400,
  "message": "Can't reverse /common/topic/official_website as it expects /type/uri, not an object"
 }
}

我是否使用正确的方法来访问链接实体?如果是这样,这是类型提供程序中的错误吗?我在访问其他链接实体时遇到类似错误。

最佳答案

这是类型提供程序中的一个错误,现已修复:https://github.com/fsharp/FSharp.Data/issues/68

关于f# - 使用 F# Freebase 类型提供程序访问链接项目的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14768389/

相关文章:

c# - 编写字符串列表的不可变 F# 映射

javascript - 浏览器可以对 XSS jquery.getJSON() 请求 header 中指定的 Set-Cookie 使用react吗?

f# - ODataService 类型提供程序的可为空整数不存在属性 'HasValue'

f# - 如何从类型提供程序中的调用引用中调用函数?

f# - 我什么时候需要调用 "ConvertToGenerated"成员来使用类型提供程序生成类型

f# - MailboxProcessor.PostAndReply 设计选择

f# - 在 F# 中,如何将 null 写入 Nullable<System.DateTime> 类成员?

asynchronous - F# 异步映射不同类型

freebase - 如何获取维基数据上所有电影的列表?

api - 如何反转MQL查询(对于freebase)?