以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  SPARQL Query for RDF 如何做到像SQL相似查詢 LIKE '%字串%'的語法呢?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=35670)


--  作者:blackcrazy
--  发布时间:7/16/2006 4:10:00 PM

--  SPARQL Query for RDF 如何做到像SQL相似查詢 LIKE '%字串%'的語法呢?

例如資料有WindowsXP、Windows2000、Widnows2003

今天SQL可以使用 LIKE '%Windows%' 來查詢全部相似字句,

那 SPARQL Query for RDF該如何針對RDF文件作關鍵字的相似查詢呢?

我翻前文有看到有人說用 在WHERE 後加  AND  ?Given =~ /關鍵字串/i 即可

可是我仍然顯示錯誤

我的程式碼Sparql查詢部份如下:
*************************************************
  //Sparql query
  StringBuilder sb=new StringBuilder();
  sb.append("PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>");
  sb.append("SELECT ?Given ?Family                 ");
  sb.append("WHERE                                      ");
  sb.append("{ ?y vcard:Family ?Family    ");
  sb.append(" ?y vcard:Given  ?Given    ");
  sb.append("}                                              ");
  sb.append("AND  ?Given =~ /關鍵字串/i         ");
  sb.append("USING vcard FOR <http://www.w3.org/2001/vcard-rdf/3.0#> ");

系統顯示錯誤
exception
org.apache.jasper.JasperException: Exception in JSP

root cause
com.hp.hpl.jena.query.QueryParseException: Encountered "AND" at line 1, column 192.
Was expecting one of:
    <EOF>
    "limit" ...
    "offset" ...
    "order" ...

***********************************

有人知道哪裡需改進嗎?

或是有哪些提議跟想法,煩請指教,謝謝您的答覆!


--  作者:jpz6311whu
--  发布时间:7/16/2006 4:38:00 PM

--  
11.4.12 regex
xsd:boolean   regex (simple literal text, simple literal pattern)
xsd:boolean   regex (simple literal text, simple literal pattern, simple literal flags)

Invokes the XPath fn:matches function to match text against a regular expression pattern. The regular expression language is defined in XQuery 1.0 and XPath 2.0 Functions and Operators section 7.6.1 Regular Expression Syntax [FUNCOP].

@prefix foaf:       <http://xmlns.com/foaf/0.1/> .

_:a  foaf:name       "Alice".
_:b  foaf:name       "Bob" .

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name
WHERE { ?x foaf:name  ?name
         FILTER regex(?name, "^ali", "i") }

Query result:

name
"Alice"

from http://www.w3.org/TR/rdf-sparql-query/#funcex-regex


--  作者:blackcrazy
--  发布时间:7/16/2006 7:42:00 PM

--  
十分感謝您點出http://www.w3.org/TR/rdf-sparql-query/#funcex-regex中的

11.4.12 regex章節給我參考,不然我還真的找不到 =.=

我已經按照這個方法成功了!謝謝~!

查詢成功的程式碼如下:
********************************
  //Sparql query
  StringBuilder sb=new StringBuilder();
  sb.append("PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>");
  sb.append("SELECT ?Given ?Family                   ");
  sb.append("WHERE                                       ");
  sb.append("{ ?y vcard:Family ?Family     .");
  sb.append(" ?y vcard:Given ?Given        ");
  sb.append("FILTER regex(?Given, '關鍵字串', 'i') ");
  sb.append("}                                                ");

**********************************
如此一來,不論關鍵字串前頭or後頭還有其他字都可以查詢來囉~

若只要後面相符合則用'^關鍵字串' ,同理單前面符合用'關鍵字串^' 。


--  作者:yayatu
--  发布时间:7/17/2006 9:00:00 AM

--  

       请问SPARQL支持对OWL的查询吗?
       
       SPARQL与SQL之间是否存在转换器?


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms