【问题标题】:Programmaticaly upload dataset to fuseki以编程方式将数据集上传到 fuseki
【发布时间】:2019-02-06 08:38:23
【问题描述】:

我使用 jena fuseki 2 docker 镜像来创建一个 fuseki 服务器。

我想知道是否有办法将我的数据集上传到 fuseki,而不是通过网络界面,而是以编程方式,通过 SPARQL 或 Python 或其他方式。

还有,有没有办法直接从 fuseki 使用来自 webprotégé 的本体? 谢谢你的回答

【问题讨论】:

    标签: sparql jena owl protege fuseki


    【解决方案1】:

    Fuseki 带有一个可用于上传数据的 HTTP API。您可以使用 CURL 或 Python HTTP 库与此 API 进行通信。 Fuseki 还包括可用于调用 HTTP API 的命令行帮助程序脚本。详情请见https://jena.apache.org/documentation/fuseki2/soh.html#soh-sparql-http

    【讨论】:

    • 感谢您的回答。拜托,你能告诉我一个如何使用 python 和 fuseki 的 HTTP API 上传我的数据集的例子吗?
    • @mee 只是将文件作为流加载,这使得 HTTP 内容主体并使用 HTTP PUT 作为请求类型。然后确实是由数据集和图形名称组成的适当请求 URI。
    • 我试过这个没有成功:with open('pizza.owl', 'rb') as f: response=requests.put(http://localhost:3030/mydataset/update, data=f, stream=True)
    • 如果我对文档的理解正确,您可能需要 PUT 到 http://localhost:3030/mydataset/datahttp://localhost:3030/mydataset/data?default。这将使用 SPARQL 图形存储协议 (w3.org/2012/01/http-rdf-update),它(使用 PUT 调用)替换整个数据集。如果你想使用 /update 端点,它只添加/更新给定的三元组,你可能需要使用 POST 作为 HTTP 方法。
    • 我在 put 方法中尝试将 http://localhost:3030/mydataset/data 作为 url 并得到 response[400],当我查看容器日志时,我发现:PUT http://localhost:3030/mydataset/dataPUT /mydataset :: 'data' :: [multipart/form-data] ?400 Only files accepted in multipart file upload (got fileName=pizza.owl)
    【解决方案2】:

    如果你的 RDF 数据是海龟格式,你可以使用下面的代码:

    data = open('test.ttl').read()
    headers = {'Content-Type': 'text/turtle;charset=utf-8'}
    r = requests.post('http://localhost:3030/mydataset/data?default', data=data, headers=headers)
    

    如果你的 RDF 数据是其他格式,你应该改变你的标题,这里有一个列表:

    n3: text/n3; charset=utf-8
    nt: text/plain
    rdf: application/rdf+xml
    owl: application/rdf+xml
    nq: application/n-quads
    trig: application/trig
    jsonld: application/ld+json
    

    【讨论】:

      【解决方案3】:

      我尝试使用 CURL、WGET、./s-post、./s-put 将文件上传到 fuseki,但没有任何效果。我在邮递员的帮助下生成了请求。如果有人像我一样正在寻找正确的 CURL 请求,就是这样:

      curl --location --request POST 'http://{FUSEKIADDRESS}/{YOURDATASET}/data' --header 'Content-Type: multipart/form-data' --form 'file.ttl=@{}PATHtoFILE/file.ttl'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-10
        • 2011-09-15
        • 1970-01-01
        • 2016-12-11
        • 2015-07-24
        相关资源
        最近更新 更多