티스토리 뷰

type이 여러개인 개체를 출력할 때, 한 행으로 합쳤더니 prefix없이 URI가 모두 들어가서 읽기 어려운 상태가 되었다.

원래 계획은 prefix를 붙여서 출력하고 싶었지만, 그러려면 prefix를 모두 알고 있는 상태에서 변환하는 작업이기때문에 포기하고 다른 방법을 찾았다.

 

http://www.w3.org/2000/01/rdf-schema#Class 이러한 URI가 있을 때, 마지막 '/'를 기준으로 가장 뒤에 있는 문자열만 출력하게 하고 싶어서 찾아본 결과 정규식을 사용한 예시를 참고하였다.

 

-  BIND (REPLACE(STR(?type), "^.*/([^/]*)$", "$1") as ?typeName)

PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>

SELECT ?URI (GROUP_CONCAT(DISTINCT ?typeName; separator = ", ") AS ?types) ?label ?definition 
WHERE { 
    ?URI a ?type ;
        rdfs:label ?label ;
        skos:definition ?definition .
    BIND (REPLACE(STR(?type), "^.*/([^/]*)$", "$1") as ?typeName)
}
GROUP BY ?URI ?label ?definition
1
"rdf-schema#Class, owl#Class"
"address"@en
"index to a location to which communications may be delivered"
2
"rdf-schema#Class, owl#Class"
"addressing scheme"
"system for allocating addresses to objects"

 

^.*/([^/]*)$

  1. ^: 이 기호는 문자열의 시작을 나타냅니다. 이 패턴은 문자열의 시작부터 매칭함
  2. .*: .은 어떤 문자 한 개를 나타내며, *는 그 앞에 있는 문자가 0번 이상 반복되는 것을 나타냅니다. 따라서 .*는 모든 문자(0번 이상 반복)를 의미합니다. 여기서는 문자열의 시작부터 어떤 문자열이든 매칭함
  3. /: 슬래시 문자(/)를 나타냅니다. 이것은 직접적으로 문자열에 있는 슬래시와 매칭시킴
  4. ([^/]*): 괄호로 둘러싸인 부분은 그룹으로 캡처. [^/]는 슬래시 문자를 제외한 어떤 문자 한 개를 나타내며, *는 그 앞에 있는 문자가 0번 이상 반복되는 것을 나타냅니다. 따라서 ([^/]*)는 슬래시를 제외한 어떤 문자열(0번 이상 반복)을 캡처하는 그룹을 나타냄
  5. $: 이 기호는 문자열의 끝을 나타냅니다. 
  6. 결론적으로, 문자열 끝부분에서 슬래시(`/)로 시작하는 모든 문자열을 의미함

참고

Stack overflow, SPARQL - Extract Last part of a URI

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함