小编Adr*_*end的帖子

在Node.js中管道/流式传输JavaScript对象

我试图绕过Node.js流,而不是我对JavaScript和节点很新,我真正得到的最后一种语言是Perl和PHP :-D

我已经阅读了Buffer/Streams文档@ nodejs.org,观看了James Halliday @ LXJS,阅读了他的流手册和Thorsten Lorenz 事件流帖子.我开始了解基础知识:)

我处理在RDF中序列化的数据(既不是JSON也不是XML).我设法获取数据(通过请求在实际代码中)并使用rdfstore模块将其解析为JS对象.

到目前为止我这样做:

s.createReadStream('myRDFdata.ttl').pipe(serialize()).pipe(process.stdout);
Run Code Online (Sandbox Code Playgroud)

serialize()现在解析序列化代码的工作在哪里.我使用through模块来连接流.

现在我有更多的方法(不是真正的函数声明,但我希望你明白这一点):

  • getRecipe(parsedRDF) - >获取解析后的RDF(作为JavaScript对象)并告诉我如何使用它
  • createMeal(parsedRDF, recipe) - >从上面获取解析的RDF和配方,并从中创建一个新的RDF对象
  • 这个新对象需要序列化并发送到浏览器
  • (在现实世界中,getRecipe必须在浏览器中进行用户交互)

我喜欢通过管道将它链接在一起的想法,以便在我稍后增强代码时获得更高的灵活性.但是我不希望每次都将它序列化为RDF序列化,而只是发送JS对象.从我在文档中读到的内容中,我可以使用该stringify模块从每个步骤中获取一个字符串,以便将其传递给下一步.但:

  • 这真的有意义吗?我是否会增加不必要的开销或者这可以忽略不计?
  • 我不知道如何将parsedRDF提供给两个方法,这些方法getRecipe必须首先调用依赖,输出也是输入createMeal.是否有模块可以帮助我?
  • 可能是我必须要求用户选择最终的配方,所以我可能需要将内容发送到浏览器以获得最终答案.当管道"等待"时,我可以在插座上做这样的事情吗?

我希望这表明我正在尝试做什么,如果不是,我会尝试提供更多细节/改述.

更新:睡了之后我想出了更多的东西:

  • 如果有官方序列化格式,将RDF格式序列化为非标准格式可能没有意义.因此,stringify我将简单地在步骤之间传递正式的RDF序列化,而不是使用我
  • 这确实意味着我在每个步骤中解析/序列化对象,这肯定会增加开销.问题是我在乎吗?我可以扩展我使用的RDF模块从流解析并序列化为一个
  • 我可以解决之间的相关问题getRecipe,并createMeal通过简单地添加一些信息getRecipeparseRDF,这可以很容易地与RDF做不破坏原始数据模型.但我仍然有兴趣知道我是否可以使用管道来处理这样的依赖关系

javascript pipe object stream node.js

7
推荐指数
1
解决办法
7177
查看次数

CONSTRUCT/WHERE中的SPARQL函数

我主要在处理查询时使用SPARQL SELECT进行调试,但最后我想以CONSTRUCT方式使用最终结果; 因为我想使用图形而不是键/值查询结果.

我还没有得到(并且似乎无法找到搜索引擎/文档)是我可以使用这样的功能.作为一个例子,我使用属性路径来连接我进入"超级字符串"的标题,我后来用它来构建Lucene索引以提高纯文本搜索质量:

PREFIX dc: <http://purl.org/dc/elements/1.1/>    

SELECT (group_concat(?title ; separator = " ") AS ?fancytitle) WHERE { 
  GRAPH ?graph {
    <http://data.staatsarchiv-bs.ch/id/archivalresource/CH-000027-1/pa-633c-a-312-fasc-163>  dc:relation+ ?relation .
    ?relation dc:title ?title .
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我想和?fancytitle新三人一样

<http://data.staatsarchiv-bs.ch/id/archivalresource/CH-000027-1/pa-633c-a-312-fasc-163> <fancytitle> ?fancytitle .
Run Code Online (Sandbox Code Playgroud)

所以我可以将它直接存储在一个新的图表中.这可能吗?我玩了一些查询,但无法让它被SPARQL处理器接受.仅供我使用Fuseki.

您可以在我的SPARQL端点上试用它

rdf sparql fuseki

6
推荐指数
2
解决办法
1318
查看次数

使用Travis CI将Maven版本部署到Github

我成功地设法使用标签将maven项目中的JAR部署到Github.但是,当前配置假定JAR的文件名始终保持不变,而不是.当我执行新版本时,这将相应地更改,因此部署将失败.

有没有办法在YAML文件中使用通配符?从我在Stackoverflow和Web上找到的内容来看,YAML不支持通配符.我没有在没有操纵.travis.yml文件的情况下找到另一个黑客,我想避免.

版本字符串可用于pom.xml.

目前.travis.yml:

language: java
jdk:
- openjdk7

deploy:
  provider: releases
  api_key:
    secure: asfdsdflkjsdflkj...
  file: target/helloci-1.0-SNAPSHOT.jar
  on:
    repo: ktk/helloci
    all_branches: true
    tags: true
Run Code Online (Sandbox Code Playgroud)

我肯定能以某种方式编写脚本但是Travis CI会更改自己的配置文件,我不确定这是否会起作用,b)是个好主意.

Repo我正在玩:https://github.com/ktk/helloci

deployment github maven travis-ci

5
推荐指数
2
解决办法
3061
查看次数

选择每组前 X 个结果

我有一堆带有附加属性的 RDF 数据立方体观察,在我的例子中是记录该值的日期。

例如,该模式很简单(省略其他维度/度量/属性):

<obs1> a qb:Observation ;
  my:lastupdate '2017-12-31'^^xsd:date ;
  qb:dataSet <dataSet1> .

<obs2> a qb:Observation ;
  my:lastupdate '2016-12-31'^^xsd:date ;
  qb:dataSet <dataSet1> .

<obs2_1> a qb:Observation ;
  my:lastupdate '2017-12-31'^^xsd:date ;
  qb:dataSet <dataSet2> .

<obs2_2> a qb:Observation ;
  my:lastupdate '2015-12-31'^^xsd:date ;
  qb:dataSet <dataSet2> .
Run Code Online (Sandbox Code Playgroud)

qb:DataSet所以我的店里有很多。现在我想找出my:lastupdate每个数据集的最后 X 值。假设我想要每个特定数据集的最后 5 个值。

对于一个特定的数据集,我可以非常轻松地做到这一点:

SELECT * WHERE {

  ?observation my:lastupdate ?datenstand ;
                 qb:dataSet <dataSet1>                                                                                                                                            
} ORDER BY DESC(?datenstand) LIMIT 5    
Run Code Online (Sandbox Code Playgroud)

但如果这在每个数据集的单个 SPARQL 查询中完全可能的话,我有点迷失了。我尝试了与子选择、LIMIT 和 GROUP BY 组合的各种组合,但没有任何结果导致我正在寻找的结果。

grouping sparql limit data-cube

3
推荐指数
1
解决办法
636
查看次数