0

我将以下数据(空白节点)推送到 Virtuoso:

@prefix ns0:   <http://linked.opendata.cz/ontology/chord/> .
@prefix ns1:   <http://linked.opendata.cz/resource/business-entity/> .

[ ns0:source  ns1:CZ00006947 ;
  ns0:target  <http://linked.opendata.cz/resource/domain/seznam.gov.cz/rejstriky/business-entity/28175492>
] .

[ ns0:source  ns1:CZ00241610 ;
  ns0:target  <http://linked.opendata.cz/resource/domain/seznam.gov.cz/rejstriky/business-entity/60437359>
] .

这是通过POST请求推送到 Virtuoso 的确切数据(仅截断;实际提交的数据更长)。

我收到以下错误消息:

SP029:TURTLE RDF 加载器,第 8 行:在顶级空白节点主题和待处理的点之间缺少谓词和对象。

这对我来说没有多大意义。知道有什么问题吗?

4

2 回答 2

0

Your data (which appeared at first glance to be Turtle, and this is how Virtuoso was parsing it) is just a list of subjects (entities) -- the unidentified a/k/a blank nodes -- with no predicates (attributes) or objects (values). This may help you visualize what I mean --

[ … ]  .

This revision of your sample would work, but you may have a better statement to make about each of your unnamed subjects --

@prefix  ns0:  <http://linked.opendata.cz/ontology/chord/> .
@prefix  ns1:  <http://linked.opendata.cz/resource/business-entity/> .
@prefix  owl:  <http://www.w3.org/2002/07/owl#> .

[ ns0:source  ns1:CZ00006947 ;
  ns0:target  <http://linked.opendata.cz/resource/domain/seznam.gov.cz/rejstriky/business-entity/28175492>
]  a  owl:Thing  .

[ ns0:source  ns1:CZ00241610 ;
  ns0:target  <http://linked.opendata.cz/resource/domain/seznam.gov.cz/rejstriky/business-entity/60437359>
]  a  owl:Thing  .

Alternatively, you could do this, without adding any statements --

@prefix  ns0:  <http://linked.opendata.cz/ontology/chord/> .
@prefix  ns1:  <http://linked.opendata.cz/resource/business-entity/> .
@prefix  owl:  <http://www.w3.org/2002/07/owl#> .

[]  ns0:source  ns1:CZ00006947 ;
    ns0:target  <http://linked.opendata.cz/resource/domain/seznam.gov.cz/rejstriky/business-entity/28175492>
.

[]  ns0:source  ns1:CZ00241610 ;
    ns0:target  <http://linked.opendata.cz/resource/domain/seznam.gov.cz/rejstriky/business-entity/60437359>
.

As you have provided additional details -- that your data is N3, not Turtle -- it seems likely that your POST is not properly identifying your submission as N3, which leads to Virtuoso's parsing error.

于 2016-03-31T17:07:36.003 回答
0

看起来语法实际上是正确的,或者可能足够正确,以至于一些在线 RDF 翻译器(比如这个)能够正确地提取三元组并将其翻译成其他格式。显然,Virtuoso 无法做到这一点。正如另一个答案中所建议的,这种语法有效:

@prefix  ns0:  <http://linked.opendata.cz/ontology/chord/> .
@prefix  ns1:  <http://linked.opendata.cz/resource/business-entity/> .

[]  ns0:source  ns1:CZ00006947 ;
    ns0:target  <http://linked.opendata.cz/resource/domain/seznam.gov.cz/rejstriky/business-entity/28175492>
.

[]  ns0:source  ns1:CZ00241610 ;
    ns0:target  <http://linked.opendata.cz/resource/domain/seznam.gov.cz/rejstriky/business-entity/60437359>
.

但就我而言,问题是我使用Apache Jena以编程方式生成输出。我的问题中的数据是 Apache Jena 如何表示N3中的空白节点(这是这种格式的名称),这显然与 Virtuoso 理解N3中的空白节点的方式不兼容。

不幸的是,Apache Jena API 不允许我更改空白节点在 N3 中的表示方式。但它确实允许我使用不同的输出格式。所以我切换到RDF/XML并且工作正常。以 RDF/XML 而不是 N3 表示的完全相同的数据现在可以推送到 Virtuoso。

于 2016-03-31T19:06:05.947 回答