PHP kullanarak SPARQL sorguya değişkeni dahil nasıl

3 Cevap php

Ben bir sorgu formu oluşturma ve formdan anahtar kelime girmek için kullanıcı izin ediyorum. Ben sonraki sayfaya sorgu formunda oluşturulan değişken taşımak nerede Sonra sorgu formu sonraki sayfaya getirecektir. Folows olarak yeni bir sayfa için alıntı kodu:

//received variable
$abc1=$_POST['querykeyword'];

$querystring = '
Prefix try <http://www.semanticweb.org/ontologies/2009/5/test.owl#>
SELECT ?name ?age
WHERE
  {     ?url try:has-name ${"abc1"} ?name 
        ?url try:has-age ?age }';

Ancak, çıktı vermedi. Herkes yardımcı olabilir?

3 Cevap

Söz konusu sorgu ve laalto cevabı ikisi de geçerli SPARQL değil, ama yakın laalto oluyor.

İsmet sabit bir değere sahip? Isim değişkeni değiştirmek istiyor gibi görünüyor. Eğer öyleyse,? Adı değişkeni SELECT ve sorgu vücuttan çıkarılması gerekir, ya da ayrıştırmak olmamalı ve kesinlikle istenen sonuçları döndürmez. PHP de kullanılan bir T_VARIABLE için kaçan yanlış vardır, PREFIX SPARQL sözdizimi kurallarının gerektirdiği bir kolon eksikti.

Deneyin:

  $querystring = "
  PREFIX try: <http://www.semanticweb.org/ontologies/2009/5/test.owl#>
  SELECT ?age
  WHERE {
    ?url try:has-name \"${abc1}\" .
    ?url try:has-age ?age
  }";

Bu, en azından değişken içeren bir sözdizimsel doğru SPARQL sorgusu yayarlar gerekir.

There seems to be a number of syntax issues in your query. try:has-name property probably has a literal domain. So you should put your literal in quotes. There's also a . missing between the graph patterns, and some other quirks, some of which are related to stackoverflow's formatting of non-code text (fixed by reformatting the question). However, try this:

$querystring = '
  PREFIX try: <http://www.semanticweb.org/ontologies/2009/5/test.owl#>
  SELECT ?name ?age {
    ?url try:has-name ?name .
    ?url try:has-age ?age .
    FILTER(?name = \"${"abc1"}\")
  }';

PREFIX deyimi try namespace prefix bildirir. Daha sonra iki değişken name ve age seçer SELECT fıkra var. WHERE isteğe bağlı olduğuna dikkat edin. İki grafik desenler seçme hem desenleri maç triple, ve FILTER name eşleşen kriterleri yerine yalnızca üçe korur. Zaten adını bilmek beri @ tialaramex çözümü belki de sizin için çalışacak. Eğer gelecekte daha karmaşık filtreleme işlemlerini kullanmak istediğiniz durumda ben, bu biraz farklı bir çözüm olarak düzenleme ediyorum.

An old question, but for FWIW: I'd recommend using Fresnel, it's more work initially but you'll have more flexibility and they've already worked through some of the pain points. Fresnel is an RDF presentation vocabulary for describing how to display RDF. You could use a SPARQL CONSTRUCT query to gather your data and then pass it to a Fresnel engine to generate the HTML, with a cache layer in between for performance.

Bazı Fresnel motor uygulamaları, PHP çalışıyorsanız özellikle Horus bakın:

  • Benzetme en Fresnel Engine; Maven depo mevcut java,

  • Emmanuel en IsaViz (kısmen, tamamen FSL uygular); Java, muhtemelen benzetme motoru kullanacak

  • Freie Universität Berlin'in Horus; PHP

  • OlinCollege (bilinmiyor)