ปลั๊กอิน Jekyll สำหรับรวมข้อมูล RDF ในไซต์คงที่ของคุณ
เอกสาร API มีอยู่ที่ rubydoc.info
Docker มีอิมเมจนักเทียบท่าลองดูการใช้งาน Docker Section
เป็นข้อกำหนดเบื้องต้นสำหรับ Jekyll RDF แน่นอนว่าคุณจำเป็นต้องติดตั้ง Jekyll โปรดดูคำแนะนำการติดตั้งที่ https://jekyllrb.com/docs/installation/
หากคุณมีการติดตั้ง Jekyll ที่ใช้งานได้แล้วคุณสามารถเพิ่มปลั๊กอิน Jekyll-RDF คุณอาจใช้ Bundler อยู่แล้วและมี Gemfile
ในไดเรกทอรี Jekyll ของคุณ เพิ่ม jekyll-rdf ในส่วนปลั๊กอิน:
gem "jekyll-rdf", "~> 3.2"
แทนที่สตริงเวอร์ชันด้วยการเปิดตัวเสถียรที่มีอยู่ในปัจจุบันตามที่ระบุไว้ใน rubygems.org หลังจากอัปเดต Gemfile
ของคุณคุณอาจต้องการเรียกใช้ bundle install
(หรือ bundle install --path vendor/bundle
) หรือ bundle update
หากคุณไม่ได้ใช้ Gemfile
เพื่อจัดการแพ็คเกจ Jekyll/Ruby ของคุณติดตั้ง Jekyll-RDF โดยใช้ gem
:
gem install jekyll-rdf
หากคุณต้องการสร้างปลั๊กอินจากแหล่งที่มาโปรดดูที่ส่วนการพัฒนาของเรา
ส่วนนี้อธิบายวิธีการใช้ Jekyll-RDF ในสามขั้นตอน:
ตัวกรองและวิธีการทั้งหมดที่จะใช้ในเทมเพลตและตัวเลือกการกำหนดค่ามีการบันทึกไว้ในส่วน“ พารามิเตอร์และตัวเลือกการกำหนดค่าได้อย่างรวดเร็ว”
ก่อนอื่นคุณต้องมีหน้า Jekyll เพื่อสร้างหนึ่งเพียงทำ:
jekyll new my_page
cd my_page
นอกจากนี้ยังมีพารามิเตอร์บางอย่างที่จำเป็นใน _config.yml
สำหรับ jekyll-rdf
IE พารามิเตอร์ url
และ baseurl
ใช้สำหรับการรวมหน้าทรัพยากรลงในรูทของไซต์จะต้องกำหนดค่าปลั๊กอินและเส้นทางไปยังไฟล์ RDF จะต้องมีอยู่
baseurl : " /simpsons "
url : " http://example.org "
plugins :
- jekyll-rdf
jekyll_rdf :
path : " _data/data.ttl "
default_template : " default.html "
restriction : " SELECT ?resourceUri WHERE { ?resourceUri ?p ?o . FILTER regex(str(?resourceUri), 'http://example.org/simpsons') } "
class_template_mappings :
" http://xmlns.com/foaf/0.1/Person " : " person.html "
instance_template_mappings :
" http://example.org/simpsons/Abraham " : " abraham.html "
Jekyll RDF ใช้ url
+ baseurl
เพื่อระบุความสัมพันธ์กับ URL ที่ควรสร้างหน้าทรัพยากร RDF ในตัวอย่างข้างต้นหมายความว่าทรัพยากรที่มี IRI <http://example.org/simpsons/Bart>
จะแสดงผลไปยัง Path /Bart.html
นอกจากนี้คุณสมบัติและปลั๊กอินอื่น ๆ สำหรับ Jekyll ขึ้นอยู่กับพารามิเตอร์ทั้งสองนี้ หากสำหรับกรณีใด ๆ พารามิเตอร์ทั้งสองจะแตกต่างจากเส้นทางพื้นฐานที่ Jekyll RDF ควรสันนิษฐานว่าเป็นไปได้ที่จะตั้งค่าพารามิเตอร์ baseiri
ในส่วน jekyll_rdf
baseurl : " /simpsons "
url : " https://beispiel.com "
jekyll_rdf :
baseiri : " http://example.org/ "
เป็นไปได้ที่จะแมปคลาสที่เฉพาะเจาะจง (resp. rdf-type) หรือทรัพยากรส่วนบุคคลกับเทมเพลต
class_template_mappings :
" http://xmlns.com/foaf/0.1/Person " : " person.html "
instance_template_mappings :
" http://aksw.org/Team " : " team.html "
เทมเพลตที่แมปเข้ากับคลาสจะถูกใช้เพื่อแสดงผลแต่ละอินสแตนซ์ของคลาสนั้นและคลาสย่อยของมัน แต่ละอินสแตนซ์จะแสดงผลด้วยคลาสที่เฉพาะเจาะจงที่สุดที่แมปกับเทมเพลต หากการแมปไม่ชัดเจนสำหรับทรัพยากรคำเตือนจะถูกส่งไปยังหน้าต่างคำสั่งของคุณดังนั้นระวัง!
นอกจากนี้ยังเป็นไปได้ที่จะกำหนดเทมเพลตเริ่มต้นซึ่งใช้สำหรับทรัพยากรทั้งหมดซึ่งไม่ครอบคลุมโดย class_template_mappings
หรือ instance_template_mappings
default_template : " default.html "
คุณสามารถ จำกัด ทรัพยากรที่เลือกให้สร้างโดยการเพิ่มแบบสอบถาม SPARQL เป็นพารามิเตอร์ restriction
เป็น _config.yml
กรุณาใช้ ?resourceUri
เป็นตัวยึดตำแหน่งสำหรับ URIs ที่ได้:
restriction : " SELECT ?resourceUri WHERE { ?resourceUri <http://www.ifi.uio.no/INF3580/family#hasFather> <http://www.ifi.uio.no/INF3580/simpsons#Homer> } "
มีคำหลักที่กำหนดไว้ล่วงหน้า 3 คำสำหรับข้อ จำกัด ที่นำไปใช้:
subjects
จะโหลด uris หัวเรื่องทั้งหมดpredicates
จะโหลด predicate uris ทั้งหมดobjects
จะโหลดวัตถุทั้งหมด เนื่องจากจุดสิ้นสุดของ SPARQL บางจุดมีขีด จำกัด ในตัวสำหรับแบบสอบถามที่เลือกคุณยังสามารถกำหนดรายการทรัพยากรที่จะสร้างได้ ไฟล์ _data/restriction.txt
cool มีเนื้อหาต่อไปนี้:
<http://example.org/resourceA>
<http://example.org/resourceB>
<http://example.org/resourceC>
<http://example.org/resourceD>
<http://example.org/resourceE>
ใน _config.yml
คุณระบุไฟล์ด้วยข้อ restriction_file
หากทั้งสอง restriction_file
และ restriction
จะถูกระบุ Jekyll RDF จะสร้างหน้าสำหรับสหภาพของทั้งคู่
นอกจากนี้คุณสามารถตัดสินใจได้ว่าคุณต้องการแสดงโหนดว่างเปล่าหรือไม่ คุณเพียงแค่ต้องเพิ่ม include_blank
เป็น _config.yml
:
jekyll_rdf :
include_blank : true
ในที่สุดก็เป็นไปได้ที่จะตั้งค่าภาษาที่ต้องการสำหรับ RDF-literals ด้วย language
ตัวเลือก:
jekyll_rdf :
language : " en "
การเรียกใช้ jekyll build
จะทำให้ทรัพยากร RDF ไปยังไดเรกทอรี _site/…
การใช้งาน jekyll serve
จะทำให้ทรัพยากร RDF และให้บริการ HTTP-Server ทันทีที่คุณสามารถเข้าถึงได้ที่ http://localhost:4000/
ทรัพยากร RDF ที่ไอริสไม่ได้เริ่มต้นด้วย url
jekyll ที่กำหนดค่าและ baseurl
(resp. baseiri
) จะแสดงผลไปยัง _site/rdfsites/…
ไดเรกทอรีย่อย
ในการใช้ประโยชน์จากข้อมูล RDF ให้สร้างไฟล์หนึ่งไฟล์ขึ้นไป (เช่น rdf_index.html
หรือ person.html
) ใน _layouts
-directory สำหรับแต่ละทรัพยากรจะแสดงหน้า ดูตัวอย่างด้านล่าง:
---
layout: default
---
< div class =" home " >
< h1 class =" page-heading " > < b > {{ page.rdf.iri }} </ b > </ h1 >
< p >
< h3 > Statements in which {{ page.rdf.iri }} occurs as subject: </ h3 >
{% include statements_table.html collection=page.rdf.statements_as_subject %}
</ p >
< p >
< h3 > Statements in which {{ page.rdf.iri }} occurs as predicate: </ h3 >
{% include statements_table.html collection=page.rdf.statements_as_predicate %}
</ p >
< p >
< h3 > Statements in which {{ page.rdf.iri }} occurs as object: </ h3 >
{% include statements_table.html collection=page.rdf.statements_as_object %}
</ p >
</ div >
เรารวมตัวอย่างเทมเพลตไว้ที่
test/source/_layouts/rdf_index.html
test/source/_layouts/person.html
{{ page.rdf }}
เป็นทรัพยากรที่แสดงผลในปัจจุบัน
{{ page.rdf.iri }}
ส่งคืน IRI ของทรัพยากรที่แสดงผลในปัจจุบัน
ในการเข้าถึงวัตถุที่เชื่อมต่อกับวัตถุปัจจุบันผ่านภาคแสดงคุณสามารถใช้ตัวกรองของเหลวที่กำหนดเองของเรา สำหรับวัตถุเดียวหรือรายการวัตถุใช้ rdf_property
-filter (ดู 1 และ 2)
ในการเข้าถึงวัตถุหนึ่งชิ้นที่เชื่อมต่อกับเรื่องปัจจุบันผ่านภาคแสดงที่กำหนดโปรดกรอง page.rdf
ข้อมูล. rdf ด้วย rdf_property
-filter ตัวอย่าง:
Age: {{ page.rdf | rdf_property: '<http://xmlns.com/foaf/0.1/age>' }}
หากต้องการเลือกภาษาเฉพาะโปรดเพิ่มพารามิเตอร์ที่สองลงในตัวกรอง:
Age: {{ page.rdf | rdf_property: '<http://xmlns.com/foaf/0.1/job>','en' }}
หากต้องการรับวัตถุมากกว่าหนึ่งวัตถุที่เชื่อมต่อกับเรื่องปัจจุบันผ่านภาคแสดงที่กำหนดโปรดใช้ตัวกรอง rdf_property
ร่วมกับอาร์กิวเมนต์ที่สามที่ตั้งค่าเป็น true
(อาร์กิวเมนต์ที่สองสำหรับภาษาสามารถละเว้นได้โดยการตั้งค่าเป็น nil
):
Sisters: < br />
{% assign resultset = page.rdf | rdf_property: ' < http: //www.ifi.uio.no/INF3580/family#hasSister > ', nil, true %}
< ul >
{% for result in resultset %}
< li > {{ result }} </ li >
{% endfor %}
</ ul >
หากต้องการเลือกภาษาเฉพาะโปรดเพิ่มพารามิเตอร์ที่สองลงในตัวกรอง:
Book titles: < br />
{% assign resultset = page.rdf | rdf_property: ' < http: //xmlns.com/foaf/0.1/currentProject > ','de' %}
< ul >
{% for result in resultset %}
< li > {{ result }} </ li >
{% endfor %}
</ ul >
เพื่อสนับสนุนคอนเทนเนอร์ RDF และคอลเลกชัน RDF เราได้จัดเตรียมตัวกรอง rdf_container
และ rdf_collection
ในทั้งสองกรณีทรัพยากรคอนเทนเนอร์ที่เกี่ยวข้อง หัวหน้าคอลเลกชันจะต้องมีการระบุแล้วผ่านตัวกรองที่เกี่ยวข้อง สำหรับคอนเทนเนอร์ในปัจจุบันเราสนับสนุนอินสแตนซ์ที่ชัดเจนของ rdf:Bag
, rdf:Seq
และ rdf:Alt
กับสมาชิกที่ระบุโดยใช้ rdfs:ContainerMembershipProperty
S: rdf:_1
, rdf:_2
, rdf:_3
… คอลเลกชันถูกระบุโดยใช้ rdf:first
, rdf:rest
และสิ้นสุดด้วย L rdf:rest rdf:nil
เนื่องจากหัวของคอลเลกชันจำเป็นต้องระบุคุณไม่สามารถใช้โหนดเปล่าที่นั่นคุณสามารถระบุได้ทางอ้อมผ่านภาคแสดงที่มีคอลเลกชัน
ตัวอย่างกราฟ:
@prefix ex: <http://example.org/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
ex:Resource ex:lists ex:List ;
ex:directList ("hello" "from" "turtle") .
ex:hasContainer ex:Container .
ex:List rdf:first "hello" ;
rdf:rest ("rdf" "list") .
ex:Container a rdf:Bag ;
rdf:_1 "hello" ;
rdf:_2 "rdf" ;
rdf:_3 "container" .
เทมเพลตสำหรับ ex:Resource
:
{% assign list = page.rdf | rdf_collection: '<http://example.org/directList>' %}
<ol>
{% for item in list %}
<li>{{ item }}</li>
{% endfor %}
</ol>
{% assign container = page.rdf | rdf_property: '<http://example.org/hasContainer>' | rdf_container %}
<ul>
{% for item in container %}
<li>{{ item }}</li>
{% endfor %}
</ul>
เราใช้ตัวกรองของเหลว sparql_query
เพื่อเรียกใช้แบบสอบถาม sparql ที่กำหนดเอง การเกิดขึ้นของ ?resourceUri
แต่ละครั้งจะถูกแทนที่ด้วย URI ปัจจุบัน ข้อควรระวัง: คุณต้องแยกแบบสอบถามและตัวแปรชุดผลลัพธ์เนื่องจากแนวคิดของเหลว ตัวอย่าง:
{% assign query = 'SELECT ?sub ?pre WHERE { ?sub ?pre ?resourceUri }' %}
{% assign resultset = page.rdf | sparql_query: query %}
< table >
{% for result in resultset %}
< tr >
< td > {{ result.sub }} </ td >
< td > {{ result.pre }} </ td >
</ tr >
{% endfor %}
</ table >
มีความเป็นไปได้ที่จะประกาศชุดคำนำหน้าซึ่งสามารถใช้ใน rdf_property
และ sparql_query
Filders สิ่งนี้จะช่วยลดจำนวนข้อความที่จำเป็นสำหรับแต่ละกรองของเหลว ไวยากรณ์ของการประกาศคำนำหน้านั้นเหมือนกับ SPARQL 1.1 เพียงใส่คำนำหน้าของคุณในไฟล์แยกต่างหากและรวมคีย์ rdf_prefix_path
พร้อมกับเส้นทางสัมพัทธ์ในเรื่องด้านหน้า Yaml ของไฟล์ที่ควรใช้คำนำหน้าของคุณ
สำหรับคำนำหน้ากฎเดียวกันนี้ใช้กับตัวแปรอื่น ๆ ที่กำหนดไว้ในเรื่องด้านหน้า YAML ตัวแปรเหล่านี้จะพร้อมให้คุณเข้าถึงโดยใช้แท็กเหลวทั้งสองข้างในไฟล์และในรูปแบบใด ๆ หรือรวมถึงหน้าหรือโพสต์ในคำถามขึ้นอยู่กับ (ที่มา: Yaml Front Matter) สิ่งนี้มีความเกี่ยวข้องโดยเฉพาะอย่างยิ่งหากคุณใช้คำนำหน้ารวมอยู่ด้วย
หาก URI ของทรัพยากรมีตัวระบุแฟรกเมนต์ ( #…
) ทรัพยากรสามารถโฮสต์ร่วมกับทรัพยากรอื่น ๆ ที่มี URI พื้นฐานเดียวกันจนถึงตัวระบุแฟรกเมนต์ในหน้าเดียว หน้าจะเข้าถึงได้ผ่าน URI พื้นฐานในขณะที่อยู่ในเทมเพลต URIs แต่ละตัวที่มีตัวระบุชิ้นส่วนสามารถเข้าถึงได้ผ่าน page.sub_rdf
คอลเลกชัน sub_rdf
ตัวอย่าง
ใน _config.yml
:
' instance_template_mappings ' :
' http://www.ifi.uio.no/INF3580/simpsons ' : 'family.html'
ใน _layouts/family.html
:
{% for member in page.sub_rdf%}
{% include simPerson.html person = member%}
{% endfor %}
ตัวอย่างใช้ template family.html
เพื่อแสดงหน้าเดียวที่มีทุกทรัพยากรที่ URI เริ่มต้นด้วย http://www.ifi.uio.no/INF3580/simpsons#
เป็นทรัพยากร http://www.ifi.uio.no/INF3580/simpsons
เอง Jekyll-RDF รวบรวมทรัพยากรทั้งหมดที่มีตัวระบุชิ้นส่วนใน URI ของพวกเขา (จากที่นี่ที่เรียกว่า subResources
) และส่งผ่านพวกเขาผ่าน page.sub_rdf
เข้าไปในเทมเพลตของ superResource
(ทรัพยากรที่ subResources
พื้นฐานเหมือนกัน ).
ทุกทรัพยากรที่ส่งคืนโดยหนึ่งในตัวกรอง jekyll-rdf
เป็นวัตถุที่ของเหลวสามารถจัดการเหมือนสตริงได้ พวกเขาทั้งหมดมีวิธีการต่อไปนี้ใช้ในของเหลว
ส่งคืนรายการข้อความที่มีหัวเรื่องเป็นทรัพยากรปัจจุบัน คำสั่งในรายการที่ส่งคืนสามารถเข้าถึงได้โดยการระบุตำแหน่งของพวกเขา: Statement.subject
, Statement.predicate
, Statement.object
ที่เกี่ยวข้อง.
ส่งคืนรายการข้อความที่มีทรัพยากรปัจจุบัน คำสั่งในรายการที่ส่งคืนสามารถเข้าถึงได้โดยการระบุตำแหน่งของพวกเขา: Statement.subject
, Statement.predicate
, Statement.object
ที่เกี่ยวข้อง.
ส่งคืนรายการคำสั่งที่มีวัตถุเป็นทรัพยากรปัจจุบัน คำสั่งในรายการที่ส่งคืนสามารถเข้าถึงได้โดยการระบุตำแหน่งของพวกเขา: Statement.subject
, Statement.predicate
, Statement.object
ที่เกี่ยวข้อง.
ส่งคืน URL ของหน้าเว็บที่แสดงถึง RDFRESOURCE นี้
ส่งคืนเส้นทางไปยังหน้าเว็บที่แสดงถึง RDFRESOURCE นี้ ใช้ด้วยความระมัดระวัง
แอตทริบิวต์นี้เกี่ยวข้องกับหน้าการแสดงผลสำหรับม่านตาที่มีตัวระบุชิ้นส่วน ( http://superresource#anchor
) แอตทริบิวต์นี้เป็นจริงสำหรับแหล่งทรัพยากรสูง ( http://superresource
) หากมีการอธิบายไว้ในฐานความรู้ที่กำหนด
แอตทริบิวต์นี้จะบอกว่าอินสแตนซ์ที่เกี่ยวข้องของทรัพยากรนั้นแสดงผลภายในบริบทของการสร้างไซต์ปัจจุบันหรือไม่ การใช้งาน: {% if resource.rendered? %}…{% endif %}
ส่งคืนสตริง verbose แทนทรัพยากรนี้
เรื่องย่อ: <resource_iri> | rdf_get
พารามิเตอร์:
<resource_iri>
เป็นสตริงที่แสดงถึงทรัพยากร RDF พร้อมคำนำหน้า ( prefix:name
) หรือ IRI เต็ม ( <http://ex.org/name>
) ในการอ้างอิงทรัพยากรของหน้าปัจจุบันใช้ page.rdf
page
หรือ nil
คำอธิบาย: ใช้ IRI ที่ให้ไว้และส่งคืนวัตถุ RDFRESOURCE ที่เกี่ยวข้องจากฐานความรู้ของคุณ ในวัตถุนี้คุณสามารถเรียกวิธีการตามที่อธิบายไว้ในทรัพยากรส่วน
ตัวอย่าง:
{{'<http://www.ifi.uio.no/INF3580/simpsons>' | rdf_get }}
ผลลัพธ์:
http://www.ifi.uio.no/INF3580/simpsons
เรื่องย่อ: <rdf_resource> OR <rdf_resource_string> | rdf_property: <property>, [<lang>] OR [<lang>, <list>] OR [nil, <list>]
พารามิเตอร์:
<rdf_resource>
เป็น rdfresource ในการอ้างอิงทรัพยากรของหน้าปัจจุบันใช้ page.rdf
page
หรือ nil
<rdf_resource_string>
เป็นสตริงที่แสดงถึง IRI ของ <rdf_resource>
<property>
เป็นสตริงที่แสดงถึงคำกริยา RDF พร้อมคำนำหน้า ( prefix:name
) หรือ IRI เต็มรูปแบบ ( <http://ex.org/name>
)<lang>
เป็นแท็กภาษา (เช่น de
) หากพารามิเตอร์นี้ถูกละเว้นแทนที่โดย nil
<list>
เป็นค่าบูลีน ( true
, false
) คำอธิบาย: ส่งคืนวัตถุของ Triple <rdf_resource> <predicate> ?object
วัตถุที่ส่งคืนสามารถทำได้โดยโหนดทรัพยากรตัวอักษรหรือโหนดว่างเปล่าใด ๆ
ตัวอย่าง (ค่าเริ่มต้น):
{% assign resource = '<http://www.ifi.uio.no/INF3580/simpsons#Homer>' | rdf_get %}
{{ resource | rdf_property: '<http://xmlns.com/foaf/0.1/job>' }}
ผลลัพธ์:
"unknown"
ตัวอย่าง (สตริง):
{{ '<http://www.ifi.uio.no/INF3580/simpsons#Homer>' | rdf_property: '<http://xmlns.com/foaf/0.1/job>' }}
ผลลัพธ์:
"unknown"
ตัวอย่าง (ด้วยภาษา):
{% assign resource = '<http://www.ifi.uio.no/INF3580/simpsons#Homer>' | rdf_get %}
{{ resource | rdf_property: '<http://xmlns.com/foaf/0.1/job>', 'de' }}
ผลลัพธ์:
"unbekannt"
ตัวอย่าง (ส่งคืนเป็นรายการ):
{% assign resource = '<http://www.ifi.uio.no/INF3580/simpsons#Homer>' | rdf_get %}
{% assign resultset = resource | rdf_property: '<http://xmlns.com/foaf/0.1/job>', nil, true %}
{% for result in resultset %}
<li>{{ result }}</li>
{% endfor %}
ผลลัพธ์:
< li > "unknown" </ li >
< li > "unbekannt" </ li >
< li > "unbekannter Job 2" </ li >
< li > "unknown Job 2" </ li >
เรื่องย่อ: <rdf_resource> OR <rdf_resource_string>| rdf_inverse_property: <property>, [<list>]
พารามิเตอร์:
<rdf_resource>
เป็น rdfresource ในการอ้างอิงทรัพยากรของหน้าปัจจุบันใช้ page.rdf
page
หรือ nil
<rdf_resource_string>
เป็นสตริงที่แสดงถึง IRI ของ <rdf_resource>
<property>
เป็นสตริงที่แสดงถึงคำกริยา RDF พร้อมคำนำหน้า ( prefix:name
) หรือ IRI เต็มรูปแบบ ( <http://ex.org/name>
)<list>
เป็นค่าบูลีน ( true
, false
) คำอธิบาย: เหมือนกับ rdf_property แต่ไปในทิศทางผกผัน มันส่งคืนหัวเรื่องของสามเรื่อง ?subject <predicate> <rdf_resource>
วัตถุที่ส่งคืนสามารถทำได้โดยโหนดทรัพยากรหรือโหนดว่างเปล่า
ตัวอย่าง (ค่าเริ่มต้น):
{% assign resource = '<http://www.ifi.uio.no/INF3580/simpsons#Homer>' | rdf_get %}
{{ page.rdf | rdf_inverse_property: '<http://www.ifi.uio.no/INF3580/family#hasFather>' }}
ผลลัพธ์:
http://www.ifi.uio.no/INF3580/simpsons#Bart
ตัวอย่าง (สตริง):
{{ '<http://www.ifi.uio.no/INF3580/simpsons#Homer>' | rdf_inverse_property: '<http://www.ifi.uio.no/INF3580/family#hasFather>' }}
ผลลัพธ์:
http://www.ifi.uio.no/INF3580/simpsons#Bart
ตัวอย่าง (เป็นรายการ):
{% assign resource = '<http://www.ifi.uio.no/INF3580/simpsons#Homer>' | rdf_get %}
{% assign resultset = resource | rdf_property: '<http://www.ifi.uio.no/INF3580/family#hasFather>', true %}
{% for result in resultset %}
<li>{{ result }}</li>
{% endfor %}
ผลลัพธ์:
http://www.ifi.uio.no/INF3580/simpsons#Bart
http://www.ifi.uio.no/INF3580/simpsons#Lisa
http://www.ifi.uio.no/INF3580/simpsons#Maggie
บทสรุป: <rdf_resource> | sparql_query: <query>
หรือ <reference_array> | sparql_query: <query>
หรือ <query> | sparql_query
พารามิเตอร์:
<rdf_resource>
เป็น rdfresource ที่จะแทนที่ ?resourceUri
ในแบบสอบถาม หากต้องการละเว้นพารามิเตอร์นี้หรืออ้างอิงทรัพยากรของหน้าปัจจุบันใช้ page.rdf
, page
หรือ nil
<reference_array>
อาร์เรย์ที่มีม่านตาเป็นสตริงหรือ rdf_resource
พวกเขาจะแทนที่แต่ละ ?resourceUri_<index>
ในแบบสอบถามของคุณติดต่อกัน<query>
สตริงที่มีแบบสอบถาม SPARQL คำอธิบาย: ประเมิน query
บนฐานความรู้ที่กำหนดและส่งคืนอาร์เรย์ของผลลัพธ์ (ชุดผลลัพธ์) วัตถุรายการแต่ละรายการในชุดผลลัพธ์ (ผลลัพธ์) มีตัวแปรที่เลือกเป็นทรัพยากรหรือตัวอักษร คุณสามารถใช้ ?resourceUri
ภายในแบบสอบถามเพื่ออ้างอิงทรัพยากรที่ได้รับเป็น <rdf_resource>
ตัวอย่าง (หน้า)
<!--Rendering the page of resource Lisa -->
{% assign query = 'SELECT ?sub ?pre WHERE { ?sub ?pre ?resourceUri }' %}
{% assign resultset = page.rdf | sparql_query: query %}
<table>
{% for result in resultset %}
<tr><td>{{ result.sub }}</td><td>{{ result.pre }}</td></tr>
{% endfor %}
</table>
ผลลัพธ์:
< table >
< tr > < td > http://www.ifi.uio.no/INF3580/simpsons#TheSimpsons </ td > < td > http://www.ifi.uio.no/INF3580/family#hasFamilyMember </ td > </ tr >
< tr > < td > http://www.ifi.uio.no/INF3580/simpsons#Bart </ td > < td > http://www.ifi.uio.no/INF3580/family#hasSister </ td > </ tr >
< tr > < td > http://www.ifi.uio.no/INF3580/simpsons#Maggie </ td > < td > http://www.ifi.uio.no/INF3580/family#hasSister </ td > </ tr >
...
ตัวอย่าง (อาร์เรย์)
{% assign query = 'SELECT ?x WHERE {?resourceUri_0 ?x ?resourceUri_1}' %}
{% assign array = "<http://www.ifi.uio.no/INF3580/simpsons#Homer>,<http://www.ifi.uio.no/INF3580/simpsons#Marge>" | split: %}
{% assign resultset = array | sparql_query: query %}
<table>
{% for result in resultset %}
<tr><td>{{ result.x }}</td></tr>
{% endfor %}
</table>
ผลลัพธ์:
<table>
<tr><td>http://www.ifi.uio.no/INF3580/family#hasSpouse</td></tr>
</table>
ตัวอย่าง (คำถาม)
{% assign query = 'SELECT ?x WHERE {<http://www.ifi.uio.no/INF3580/simpsons#Homer> ?x <http://www.ifi.uio.no/INF3580/simpsons#Marge>}' %}
{% assign resultset = query | sparql_query %}
<table>
{% for result in resultset %}
<tr><td>{{ result.x }}</td></tr>
{% endfor %}
</table>
ผลลัพธ์:
<table>
<tr><td>http://www.ifi.uio.no/INF3580/family#hasSpouse</td></tr>
</table>
บทสรุป: <rdf_container_head> **OR** <rdf_container_head_string> | rdf_container
พารามิเตอร์:
<rdf_container_head>
เป็น rdfresource ในการอ้างอิงทรัพยากรของหน้าปัจจุบันใช้ page.rdf
page
หรือ nil
<rdf_container_head_string>
เป็นสตริงที่แสดงถึง IRI ของ <rdf_container_head>
คำอธิบาย: ส่งคืนอาร์เรย์พร้อมทรัพยากรสำหรับแต่ละองค์ประกอบในคอนเทนเนอร์ที่มีการอ้างอิงหัวโดย rdf_container_head
ตัวอย่าง:
{% assign resource = '<http://www.ifi.uio.no/INF3580/simpson-container#Container>' | rdf_get %}
{% assign array = resource | rdf_container %}
{% for item in array %}
{{ item }}
{% endfor %}
http://www.ifi.uio.no/INF3580/simpsons#Homer
http://www.ifi.uio.no/INF3580/simpsons#Marge
http://www.ifi.uio.no/INF3580/simpsons#Bart
http://www.ifi.uio.no/INF3580/simpsons#Lisa
http://www.ifi.uio.no/INF3580/simpsons#Maggie
ตัวอย่าง: (สตริง)
{% assign array = '<http://www.ifi.uio.no/INF3580/simpson-container#Container>' | rdf_container %}
{% for item in array %}
{{ item }}
{% endfor %}
http://www.ifi.uio.no/INF3580/simpsons#Homer
http://www.ifi.uio.no/INF3580/simpsons#Marge
http://www.ifi.uio.no/INF3580/simpsons#Bart
http://www.ifi.uio.no/INF3580/simpsons#Lisa
http://www.ifi.uio.no/INF3580/simpsons#Maggie
บทสรุป: <rdf_collection_head> OR <rdf_collection_head_string> | rdf_collection
หรือ <rdf_resource> | rdf_collection: "<property>"
พารามิเตอร์:
<rdf_collection_head>
เป็น rdfresource ในการอ้างอิงทรัพยากรของหน้าปัจจุบันใช้ page.rdf
page
หรือ nil
<rdf_collection_head_string>
เป็นสตริงที่แสดงถึง IRI ของ <rdf_collection_head>
<rdf_resource>
เป็น rdfresource ในการอ้างอิงทรัพยากรของหน้าปัจจุบันใช้ page.rdf
page
หรือ nil
<property>
เป็นสตริงที่แสดงถึงคำกริยา RDF พร้อมคำนำหน้า ( prefix:name
) หรือ IRI เต็มรูปแบบ ( <http://ex.org/name>
) คำอธิบาย: ส่งคืนอาร์เรย์พร้อมทรัพยากรสำหรับแต่ละองค์ประกอบในคอลเลกชันที่มีการอ้างอิงหัวโดย rdf_collection_head
แทนที่จะอ้างถึงหัวโดยตรงมันก็เป็นไปได้ที่จะระบุคุณสมบัติการอ้างอิงหัวคอลเลกชัน
ตัวอย่าง (ระบุทรัพยากรหัว):
{% assign resource = '<http://www.ifi.uio.no/INF3580/simpson-collection#Collection>' | rdf_get %}
{% assign array = resource | rdf_collection %}
{% for item in array %}
{{ item }}
{% endfor %}
ผลลัพธ์:
http://www.ifi.uio.no/INF3580/simpsons#Homer
http://www.ifi.uio.no/INF3580/simpsons#Marge
http://www.ifi.uio.no/INF3580/simpsons#Bart
http://www.ifi.uio.no/INF3580/simpsons#Lisa
http://www.ifi.uio.no/INF3580/simpsons#Maggie
ตัวอย่าง (ระบุสตริงหัว):
{% assign array = '<http://www.ifi.uio.no/INF3580/simpson-collection#Collection>' | rdf_collection %}
{% for item in array %}
{{ item }}
{% endfor %}
ผลลัพธ์:
http://www.ifi.uio.no/INF3580/simpsons#Homer
http://www.ifi.uio.no/INF3580/simpsons#Marge
http://www.ifi.uio.no/INF3580/simpsons#Bart
http://www.ifi.uio.no/INF3580/simpsons#Lisa
http://www.ifi.uio.no/INF3580/simpsons#Maggie
ตัวอย่าง (ระบุผ่านคุณสมบัติ):
{% assign resource = '<http://www.ifi.uio.no/INF3580/simpsons>' | rdf_get %}
{% assign array = resource | rdf_collection: "<http://www.ifi.uio.no/INF3580/simpsons#familycollection>" %}
{% for item in array %}
{{ item }}
{% endfor %}
ผลลัพธ์:
http://www.ifi.uio.no/INF3580/simpsons#Homer
http://www.ifi.uio.no/INF3580/simpsons#Marge
http://www.ifi.uio.no/INF3580/simpsons#Bart
http://www.ifi.uio.no/INF3580/simpsons#Lisa
http://www.ifi.uio.no/INF3580/simpsons#Maggie
ชื่อ | พารามิเตอร์ | ค่าเริ่มต้น | คำอธิบาย | ตัวอย่าง |
---|---|---|---|---|
เส้นทาง | เส้นทางสัมพัทธ์ไปยังไฟล์ RDF | ไม่มีค่าเริ่มต้น | ระบุเส้นทางไปยังไฟล์ RDF จากที่ที่คุณต้องการแสดงผลเว็บไซต์ | path: "rdf-data/simpsons.ttl" |
ระยะไกล | ส่วนเพื่อระบุแหล่งข้อมูลระยะไกล | ไม่มีค่าเริ่มต้น | ต้องมีปุ่ม endpoint พารามิเตอร์ remote จะแทนที่พารามิเตอร์ path | |
ระยะไกล> จุดสิ้นสุด | จุดสิ้นสุดของ Sparql เพื่อรับข้อมูลจาก | ไม่มีค่าเริ่มต้น | ระบุ URL ไปยังจุดสิ้นสุดของ SPARQL จากจุดที่คุณต้องการแสดงผลเว็บไซต์ | remote: endpoint: "http://localhost:5000/sparql/" |
รีโมต> default_graph | เลือกกราฟชื่อบนจุดสิ้นสุดเพื่อใช้แทนกราฟเริ่มต้นปลายทาง | ไม่มีค่าเริ่มต้น | ระบุ IRI ไปยังกราฟที่มีชื่อเพื่อเลือกจากจุดสิ้นสุดของ SPARQL | remote: endpoint: "http://localhost:5000/sparql/" default_graph: "http://example.org/" |
ภาษา | แท็กภาษาเป็นสตริง | ไม่มีค่าเริ่มต้น | ระบุภาษาที่ต้องการเมื่อคุณเลือกวัตถุโดยใช้ตัวกรองเหลวของเรา | language: "en" |
รวม _blank | การแสดงออกของบูลีน | เท็จ | ระบุว่าควรแสดงโหนดว่างเปล่าหรือไม่ | include_blank: true |
ข้อ จำกัด | sparql-query เป็นสตริงหรือหัวเรื่อง/วัตถุ/เพรดิเคต | ไม่มีค่าเริ่มต้น | จำกัด การเลือกทรัพยากรด้วย sparql-query ที่กำหนดไปยังผลลัพธ์ที่ถูกผูกไว้กับตัวแปรพิเศษ ?resourceUri หรือสามคำ subjects (เฉพาะวิชา URIs), objects , predicates | restriction: "SELECT ?resourceUri WHERE { ?resourceUri <http://www.ifi.uio.no/INF3580/family#hasFather> <http://www.ifi.uio.no/INF3580/simpsons#Homer> }" |
ข้อ จำกัด _file | ไฟล์ทรัพยากรที่จะแสดงผล | ไม่มีค่าเริ่มต้น | จำกัด การเลือกทรัพยากรไปยังรายการทรัพยากรในไฟล์ | restriction_file: _data/restriction.txt |
default_template | ชื่อไฟล์ของ Template RDF เริ่มต้นในไดเรกทอรี _layouts | ไม่มีค่าเริ่มต้น | ระบุไฟล์เทมเพลตที่คุณต้องการให้ Jekyll ใช้เพื่อแสดงผลทรัพยากร RDF ทั้งหมด | default_template: "rdf_index.html" |
instance_template_mappings | เป้าหมาย URI เป็นสตริง: ชื่อไฟล์ของเทมเพลตเป็นสตริง | ไม่มีค่าเริ่มต้น | แผนที่ที่ให้ URIS เป็นไฟล์เทมเพลตสำหรับการแสดงผลแต่ละอินสแตนซ์ | instance_template_mappings: "http://www.ifi.uio.no/INF3580/simpsons#Abraham": "abraham.html" |
class_template_mappings | เป้าหมาย URI เป็นสตริง: ชื่อไฟล์ของเทมเพลตเป็นสตริง | ไม่มีค่าเริ่มต้น | แผนที่ที่ให้ URIS เป็นไฟล์เทมเพลตสำหรับการแสดงผลทุกกรณีของคลาสนั้น | class_template_mappings: "http://xmlns.com/foaf/0.1/Person": "person.html" |
นอกจากนี้ยังมีรูปภาพ Docker/Podman ที่มี Jekyll และ Jekyll-RDF ติดตั้งไว้ล่วงหน้า คุณสามารถรับได้ด้วย:
docker pull ghcr.io/aksw/jekyll-rdf:latest
และเรียกใช้เช่น
docker run --rm --workdir /page -v $PWD:/page ghcr.io/aksw/jekyll-rdf:latest
หรือปรับแต่งการดำเนินการของ Jekyll ด้วย
docker run --rm --workdir /page -v $PWD/sources:/page -v $PWD/build/jekyll:/build ghcr.io/aksw/jekyll-rdf:latest jekyll build -d /build
จุดเข้าใช้งานของภาพจะดำเนินการ bundle install
ก่อนและเรียกใช้ bundle exec jekyll build
หรือ bundle exec <your command>
เพื่อให้แพ็คเกจที่ติดตั้งระหว่างการรันระบุตัวแปรสภาพแวดล้อม BUNDLE_PATH
ไปยังตำแหน่งที่ยังคงอยู่ระหว่างการรันเช่น -e BUNDLE_PATH=.vendor
ในการปิดใช้งาน Bundler ทั้งหมดที่ตั้ง NO_BUNDLER
เป็นค่าที่ไม่ว่างเปล่า ententpoint จะเรียกใช้คำสั่งของคุณตามที่เป็นอยู่
ชื่อ | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|
BUNDLE_PATH | ทำให้ไม่ได้ | ตั้งค่าเส้นทางที่ Bundler ติดตั้งแพ็คเกจ ดูเอกสาร Bundler |
NO_BUNDLER | ทำให้ไม่ได้ | ตั้งค่าเป็นค่าที่ไม่ว่างเปล่าเพื่อปิดการใช้งานชิ้นส่วน Bundler ทั้งหมดในจุดเข้าใช้งาน |
ในการติดตั้งโครงการด้วยการเปลี่ยน GIT คุณจะต้องใช้ git
ในระบบของคุณ ขั้นตอนแรกคือการโคลนนิ่งที่เก็บ:
git clone [email protected]:AKSW/jekyll-rdf.git
โฟลเดอร์ชื่อ jekyll-rdf
จะถูกสร้างขึ้นโดยอัตโนมัติ คุณต้องเปลี่ยนเป็นโฟลเดอร์นี้และรวบรวม Ruby Gem เพื่อทำการติดตั้งให้เสร็จ:
cd jekyll-rdf
gem build jekyll-rdf.gemspec
gem install jekyll-rdf -*.gem
bundle exec rake test
ทุกครั้งที่มีการดำเนินการทดสอบหน้า Jekyll ภายใน test/source
จะได้รับการประมวลผล เริ่มต้นเว็บเซิร์ฟเวอร์ที่เพรียวบางเพื่อดูผลลัพธ์ในเว็บเบราว์เซอร์เช่น Pythons SimpleHTTPServer
(Python 2 สำหรับ Python 3 มันคือ http.server
):
cd test/source/_site
python -m SimpleHTTPServer 8000
หากต้องการสร้าง API DOC โปรดนำทางไปยังไดเรกทอรี jekyll-rdf/lib
และเรียกใช้
gem install yard
yardoc *
เอกสารที่สร้างขึ้นจะถูกวางลงในไดเรกทอรี jekyll-rdf/lib/doc
Jekyll-RDF ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT