какво прави @префиксът в sparql?

Имам въпрос: В sparql какво прави @prefix:

@префикс : http://example.org/animals/

и защо да пиша така?


person sima412    schedule 17.08.2013    source източник
comment
Отговорът на Jeen Broekstra е правилен; @prefix <...> не е нищо друго освен синтактична грешка в SPARQL. В коментар за този отговор вие споменавате да правите нещо с Protégé. Ако можете да сте по-конкретни относно това, което правите в Protégé и къде сте срещнали @prefix <...> (може би с екранни снимки от Protégé), може да успеете да получите някои отговори, по-скоро в съответствие с това, което искате.   -  person Joshua Taylor    schedule 18.08.2013


Отговори (2)


Отговорът на Jeen Broekstra е правилен; @prefix <...> не е легален синтаксис на SPARQL и само ще генерира синтактични грешки вместо вас. Въпреки това, има подобна конструкция в Turtle и N3 сериализациите на RDF. В тези синтаксиси кодът

@prefix animals: <http://example.org/animals/>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.

animals:Moose rdfs:subClasof animals:Animal

е графиката с единичната тройка:

<http://example.org/animals/Moose> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://example.org/animals/Animal>

Редовете @prefix дефинират префикси, които улесняват справянето с IRI в сериализацията на графиката. SPARQL също има декларации на префикс, но синтаксисът е малко по-различен. В SPARQL заявка няма @ в началото на реда и няма . в края на реда. Така че, продължавайки примера по-горе, можете да направите заявка за всички неща от подкласове на animal:Animal със следната заявка:

prefix an: <http://example.org/animals/>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select ?subclass where { 
  ?subclass rdfs:subClassOf an:Animal
}

Имайте предвид, че при първата сериализация използвахме animals:, но в SPARQL заявката използвахме an: със същия префикс. Конкретният префикс няма значение, стига действителният (част от) URI адрес, до който се разширява, да е същият. Строго погледнато, префиксите са за удобство на хората; те не са строго необходими.

person Joshua Taylor    schedule 18.08.2013

"@PREFIX" не прави нищо в SPARQL, освен евентуално генериране на синтактична грешка.

"PREFIX" обаче (без "@") е инструкцията SPARQL за декларация на префикс на пространство от имена. Позволява ви да пишете имена с префикс в заявки, вместо да се налага да използвате пълни URI навсякъде. Така че това е механизъм за удобство на синтаксиса за по-кратки, по-лесни за четене (и писане) заявки.

person Jeen Broekstra    schedule 17.08.2013
comment
Jeen Broekstra Благодаря ви. но @prefix : ‹example.org/animals› е първият код в моя проект, който искам да изпълня този код (в protege), но ми даде грешка. не знам какво е това. - person sima412; 18.08.2013