Виртуозная ошибка: отсутствует предикат и объект между объектом пустого узла верхнего уровня и точкой, обработанной в ожидании здесь

Я помещаю следующие данные (пустые узлы) в 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>
] .

Это точные данные, которые передаются в Virtuoso через POST запрос (только усеченный; фактические отправленные данные длиннее).

Я получаю следующее сообщение об ошибке:

SP029: Загрузчик TURTLE RDF, строка 8: отсутствует предикат и объект между объектом пустого узла верхнего уровня и обработанной точкой, ожидающей обработки здесь.

Это не имеет особого смысла для меня. Есть идеи, что случилось?

2 ответа

Ваши данные (которые на первый взгляд казались Черепахами, и именно так их анализировал Virtuoso) - это просто список субъектов (сущностей) - неопознанных а / к / пустых узлов - без предикатов (атрибутов) или объекты (ценности). Это может помочь вам визуализировать то, что я имею в виду -

[ … ]  .

Эта редакция вашего образца будет работать, но вы можете сделать лучшее заявление по каждому из ваших неназванных субъектов -

@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  .

Кроме того, вы можете сделать это, не добавляя никаких утверждений -

@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>
.

Поскольку вы предоставили дополнительную информацию - ваши данные N3, а не черепаха - кажется вероятным, что ваши POST неправильно идентифицирует ваше представление как N3, что приводит к ошибке синтаксического анализа Virtuoso.

Похоже, что синтаксис на самом деле правильный или, возможно, достаточно правильный, чтобы некоторые онлайн-переводчики RDF (например, этот) могли правильно извлекать триплеты и переводить их в другие форматы. Видимо, Виртуоз не способен на это. Как предлагается в другом ответе, этот синтаксис работает:

@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.

К сожалению, API Apache Jena не позволит мне изменить способ представления пустых узлов в N3. Но это позволяет мне использовать другой формат вывода. Поэтому я перешел на RDF/XML, и это работает. Точно такие же данные, представленные в RDF/XML вместо N3, теперь можно перенести в Virtuoso.

Другие вопросы по тегам