정적 사이트에 RDF 데이터를 포함시키기위한 Jekyll 플러그인.
API 문서는 Rubydoc.info에서 제공됩니다.
Docker Docker 이미지가 있습니다. Docker 사용 섹션을 확인하십시오.
Jekyll RDF 의 전제 조건으로 Jekyll을 설치해야합니다. https://jekyllrb.com/docs/installation/의 설치 지침을 살펴보십시오.
이미 작동하는 Jekyll 설치가있는 경우 Jekyll-RDF 플러그인을 추가 할 수 있습니다. 아마도 당신은 이미 Bundler를 사용하고 있으며 Jekyll 디렉토리에 Gemfile
있습니다. 플러그인 섹션에 Jekyll-RDF를 추가하십시오.
gem "jekyll-rdf", "~> 3.2"
rubygems.org에 나열된대로 현재 사용 가능한 안정 릴리스로 버전 문자열을 교체하십시오. Gemfile
업데이트 한 후에는 bundle install
(또는 bundle install --path vendor/bundle
) 또는 bundle update
실행하려고합니다.
Gemfile
을 사용하여 Jekyll/Ruby 패키지를 관리하지 않는 경우 gem
사용하여 Jekyll-Rdf를 설치하십시오.
gem install jekyll-rdf
소스에서 플러그인을 빌드하려면 개발 섹션을 살펴보십시오.
이 섹션에서는 Jekyll-Rdf를 세 단계로 사용하는 방법을 설명합니다.
템플릿 및 구성 옵션에서 사용하는 모든 필터 및 방법은“매개 변수 및 구성 옵션을 한눈에”섹션에 문서화합니다.
먼저 Jekyll 페이지가 필요합니다. 하나를 만들려면 다음과 같이하십시오.
jekyll new my_page
cd my_page
또한 jekyll-rdf
의 경우 _config.yml
에 필요한 매개 변수가 있습니다. 즉, 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 "
url
+ baseurl
Jekyll RDF에 의해 사용하여 RDF 리소스 페이지를 빌드 해야하는 URL과 관련이 있습니다. 위의 예에서 이것은 iri <http://example.org/simpsons/Bart>
가있는 리소스가 Path /Bart.html
로 렌더링된다는 것을 의미합니다. 또한 Jekyll의 다른 기능과 플러그인은이 두 매개 변수에 따라 다릅니다. 어쨌든 두 매개 변수가 jekyll rdf가 가정 해야하는 기본 경로와 다른 경우, jekyll_rdf
섹션에서 매개 변수 baseiri
설정할 수 있습니다.
baseurl : " /simpsons "
url : " https://beispiel.com "
jekyll_rdf :
baseiri : " http://example.org/ "
특정 클래스 (REST. RDF 유형) 또는 개별 리소스를 템플릿에 매핑 할 수 있습니다.
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 쿼리를 _config.yml
에 restriction
매개 변수로 추가하여 구축하도록 선택된 리소스를 제한 할 수 있습니다. 결과 URI의 자리 표시 자로 ?resourceUri
사용하십시오.
restriction : " SELECT ?resourceUri WHERE { ?resourceUri <http://www.ifi.uio.no/INF3580/family#hasFather> <http://www.ifi.uio.no/INF3580/simpsons#Homer> } "
구현 된 제한에 대한 사전 정의 된 키워드가 3 가지 있습니다.
subjects
모든 대상 URI를로드합니다predicates
모든 술어 우리를로드합니다objects
모든 객체 URI를로드합니다 일부 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
에서 key restriction_file
이있는 파일을 지정합니다. 둘 다, restriction_file
과 restriction
지정되면 Jekyll rdf는 둘 다 결합을위한 페이지를 작성합니다.
또한 빈 노드를 렌더링할지 여부를 결정할 수 있습니다. include_blank
_config.yml
에 추가하면됩니다.
jekyll_rdf :
include_blank : true
마지막으로 옵션 language
사용하여 RDF-Literals에 선호되는 언어를 설정할 수도 있습니다.
jekyll_rdf :
language : " en "
jekyll build
실행하면 RDF 리소스를 _site/…
디렉토리로 렌더링합니다. jekyll serve
실행하면 RDF 리소스를 렌더링하고 일반적으로 http://localhost:4000/
에서 액세스 할 수있는 즉각적인 http-server를 제공합니다. 홍채가 구성된 Jekyll url
및 baseurl
(resp. baseiri
)으로 시작하지 않는 RDF 리소스는 _site/rdfsites/…
서브 디렉토리로 렌더링됩니다.
RDF 데이터를 사용하려면 _layouts
-Directory에서 하나 이상의 파일 (예 : rdf_index.html
또는 person.html
)을 만듭니다. 각 리소스에 대해 페이지가 렌더링됩니다. 아래 예를 참조하십시오 :
---
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 참조).
주어진 술어를 통해 현재 피사체에 연결된 하나의 객체에 액세스하려면 rdf_property
-Filter를 사용하여 page.rdf
데이터를 필터하십시오. 예:
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' }}
주어진 술어를 통해 현재 피사체에 연결된 객체가 둘 이상의 객체를 얻으려면 true
로 설정된 세 번째 인수와 함께 필터 rdf_property
사용하십시오 (언어에 대한 두 번째 인수는 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
필터를 제공합니다.
두 경우 모두 각각의 컨테이너 리소스 resp. 컬렉션의 헤드를 식별 한 다음 각 필터를 통과해야합니다. 컨테이너 rdf:_2
경우 현재 rdf:Bag
rdf:Seq
및 rdf:_3
rdf:Alt
rdf:_1
명시적인 인스턴스를 지원합니다 rdfs:ContainerMembershipProperty
컬렉션은 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 쿼리를 실행하기 위해 액체 필터 sparql_query
구현했습니다. ?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
액체 필터에서 사용할 수있는 접두사 세트를 선언 할 수 있습니다. 이를 통해 각 액체 필터에 필요한 텍스트의 양을 단축 할 수 있습니다. 접두사 선언의 구문은 SPARQL 1.1과 동일합니다. 접두사를 별도의 파일에 넣고 Key rdf_prefix_path
접두사를 사용해야하는 파일의 YAML 프론트 문제에 상대 경로와 함께 포함하십시오.
접두사의 경우 Yaml Front Matter에 정의 된 다른 변수와 동일한 규칙이 적용됩니다. 그런 다음이 변수는 파일과 레이아웃 모두에서 액체 태그를 사용하여 액세스 할 수 있거나 해당 페이지 또는 문제의 게시물이 의존하는 것을 포함 할 수 있습니다. (출처 : Yaml Front Matter). 포함 된 접두사를 사용하는 경우 특히 관련이 있습니다.
리소스의 URI에 단편 식별자 ( #…
)가 포함 된 경우 리소스는 단일 페이지의 단편 식별자까지 동일한 기본 URI를 사용하여 다른 리소스와 함께 호스팅 할 수 있습니다. 페이지는 기본 URI를 통해 액세스 할 수 있으며 템플릿에서는 조각 식별자가있는 개별 URI가 수집 page.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 %}
이 예제는 템플릿 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
의 템플릿으로 전달합니다 (기본 URI가 Fragment Identifier를 제외한 기본 subResources
와 동일한 리소스가있는 리소스. ).
jekyll-rdf
S 필터 중 하나가 반환 한 모든 리소스는 액체가 문자열처럼 처리 할 수있는 객체입니다. 그들은 모두 액체에서 사용할 수있는 다음 방법을 가지고 있습니다.
주제가 현재 자원 인 진술 목록을 반환하십시오. 반환 된 목록의 진술은 해당 직책을 다루면 액세스 할 수 있습니다. Statement.subject
, Statement.predicate
, Statement.object
.
술어가 현재 자원 인 진술 목록을 반환하십시오. 반환 된 목록의 진술은 해당 직책을 다루면 액세스 할 수 있습니다. Statement.subject
, Statement.predicate
, Statement.object
.
객체가 현재 리소스 인 진술 목록을 반환하십시오. 반환 된 목록의 진술은 해당 직책을 다루면 액세스 할 수 있습니다. Statement.subject
, Statement.predicate
, Statement.object
.
이 rdfresource를 나타내는 페이지의 URL을 반환하십시오.
이 rdfresource를 나타내는 페이지로의 경로를 반환하십시오. 조심스럽게 사용하십시오.
이 속성은 파편 식별자 ( http://superresource#anchor
)를 포함하는 아이리스의 페이지 렌더링과 관련이 있습니다. 이 속성은 실제로 주어진 지식 기반에 설명 된 경우 슈퍼 레저스 ( http://superresource
)에 적합합니다.
이 속성은 자원의 각 인스턴스가 현재 사이트 생성의 컨텍스트 내에서 렌더링되는지 여부를 알 수 있습니다. 사용법 : {% if resource.rendered? %}…{% endif %}
.
이 자원을 나타내는 장점을 반환합니다.
시놉시스 : <resource_iri> | rdf_get
매개 변수 :
<resource_iri>
는 접두사 ( prefix:name
) 또는 전체 iri ( <http://ex.org/name>
)가있는 rdf 리소스를 나타내는 문자열입니다. 현재 페이지 사용 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>
은 <rdf_resource>
의 iri를 나타내는 문자열입니다.<property>
는 RDF 술어를 나타내는 문자열, 접두사 ( prefix:name
) 또는 전체 IRI ( <http://ex.org/name>
)입니다.<lang>
은 언어 태그 (예 : de
)입니다. 이 매개 변수가 생략되면 nil
로 교체하십시오.<list>
는 부울 값 ( true
, false
)입니다. 설명 : 트리플 <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>
은 <rdf_resource>
의 iri를 나타내는 문자열입니다.<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>
는 쿼리의 ?resourceUri
대체 할 rdfresource입니다. 이 매개 변수를 생략하거나 현재 페이지 사용 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>
은 <rdf_container_head>
의 iri를 나타내는 문자열입니다. 설명 : 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>
은 <rdf_collection_head>
의 iri를 나타내는 문자열입니다.<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 엔드 포인트를 얻으려면 데이터를 얻습니다 | 기본값이 없습니다 | 웹 사이트를 렌더링 할 위치에서 SPARQL 엔드 포인트에 대한 URL을 지정합니다. | remote: endpoint: "http://localhost:5000/sparql/" |
원격> default_graph | 엔드 포인트 기본값 그래프 대신 사용할 엔드 포인트에서 명명 된 그래프를 선택하십시오. | 기본값이 없습니다 | SPARQL 엔드 포인트에서 선택하려면 IRI를 지정된 그래프로 지정합니다. | remote: endpoint: "http://localhost:5000/sparql/" default_graph: "http://example.org/" |
언어 | 문자열로 언어 태그 | 기본값이 없습니다 | 액체 필터를 사용하여 객체를 선택할 때 선호하는 언어를 지정합니다. | language: "en" |
include_blank | 부울 표현 | 거짓 | 빈 노드도 렌더링 해야하는지 여부를 지정합니다. | include_blank: true |
제한 | sparql-query는 문자열 또는 대상/물체/predicates로서 | 기본값이 없습니다 | 주어진 SPARQL-Query로 리소스 선택을 특수 변수에 제한된 결과로 제한 하는가 ?resourceUri 또는 세 가지 키워드 subjects (주제 URI), 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 | _layouts 디렉토리의 기본 rdf-template의 파일 이름입니다 | 기본값이 없습니다 | 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" |
Jekyll과 Jekyll-RDF가 사전 설치된 Docker/Podman 이미지도 있습니다. 당신은 그것을 얻을 수 있습니다 :
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>
실행합니다. 실행 사이에 설치된 패키지를 유지하려면 런 사이에 지속되는 위치, 예를 들어 -e BUNDLE_PATH=.vendor
사이에 환경 변수 BUNDLE_PATH
지정하십시오. NO_BUNDLER
비어 있지 않은 값으로 설정 한 전체 번들링 물건을 비활성화하려면 EntryPoint가 명령을 그대로 실행합니다.
이름 | 기본 | 설명 |
---|---|---|
BUNDLE_PATH | 세트가 없다 | Bundler가 패키지를 설치하는 경로를 설정하십시오. Bundler Docs도 참조하십시오. |
NO_BUNDLER | 세트가 없다 | EntryPoint의 모든 Bundler 부품을 비활성화하기 위해 비어 있지 않은 값으로 설정 |
Git-Repository와 함께 프로젝트를 설치하려면 시스템에 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
테스트가 실행될 때마다 test/source
내부의 Jekyll 페이지가 처리됩니다. Slim Web Server를 시작하여 웹 브라우저에서 결과를 시청하십시오 (예 : Pythons SimpleHTTPServer
(Python 3의 경우 Python 2, http.server
) :
cd test/source/_site
python -m SimpleHTTPServer 8000
API 문서를 생성하려면 jekyll-rdf/lib
디렉토리로 이동하여 실행하십시오.
gem install yard
yardoc *
생성 된 문서는 jekyll-rdf/lib/doc
디렉토리에 배치됩니다.
Jekyll-Rdf는 MIT 라이센스에 따라 라이센스가 부여됩니다.