Как использовать SPARQL-запрос для получения информации в формате rdf: Description в RDF / XML? - PullRequest
0 голосов
/ 11 октября 2018

Например, как использовать запрос SPARQL для получения метки zthes: в Def1-4393574 для skos: Concept (# 4393574).Спасибо!

<?xml version="1.0" encoding="UTF-8"?>
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
 xmlns:skos="http://www.w3.org/2004/02/skos/core#" 
 xmlns:zthes="http://synaptica.net/zthes/">
 <skos:Concept rdf:about="#4393574">
 <skos:prefLabel>A prefLabel</skos:prefLabel>
 <zthes:termNote rdf:ID="Def1-4393574">Def1</zthes:termNote>
 </skos:Concept>
 <rdf:Description rdf:about="Def1-4393574">
 <zthes:label> a zthes label</zthes:label>
 </rdf:Description>
 </rdf:RDF>

ОБНОВЛЕНО: Вот версия черепахи, преобразованная в http://www.easyrdf.org/converter

@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix ns0: <http://synaptica.net/zthes/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<http://example.me/#4393574>
  a skos:Concept ;
  skos:prefLabel "A prefLabel" ;
  ns0:termNote "Def1" .

<http://example.me/#Def1-4393574>
  a rdf:Statement ;
  rdf:subject <http://example.me/#4393574> ;
  rdf:predicate ns0:termNote ;
  rdf:object "Def1" .

<http://example.me/Def1-4393574> ns0:label " a zthes label" .

1 Ответ

0 голосов
/ 12 октября 2018

Проблема в том, что ваши данные на самом деле не имеют отношения между zthes: label и skos: Concept.

Основной причиной этого является незначительная синтаксическая ошибка в исходном файле RDF / XML.Эта строка:

<zthes:termNote rdf:ID="Def1-4393574">Def1</zthes:termNote>

определяет ресурс с идентификатором <http://example.me/#Def1-4393574>.Между тем эта строка:

<rdf:Description rdf:about="Def1-4393574">

определяет другой ресурс с идентификатором <http://example.me/Def1-4393574>.Они не одного и того же ресурса (обратите внимание на отсутствующий #), поэтому два определения не связаны.Эта конкретная проблема может быть исправлена ​​добавлением # впереди, например так:

<rdf:Description rdf:about="#Def1-4393574">

Это исправление приведет к следующей модели RDF (с использованием синтаксиса Turtle):

@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix zthes: <http://synaptica.net/zthes/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<http://example.me/#4393574>
  a skos:Concept ;
  skos:prefLabel "A prefLabel" ;
  zthes:termNote "Def1" .

<http://example.me/#Def1-4393574>
  a rdf:Statement ;
  rdf:subject <http://example.me/#4393574> ;
  rdf:predicate ns0:termNote ;
  rdf:object "Def1";
  zthes:label " a zthes label" .

Между прочим, это все еще очень странная модель RDF, использующая преобразование операторов, но при условии, что это именно то, с чем вы должны работать, запрос на получение метки zthes для данной концепции будет выглядеть примерно так:

 PREFIX zthes: <http://synaptica.net/zthes/>
 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

 SELECT ?label
 WHERE {  
    [] rdf:subject <http://example.me/#4393574> ;
       zthes:label ?label . 
 }
...