2017-05-03 14 views
0

SPARQL에 문제가 있습니다. 카테고리에서 뭔가를 선택하고 싶습니다. 예를 들어 과목. 나는 http://dbpedia.org/snorql에서 이와 같은 질의를한다.SPARQL - skos에서 선택 : category - Virtuoso 37000

SELECT ?category ?subject WHERE 
    { 
    ?category a skos:Concept . 
    ?category skos:Concept: American_punk_rock_guitarists. 
    ?category dct:subject ?subject . 
    } LIMIT 1000 

나는 Virtuoso 37000 오류가 있습니다. 나는 그 이유를 알지 못합니다.

P. SPARQL에서 처음 시작하기 좋은 책입니까? SPARQL, 2nd Edition 배우기 SPARQL 1.1을 사용하여 쿼리 및 업데이트?

+0

두 번째 트리플 패턴은 분명히 잘못된 것입니다. 구문을 확인하십시오. – AKSW

+0

그리고 "원하는 주제 (예 : 주제)"를 선택하기를 원합니다. 이것은 완전히 혼란스럽고, 여러 가지를 혼합하는 것입니다. 범주에 속하는 것은 주제로 분류됩니다. 아래의 답변을 참조하십시오. 올바른 방법입니다. – AKSW

+0

나중에 참조 할 수 있도록 전체 오류 텍스트는 자체적으로 오류 코드보다 더 자주 드러납니다. 또한 적어도 SPARQL을 배우는 동안 [드래그 앤 드롭, 그래픽 쿼리 빌더 iSPARQL] (http://dbpedia.org/isparql/)을 사용하면 도움이 될 것입니다. – TallTed

답변

2

구문 오류가 하나 이상 있습니다. 두 번째 트리플에 두 번째 콜론 (:)이 있습니다.

의미 상 ... dbpedia의 클래스 나 술어를 정말로 모르지만 skos : 개념은 유형과 술어가 될 수 있습니까?

난 당신에게 특별히 카테고리 "American_punk_rock_guitarists"10 개 회원

내가 American punk rock guitarists의 개념으로 자신을 dbpedia's faceted free text search에 가서 익숙에 의해 함께이를 넣어 반환하는 유효한 쿼리, Joey Ramone

prefix dbpcat: <http://dbpedia.org/resource/Category:> 

    SELECT ?subject ?category 
    WHERE 
     { values ?category { dbpcat:American_punk_rock_guitarists } . 
     ?subject dct:subject ?category } 
    LIMIT 10 
0

을 썼다 Virtuoso 37000 오류의 측면에서 귀하의 실수는 다음과 같습니다 :

  1. : skos : 컨셉 2 행에이 있고 "American_punk_rock_guitarists"접두어가 누락되었습니다. American_punk_rock_guitarists :

  2. American_punk_rock_guitaristsdbpcat를하고 있어야합니다. 이 당신에게 빈 결과를 제공하는 것입니다 있지만, 문법적으로 정확한 버전 또는 쿼리는 다음과 같습니다

    prefix dbpcat: <http://dbpedia.org/resource/Category:> 
    
    SELECT ?category ?subject WHERE 
        { 
        ?category a skos:Concept . 
        ?category skos:Concept dbp:catAmerican_punk_rock_guitarists. 
        ?category dct:subject ?subject . 
        } LIMIT 1000 
    

    이 기능은 다음 이유로 인해 빈 세트를 반환

을 수행합니다. skos : 개념은 클래스가 아니라 속성입니다. {Subject | Predicate? Object}와 관련해서는 적절한 SPARQL 쿼리 [1]에서 skos : Concept를 Subject 및/또는? Object로만 볼 수 있습니다. 클래스와 속성을 구분하는 가장 쉬운 방법은 클래스는 대문자 (예 : skos : 개념)로 시작하고 속성 (술어)은 소문자 (예 : rdf : 유형)로 시작해야한다는 것입니다.

b. dbpcat : American_punk_rock_guitarists은 "skos : Concept"유형입니다. 이 엔티티 (? 주체)에 대한 DBPedia 페이지를 보면 "rdf : type"행에 표시됩니다. 더 자세히 살펴보면이 개념이 dct 인 것을 볼 수 있습니다 : 주제는이며 다른 여러 개체들 [2][email protected] 마크 밀러의 쿼리에 추가

또한 결과를 제공 할 것입니다이 하나

prefix dbpcat: <http://dbpedia.org/resource/Category:> 

    SELECT ?subject ?category 
    WHERE 
     { ?subject dct:subject ?category. 
     ?category a skos:Concept. 
     filter(?category = dbpcat:American_punk_rock_guitarists). 

     } 
    LIMIT 10 

SKOS : 당신이 뭔가를 찾고 있다면 개념으로 만이 사용되는 방법의 예로서, 여기에 필요하지 않습니다를 "모든 종류의 유형 - skos : 개념"

링크 :

  1. https://www.w3.org/2009/08/skos-reference/skos.html#Concept
  2. http://dbpedia.org/resource/Category:American_punk_rock_guitarists