我正在使用Lombok向我的Java应用程序添加日志记录.我已经使用了一段时间,但自从我将我的IDE从IntelliJ 13社区版升级到14 Ultimate后,我得到以下编译错误(使用maven):
error: log has private access in SesameServer
Run Code Online (Sandbox Code Playgroud)
此错误源自以下的子类SesameServer:
@Slf4j
public class AnnotatorServices extends SesameServer {
@Override
protected void initialiseRDFStoreManager(Series<Parameter> parameters) throws RepositoryConfigException, RepositoryException {
log.info("<< ------ Annotator Services ------- >>");
}
}
Run Code Online (Sandbox Code Playgroud)
当然SesameServer也使用@Slf4j注释来添加日志记录.该@Slf4j注释添加一行:
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(SesameServer.class);
Run Code Online (Sandbox Code Playgroud)
在其中使用它的类(包括SesameServer和AnnotatorServices其中SesameServer.class被当然取代AnnotatorServices.class).显然编译器认为我想使用log变量SesameServer而不是AnnotatorServices(两个类都有相同名称的变量).
我该如何防止这个问题,即SesameServer.log用来代替AnnotatorServices.log?
在W3C 的 RDF Turtle 文档中,我遇到了两个使用电子邮件地址作为 IRI 的示例(16 和 17):
_:b <http://xmlns.com/foaf/0.1/mbox> <bob@example.com> .
Run Code Online (Sandbox Code Playgroud)
据我了解,如果电子邮件地址前面带有适当的方案(即mailto:bob@example.com. 如果上例中的电子邮件地址应该是有效的 URI,则该语句实际上应为:
_:b <http://xmlns.com/foaf/0.1/mbox> <mailto:bob@example.com> .
Run Code Online (Sandbox Code Playgroud)
这是文档中的错误还是 IRI(与 URI 相对)不需要方案?
我已经HTTPRepository初始化了一个仓库的URL。我使用RepositoryConnection来检索(天气)数据并将其添加到存储库。从Web服务检索数据,然后将其转换为RDF语句,并将其添加到存储库中。这是由独立应用程序定期完成的。
当我在IntelliJ中运行此应用程序时,一切正常。
为了在服务器上运行此应用程序,我创建了一个jar文件(包含所有依赖项)。该应用程序将按预期启动,并且能够从存储库中检索数据。
但是,当应用程序尝试将数据写入存储库时,我得到了UnsupportedRDFormatException:
org.eclipse.rdf4j.rio.UnsupportedRDFormatException: Did not recognise RDF format object BinaryRDF (mimeTypes=application/x-binary-rdf; ext=brf)
at org.eclipse.rdf4j.rio.Rio.lambda$unsupportedFormat$0(Rio.java:568) ~[weatherData-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
at java.util.Optional.orElseThrow(Optional.java:290) ~[na:1.8.0_111]
at org.eclipse.rdf4j.rio.Rio.createWriter(Rio.java:134) ~[weatherData-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
at org.eclipse.rdf4j.rio.Rio.write(Rio.java:371) ~[weatherData-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
at org.eclipse.rdf4j.rio.Rio.write(Rio.java:324) ~[weatherData-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
at org.eclipse.rdf4j.repository.http.HTTPRepositoryConnection.addModel(HTTPRepositoryConnection.java:588) ~[weatherData-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
at org.eclipse.rdf4j.repository.http.HTTPRepositoryConnection.flushTransactionState(HTTPRepositoryConnection.java:662) ~[weatherData-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
at org.eclipse.rdf4j.repository.http.HTTPRepositoryConnection.commit(HTTPRepositoryConnection.java:326) ~[weatherData-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
at org.eclipse.rdf4j.repository.base.AbstractRepositoryConnection.conditionalCommit(AbstractRepositoryConnection.java:366) ~[weatherData-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
at org.eclipse.rdf4j.repository.base.AbstractRepositoryConnection.add(AbstractRepositoryConnection.java:431) ~[weatherData-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
at nl.wur.fbr.data.weather.WeatherApp.retrieveData(WeatherApp.java:122) ~[weatherData-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
at nl.wur.fbr.data.weather.WeatherData$WeatherTask.run(WeatherData.java:105) [weatherData-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
at java.util.TimerThread.mainLoop(Timer.java:555) [na:1.8.0_111]
at java.util.TimerThread.run(Timer.java:505) [na:1.8.0_111]
Run Code Online (Sandbox Code Playgroud)
发生错误的源代码是:
org.eclipse.rdf4j.rio.UnsupportedRDFormatException: Did not recognise RDF format object BinaryRDF (mimeTypes=application/x-binary-rdf; ext=brf)
at …Run Code Online (Sandbox Code Playgroud) 我有一个NSTokenField向对象(文档)添加标签.我想在将令牌添加到令牌字段时(当键入令牌化字符时)使用新标签更新对象.不幸的是,这似乎不起作用.在NSTokenField连接到我的控制器的动作,但这个动作方法不会被调用.
我也NSTextField以相同的方式连接到控制器,并调用其在控制器中的操作方法.
我也用关键值观察来尝试这个:
- (void) awakeFromNib {
[tokenField addObserver:self forKeyPath:@"objectValue" options:NSKeyValueObservingOptionNew context:NULL];
}
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if([object isEqual:tokenField]){
NSLog(@"Tokens changed");
}
}
Run Code Online (Sandbox Code Playgroud)
但只有在我以编程方式更改令牌时才会调用此操作.
如果tokenField更改了令牌,我该如何得到通知?
我正在为 Swift 中的 Turtle 格式的 RDF 数据编写解析器。海龟语法将模式定义PN_CHARS_BASE为
[163s] PN_CHARS_BASE ::= [A-Z] | [a-z] | [#x00C0-#x00D6] | [#x00D8-#x00F6] | [#x00F8-#x02FF] | [#x0370-#x037D] | [#x037F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
Run Code Online (Sandbox Code Playgroud)
(请参阅W3C Turtle 推荐)。
模式中的最后一组[#x10000-#xEFFFF]超出了 UTF-16 字符串编码的范围。这里需要UTF-32。
这种模式用于匹配,例如,在前缀的第一个字符的字符串前缀,如foaf中foaf:name,数这里不允许。
我想NSRegularExpression用于解析海龟文件。所以为了匹配PN_CHARS_BASE模式,我有以下测试代码:
let PN_CHARS_BASE = "[A-Z]|[a-z]|[\\u00C0-\\u00D6]|[\\u00D8-\\u00F6]|[\\u00F8-\\u02FF]|[\\u0370-\\u037D]|[\\u037F-\\u1FFF]|[\\u200C-\\u200D]|[\\u2070-\\u218F]|[\\u2C00-\\u2FEF]|[\\u3001-\\uD7FF]|[\\uF900-\\uFDCF]|[\\uFDF0-\\uFFFD]|[\\u10000-\\uEFFFF]"
do {
let teststr = "9"
let regex = try NSRegularExpression(pattern: PN_CHARS_BASE, options: [])
let matches = …Run Code Online (Sandbox Code Playgroud) regex character-encoding nsregularexpression swift turtle-rdf
turtle-rdf ×2
action ×1
cocoa ×1
exception ×1
intellij-14 ×1
iri ×1
java ×1
lombok ×1
macos ×1
nstokenfield ×1
objective-c ×1
rdf ×1
rdf4j ×1
regex ×1
sesame ×1
slf4j ×1
swift ×1
uri ×1