2016-03-22 17 views
1

Ben aşağıdaki sorgukullanarak bağlama concat

CONSTRUCT{ 
    ?entity a something; 
    a label ?label . 
} 
WHERE 
{ 
    ?entity a something; 
    a label ?label . 
BIND(CONCAT(STR(?label), " | SOME ADDITIONAL TEXT I WOULD LIKE TO APPEND MANUALLY")) AS ?label) . 
} 

Sadece ancak şu hatayı olsun sorgusunu çalıştırırken, ?label bazı metin bitiştirmek istiyorum:

BIND clause alias '?label' was previously used 

ben Sadece ?label tek bir örneğini döndürmek istiyorum, bu nedenle yapı cümlede tanımladım.

cevap

4

Hata iletisi doğru görünüyor, ancak bu sorgu ile alacağınız ilklerden yalnızca bir tanesi. Bazı SPARQL öğrenim kaynaklarına bir göz atmak için olağan istek, en azından üçlü temelli grafik desen eşleştirmesinin temellerini anlamak için bir kaç ipucu ile birlikte. başlamak için kötü bir yer değil CONSTRUCT ve aşağıdaki neredeyse ben niyetinde ne düşündüğünü yapmalıdır:

o sorgu konusunda farklı epeyce şeyler var
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
CONSTRUCT{ 
    ?entity rdfs:label ?label . 
} 
WHERE 
{ 
    ?entity a ex:something ; 
     rdfs:label ?oldlabel . 
    BIND(CONCAT(STR(?oldlabel), " | SOME ADDITIONAL TEXT I WOULD LIKE TO APPEND MANUALLY")) AS ?label) . 
} 

, bu yüzden doğru yaparsa görmek için bir göz atın neyi İstediğiniz. Bir ipucu, '.' Kullanımı arasındaki sözdizimsel farktır. ve ';' üçlü desenleri ayırmak için. Bir diğeri, her bir deyimin, URL'de, örnekte bir qname kullanarak veya bir '?' Ile öneki bir değişken tanımlamasıdır. Ne 'label' ya da 'bir şey' geçerlidir.

"Hemen hemen" diyorum çünkü CONSTRUCT yalnızca bir dizi üçlü döndürüyor. Ben niyet olduğunu düşünüyorum etiketleri, değiştirmek için, üçlü desen? Için oldlabel eşleşmeleri bulur ve yeni bağlanan ekleyerek, onları siler nasıl SPARQL Güncelleme, yani .:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX ex: <http://example.org/example#> 
DELETE { 
    ?entity rdfs:label ?oldlabel . 
} 
INSERT{ 
    ?entity rdfs:label ?label . 
} 
WHERE 
{ 
    ?entity a ex:something . 
    ?entity rdfs:label ?oldlabel . 
    BIND(CONCAT(STR(?oldlabel), " | SOME ADDITIONAL TEXT I WOULD LIKE TO APPEND MANUALLY") AS ?label) . 
} 

Not kullanmak gerekir? Yerine etiketleyin. Bu sorgu, hem orijinal verileri hem de güncellemeler için hedefi tutan varsayılan bir grafik olduğunu varsayar. Eğer değilse, grafik İLE veya GRAFİK kullanılarak belirtilmelidir. (Ayrıca, üçlü kalıpları ayırmak için '.' Ve ';' kullanımı arasındaki sözdizimsel farka ilişkin başka bir ipucu da eklenmiştir.)

İlgili konular