#rdf #semantic-web #sparql
#rdf #семантический веб #sparql
Вопрос:
Я новичок в SPARQL и пытаюсь выбрать два или более свойства данных из entity. У меня есть объект Artist, который имеет два свойства данных (id и name). Я пытаюсь получить результат, подобный этому:
id Name
0 Artist 1
1 Artist 2
Но то, что я получаю, это:
id Name
0 Artist 1
0 Artist 2
1 Artist 1
1 Artist 2
Вот мой запрос SPARQL:
PREFIX wits: <http://wits.org/song/>
SELECT ?name, ?id
FROM <http://wits.org/song>
WHERE
{
<http://wits.org/song/Artist> wits:Name ?name .
<http://wits.org/song/Artist> wits:ID ?id
}
Вот RDF-реализация класса Artist:
<!ENTITY www "http://www.wits.org/" >
<owl:Class rdf:about="amp;www;Artist">
<rdfs:subClassOf rdf:resource="amp;owl;Thing"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="amp;www;song#ID"/>
<owl:allValuesFrom rdf:resource="amp;xsd;unsignedInt"/>
</owl:Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="amp;www;song#Name"/>
<owl:qualifiedCardinality rdf:datatype="amp;xsd;nonNegativeInteger">1</owl:qualifiedCardinality>
<owl:onDataRange rdf:resource="amp;xsd;string"/>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
Это команда INSERT, которая была выполнена ранее:
PREFIX wits: <http://wits.org/song/>
INSERT DATA INTO <http://wits.org/song> {
wits:Artist wits:Name "Artist 2"
wits:ID 1 .
}
Что я делаю не так?
Приветствуется любая помощь. 125125
Комментарии:
1. Дублируется в answers.semanticweb.com/questions/8757 /…
Ответ №1:
Я предполагаю, что вы вставляете следующие данные.
INSERT DATA INTO <http://wits.org/song> {
wits:Artist wits:Name "Artist 0"; wits:ID 0 .
wits:Artist wits:Name "Artist 1"; wits:ID 1 .
}
что неправильно, потому что wits:Artist
будет иметь оба имени и оба идентификатора, вам нужно присвоить разные URI каждому исполнителю и предоставить класс как rdf:type
.
Правильным способом в соответствии с вашей онтологией было бы …
INSERT DATA INTO <http://wits.org/song> {
wits:Artist0 a wits:Artist; wits:Name "Artist 0"; wits:ID 0 .
wits:Artist1 a wits:Artist; wits:Name "Artist 1"; wits:ID 1 .
}
a
эквивалентно rdf:type
. Здесь мы говорим, что это wits:Artist0
тип класса wits:Artist
с именем Artist 0
и идентификатором 0
.