假设我有一些jena查询对象:
String query = "SELECT * WHERE{ ?s <some_uri> ?o ...etc. }";
Query q = QueryFactory.create(query, Syntax.syntaxARQ);
Run Code Online (Sandbox Code Playgroud)
在查询中获取三元组的所有主题的最佳方法是什么?优选地,不必手动进行任何字符串解析/操作.
例如,给定一个查询
SELECT * WHERE {
?s ?p ?o;
?p2 ?o2.
?s2 ?p3 ?o3.
?s3 ?p4 ?o4.
<http://example.com> ?p5 ?o5.
}
Run Code Online (Sandbox Code Playgroud)
我希望能够返回一些看起来像的列表
[?s, ?s2, ?s3, <http://example.com>]
Run Code Online (Sandbox Code Playgroud)
换句话说,我想要查询中所有主题的列表.即使只有那些变量或文字/ uris的主题也会有用,但我想查找查询中所有主题的列表.
我知道有方法可以返回结果变量(Query.getResultVars
)和其他一些信息(参见http://jena.apache.org/documentation/javadoc/arq/com/hp/hpl/jena/query/Query.html),但是我似乎无法找到任何具体的查询主题(所有结果变量的列表也将返回谓词和对象).
任何帮助赞赏.
所以我想使用request-promise来拉取页面的主体.一旦我有了页面,我想收集所有标签并获得这些图像的src数组.假设页面上的src属性具有相对路径和绝对路径.我想要一个页面上的imgs绝对路径数组.我知道我可以使用一些字符串操作和npm路径来构建绝对路径,但我想找到一种更好的方法.
var rp = require('request-promise'),
cheerio = require('cheerio');
var options = {
uri: 'http://www.google.com',
method: 'GET',
resolveWithFullResponse: true
};
rp(options)
.then (function (response) {
$ = cheerio.load(response.body);
var relativeLinks = $("img");
relativeLinks.each( function() {
var link = $(this).attr('src');
console.log(link);
if (link.startsWith('http')){
console.log('abs');
}
else {
console.log('rel');
}
});
});
Run Code Online (Sandbox Code Playgroud)
结果
/logos/doodles/2016/phoebe-snetsingers-85th-birthday-5179281716019200-hp.gif
rel
Run Code Online (Sandbox Code Playgroud) 使用 --fix 标志来自动化 ESLint 是一个好的做法,还是从长远来看会产生问题?
例如,我npm
在脚本中使用 and "prestart"
。这意味着每次运行时 ESLint 都会运行npm start
并修复代码中任何可修复的错误。这会导致什么问题?
对任何"为什么不是这个正则表达式工作html的典型回应!?!" 问题是"因为HTML不是常规语言".
所以,我很好奇是否有人有常用语言的常用编程语言列表,因此适用于正则表达式匹配.我知道有一些方法可以确定一种语言是否规则(逐个案例),但对于复杂的语言,证明也可能非常复杂.我想也许快速检查一下语言可能会很有用.
我也知道你可以用非常规语言做正则表达式,但它们并不总是可靠的(html示例).
regex language-agnostic programming-languages regular-language
假设我有一些jena查询对象:
String query = "SELECT * WHERE{ ?s <some_uri> ?o ...etc. }";
Query q = QueryFactory.create(query, Syntax.syntaxARQ);
Run Code Online (Sandbox Code Playgroud)
我想使用ElementWalker并在查询中添加三元组,如下所示:
给出一个查询
SELECT * WHERE {
?s ?p ?o;
?p2 ?o2.
?s2 ?p3 ?o3.
}
Run Code Online (Sandbox Code Playgroud)
我希望添加一个三元组查询看起来像:
SELECT * WHERE {
?s ?p ?o;
?p2 ?o2.
-->?s <some_url> "value". //added
?s2 ?p3 ?o3.
}
Run Code Online (Sandbox Code Playgroud)
我知道有很多方法可以添加到顶层(Jena Tutorial),但是当我使用ElementWalker遍历它们时,我想以某种方式添加三元组:
ElementWalker.walk(query.getQueryPattern(), new ElementVisitorBase(){
public void visit(ElementPathBlock el) {
// when it's a block of triples, add in some triple
ElementPathBlock elCopy = new ElementPathBlock();
Iterator<TriplePath> triples …
Run Code Online (Sandbox Code Playgroud) 我创建的运行时依赖使Node.js应用范围的包在我的package.json
:
"dependencies": {
"@shawnzhu/mybot" : "latest",
...
},
"engines": {
"npm": ">2.0.0",
"node": "0.10.38"
},
Run Code Online (Sandbox Code Playgroud)
我也有一个自定义.npmrc
指向@shawnzhu
我的私人npm注册表的范围.
目前它在部署到heroku时可以工作,它将npm升级到v2.7.x. 但是,a cf push
to bluemix失败,控制台输出显示:
registry "@shawnzhu/mybot" not found.
Run Code Online (Sandbox Code Playgroud)
在查看整个控制台输出后,我意识到它使用npm
v1.4.28,它不支持作用域包.
如何在bluemix的node.js应用程序中获取npm v2.0.0 +?