XQuery/圖形化三元組
外觀
< XQuery
RDF 驗證服務 可用於繪製 RDF 圖,但由於這將字首名擴充套件為完整 URI,因此圖表作為示例可能看起來不太易讀。
此服務用於繪製簡單的三元組圖,其中每個三元組都在一個本地 XML 格式中定義,其中每個三元組都具有屬性 subject、property 和 object。[需要將 RDF 轉換為 N3 的 XQuery 函式]
主體和賓語被繪製為節點,三元組被繪製為帶有屬性作為標籤的弧。如果主體或賓語包含 ':' 或以 'http://' 開頭,則節點將顯示為橢圓形。如果它以 '_' 開頭,則它是一個空節點,並且顯示一個未命名的圓圈;否則,假設節點是一個文字,並在方框中繪製。
[1]
- url : 以上面說明的 xml 格式中的三元組的 url
- dir : LR - 從左到右 (預設),TB - 從上到下 [Graphviz 中的 rankdir]
- title : 圖表的標題 - 預設無
來自 RDF primer 第 11 頁
<?xml version="1.0" encoding="UTF-8"?>
<graph>
<triple subject="exstaff:85740" property="exterms:address" object="exaddressid:87540"/>
<triple subject="exaddressid:87540" property="exterms:street" object="1501 Grant Avenue"/>
<triple subject="exaddressid:87540" property="exterms:city" object="Bedford"/>
<triple subject="exaddressid:87540" property="exterms:state" object="Massachusetts"/>
<triple subject="exaddressid:87540" property="exterms:postalcode" object="01730"/>
</graph>
digraph { rankdir='LR'
"exstaff:85740" [label="exstaff:85740" shape=ellipse];
"exaddressid:87540" [label="exaddressid:87540" shape=ellipse];
"1501 Grant Avenue" [label="1501 Grant Avenue" shape=box];
"Bedford" [label="Bedford" shape=box];
"Massachusetts" [label="Massachusetts" shape=box];
"01730" [label="01730" shape=box];
"exstaff:85740" -> "exaddressid:87540" [label="exterms:address"];
"exaddressid:87540" -> "1501 Grant Avenue" [label="exterms:street"];
"exaddressid:87540" -> "Bedford" [label="exterms:city"];
"exaddressid:87540" -> "Massachusetts" [label="exterms:state"];
"exaddressid:87540" -> "01730" [label="exterms:postalcode"];
}
GIF 影像
要麼儲存生成的 gif,要麼使用 5clicks 或類似工具來捕獲螢幕上的影像。列印大型 GIF 影像的一種方法是儲存影像,然後將其插入到 Excel 電子表格中。Excel 會將影像列印在多個頁面上。縮小尺寸並刪除頁面邊框後,即使是大型圖表也可以打印出來,然後貼上在一起。
declare option exist:serialize "method=text media-type=text/text";
declare variable $nl := " ";
declare variable $url := request:get-parameter("url",());
declare variable $dir := request:get-parameter("dir","LR");
declare variable $title := request:get-parameter("title","");
let $graph := doc($url)
return (
"digraph ",$title, " { rankdir='" , $dir,"' ", $nl,
for $node in distinct-values(($graph//triple/@subject,$graph//triple/@object))
let $nodetype :=
if (contains($node,":") or starts-with ($node,"http://"))
then concat ('label="',$node,'" shape=ellipse')
else if (starts-with($node,"_"))
then 'shape=circle'
else concat ('label="',$node,'" shape=box')
return
concat ('"',$node,'" [',$nodetype,'];',$nl)
,
for $triple in $graph//triple
return
( concat ('"', $triple/@subject, '" -> "' , $triple/@object ,'" [label="',$triple/@property, '"];'), $nl)
,
"} ",$nl
)
此指令碼可以透過使用中間 XML 結構和 XSLT 指令碼轉換為點來改進。