2011-03-08 2 views
6

Notation3 파일로 표현되는 트리플을 구문 분석하고 데이터베이스로로드하는 방법은 무엇입니까? 나는 다소 JenaSesame에 익숙하지만, 이것들은 완전한 Notation3이 아닌 RDF 나 Turtle을 처리하는 것처럼 보였다.Notation3을 데이터베이스에로드

N3을 다루기위한 강력한 도구는 비교적 적습니다. 내가 찾은 적은 here이며 기본적인 명령 줄 동작 만 수행 할 수있는 대략적인 Python 스크립트로 구성되어 있으며 표준 패키지, 배포 또는 유지 관리가없는 것 같습니다. 기본 파이썬 라이브러리는 notation3.py 인 것처럼 보입니다. 그러나 단일 홈 페이지를 찾을 수 없었고 인터넷에 흩어져있는 수십 개의 다른 버전이있었습니다. 나는 그래서 임의의 쿼리를 실행할 수있는 데이터베이스에이 (유사한 기록 및 잠재적으로 수천)을로드 할 수 있도록하려면

{ 
    [] 
     :genus "Abies" ; 
     :species "alba" ; 
     :name [:value "Silver Fir" ; :usage "common" ; :language "English" ] ; 
     :name [:value "European Silver Fir" ; :usage "common" ; :language "English" ] ; 
     :name [:value "abeto blanco" ; :usage "common" ; :language "Spanish" ] ; 
     :name [:value "abeto plateado" ; :usage "common" ; :language "Spanish" ] ; 
     :name [:value "Edeltanne" ; :usage "common" ; :language "German" ] ; 
     :name [:value "Silbertanne" ; :usage "common" ; :language "German" ] ; 
     :name [:value "Weißtanne" ; :usage "common" ; :language "German" ] ; 
     :stem!:type :erect ; 
     :stem!:height [ :value!:start 30.0 ; :value!:end 50.0 ; :value!:units "m" ] ; 
     :bark!:color :grey ; 
     :bark!:ridges :irregular ; 
     :foliage!:seasonality :evergreen ; 
     :foliage!:type :needle ; 
     :foliage!:arrangement :alternate ; 
     :foliage!:length [ :value!:start 1.0 ; :value!:end 3.0 ; :value!:units "cm" ] ; 
     :foliage!:width [ :value!:start 0.2 ; :value!:end 0.3 ; :value!:units "cm" ] ; 
     :foliage!:color :green ; 
     :foliage!:spiney :FALSE ; 
     :flower [ :gender :male ; :inflorescence :catkin ; :sense :straight ; :color :brown ] ; 
     :flower [ :gender :male ; :inflorescence :catkin ; :sense :straight ; :color :yellow ] ; 
     :flower [ :gender :female ; :inflorescence :catkin ; :sense :straight ; :color :pink ] ; 
     :fruit [ :kind :cone ; :color :brown ; ] ; 
} 
:is-a :botanical-classification ; 
:source [ 
    :uri <http://originating/site> ; 
    :name "John Doe" ; 
    :data-collection-date "2005-01-01" ; 
] ; 
:transcribed-by "Al Nonymous" ; 
:transcription-date "2010-09-01" . 

: 예를 들어

, 나는 다음 N3는 식물 분류를 나타내는이 있다고 "2010 년에 일반 스페인어 이름이 들어있는 레코드를 누가 대체 했습니까?" 또는 "속 X와 연관된 평균 꽃 색깔은 무엇입니까?"

현재 현재 시맨틱 웹 도구 및 N3와 관련이 있습니까?

답변

3

기본적인 문제는 N3이 항상 실험 표기법이라는 것입니다. 전체 언어는 결코 광범위하게 구현되지 않았습니다. The diagram in this document은 매우 유익합니다. 샘플은 그래프 리터럴을 사용하며 광범위하게 구현 된 N3 하위 집합 외부에 있습니다. 이제 명명 된 그래프가 널리 사용되었으므로 입력 파일을 직접 파싱하지 않고 Jena를 비롯한 대부분의 RDF 시스템에서 동일한 정보를 표현할 수 있습니다.

나인 경우 프론트 엔드 변환 단계를 작성하려고합니다. 아마도 Ruby와 같은 문자열과 템플릿을 사용하는 언어를 사용하고있을 것입니다. 그런 다음 입력 파일을 표준 RDF 프로세서에서 처리 할 수있는 형식으로 변환 할 수 있습니다. 예를 들어, "Al Nonymous"에 의해 작성된 문장을 나타내는 그래프 리터럴은 그 분류를 표명하는 Al의 행동을 나타내는 bNode로 변환 될 수 있습니다. 또는 리터럴에서 각 그래프를 추출하고 합성 된 그래프 이름을 가진 파일에 저장할 수 있으므로 현재있는 중첩 그래프 구조가 유지됩니다. 비슷하게, property!path이라는 표기법은 표준 RDF로 쉽게 재 작성 될 수 있지만 약간 더 장황해질 수 있습니다.

또는 데이터 제공 업체에게 처리하기 쉬운 형식으로 출력 해 줄 것을 요청하십시오!

관련 문제