2013-07-31 2 views
1

회사의 직원과 참깨 RDF 데이터베이스를 만들고 싶습니다. 근로자는 특정 기간의 일부 프로젝트에 참여합니다. 그들은 컴퓨터도 가지고 있습니다. 따라서 데이터베이스 이후에는 과거 또는 현재 어떤 프로젝트에서 근무한 사람들이나 사람들이 사용하는 컴퓨터에 따라 데이터베이스를 검색 할 수 있어야합니다. 따라서 작업자, 회사, 프로젝트, 컴퓨터의 특성을 주문하는 방법을 결정하지 않습니다. 위치를 알 수 없기 때문입니다. 예를 들어, 근로자의 과거 회사 또는 과거 프로젝트 ... 아래의 RDF 파일에 연도를 어떻게 배치 할 수 있습니까? 나는 적당한 방법으로이 파일에 일년을 didnt한다, 나는 생각한다. 시작 날짜와 종료 날짜는 어떤 방식 으로든 날짜 범위로 정의해야합니까? 그 후 sparql을 사용하여 지금 또는 이전에 특별한 프로젝트에서 일하는 사람들을 찾는 방법은? 아니면 다른 컴퓨터에서 같은 컴퓨터를 사용하고 있습니까? Semantic Web-RDF-Workers 프로젝트 및 수년에 걸친 회사의 컴퓨터 사용

<rdf:RDF 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:Worker="http://www.semantic.fake/Worker#" 
xmlns:Company="http://www.semantic.fake/Company" 
xmlns:Project="http://www.semantic.fake/Project"> 

<rdf:Description 
rdf:about="http://www.semantic.fake/Worker/Worker1"> 
    <Worker:worker_name>Bill Gates</Worker:worker_name> 
    <Worker:company_name>Microsoft</Worker:company_name> 
    <Worker:department>Software</Worker:department> 
    <Worker:task>Co-Founder</Worker:task> 
    <Worker:project_name>Windows9</Worker:project_name> 
    <Worker:year>2010</Worker:year> 

</rdf:Description> 

<rdf:Description 
rdf:about="http://www.semantic.fake/Worker/Worker2"> 
    <Worker:worker_name>Steve Jobs</Worker:worker_name> 
    <Worker:company_name>Apple</Worker:company_name> 
    <Worker:department>Software</Worker:department> 
    <Worker:task>Co-Founder</Worker:task> 
    <Worker:project_name>Inertial Navigation</Worker:project_name> 
    <Worker:year>2008</Worker:year> 
    <Worker:computer>LG2</Worker:computer> 
</rdf:Description> 

<rdf:Description 
rdf:about="http://www.semantic.fake/Worker/Worker3"> 
    <Worker:worker_name>Ozge Akbulut</Worker:worker_name> 
    <Worker:company_name>Pozitron</Worker:company_name> 
    <Worker:department>Software</Worker:department> 
    <Worker:task>Intern</Worker:task> 
    <Worker:project_name>Semantic Web</Worker:project_name> 
    <Worker:year>2013</Worker:year> 
    <Worker:computer>LG1</Worker:computer> 
</rdf:Description> 

<rdf:Description 
rdf:about="http://www.semantic.fake/Company/Company1"> 
    <Company:company_name>Pozitron</Company:company_name> 
    <Company:location>Ayazağa</Company:location> 
</rdf:Description> 

<rdf:Description 
rdf:about="http://www.semantic.fake/Company/Company2"> 
    <Company:company_name>Garanti Teknoloji</Company:company_name> 
    <Company:location>Güneşli</Company:location> 
</rdf:Description> 

<rdf:Description 
rdf:about="http://www.semantic.fake/Company/Company3"> 
    <Company:company_name>Microsoft</Company:company_name> 
    <Company:location>US</Company:location> 
</rdf:Description> 

<rdf:Description 
rdf:about="http://www.semantic.fake/Company/Company4"> 
    <Company:company_name>Apple</Company:company_name> 
    <Company:location>US</Company:location> 
</rdf:Description> 

<rdf:Description 
rdf:about="http://www.semantic.fake/Project/Project1"> 
    <Project:project_name>BKM Express</Project:project_name> 
    <Project:company_name>Pozitron</Project:company_name> 
    <Project:year>2013</Project:year> 
</rdf:Description> 

<rdf:Description 
rdf:about="http://www.semantic.fake/Project/Project2"> 
    <Project:project_name>Iscep</Project:project_name> 
    <Project:company_name>Pozitron</Project:company_name> 
    <Project:year>2013</Project:year> 
</rdf:Description> 

<rdf:Description 
rdf:about="http://www.semantic.fake/Project/Project3"> 
    <Project:project_name>Semantic Web</Project:project_name> 
    <Project:company_name>Pozitron</Project:company_name> 
    <Project:year>2013</Project:year> 
</rdf:Description> 

<rdf:Description 
rdf:about="http://www.semantic.fake/Project/Project4"> 
    <Project:project_name>Inertial Navigation</Project:project_name> 
    <Project:company_name>Apple</Project:company_name> 
    <Project:year>2009</Project:year> 
</rdf:Description> 

<rdf:Description 
rdf:about="http://www.semantic.fake/Project/Project5"> 
    <Project:project_name>Windows9</Project:project_name> 
    <Project:company_name>Microsoft</Project:company_name> 
    <Project:year>2011</Project:year> 
</rdf:Description> 


</rdf:RDF> 
+0

아직 작성하지 않았다면 RDF로 작업하는 방법에 대한 몇 가지 소개 자료/자습서를 읽는 것이 좋습니다. W3C RDF 입문서 (http://www.w3.org/TR/rdf-primer/)가 좋은 시작일 것입니다. –

답변

0

개념 모델에서 벗어나 개념 모델에 대해 생각해보십시오. 모델에는 근로자, 프로젝트, 회사 및 부서가 있습니다. RDF 모델에서 이들 모두를 클래스로 표현하는 것이 좋습니다. 훨씬 쉽게 읽을 수 및 편집, 그리고 데이터의 실제 구조가 훨씬 명확. 정말 추천 할 수 있기 때문에 여담으로

ex:Worker a rdfs:Class . 
ex:Project a rdfs:Class . 
ex:Company a rdfs:Class . 
ex:Department a rdf:Class . 

(

, 내가 대신 RDF/XML의 RDF에 대한 Turtle 구문을 사용하고 있습니다

그러나 특정 프로젝트/회사/부서 (예 : 시작했을 때와 그 곳에서 작업을 중단했을 때)의 특정 사람들의 고용에 관해서도 말하고 싶습니다. . 즉, 그 관계를 그 자체로 개체로 표현할 필요가 있으므로 그 것에 대해 말할 수 있습니다. 예를 들어, 근로자 ex:worker1이 두 날짜 사이에 기업 ex:apple에 의해 고용되고,이 같은 뭔가를 할 수 ex:microsoft 나중에 회사에 의해 고용 된 것을 표현 :

ex:worker1 a ex:Worker ; 
      ex:name "Steve Jobs"; 
      ex:employment ex:employment1 ; 
      ex:employment ex:employment2 . 

ex:employment1 a ex:EmploymentRelation ; 
       ex:forCompany ex:apple ; 
       ex:startDate "20010101T00:00:00Z"^^xsd:dateTime ; 
       ex:endDate "20050101T00:00:00Z"^^xsd:dateTime . 

ex:employment2 a ex:EmploymentRelation ; 
       ex:forCompany ex:microsoft ; 
       ex:startDate "20060101T00:00:00Z"^^xsd:dateTime ; 
       ex:endDate "20080101T00:00:00Z"^^xsd:dateTime . 

당신은 데이터가있는 경우, 위와 같이 모델링이 있으면 당신은, 당신이 (간단한 예로서) 같은 것을 할 것 두 날짜 사이에 사과 위해 일한 모든 사람을 묻는 SPARQL 쿼리를하고 싶어 :

SELECT ?worker ?name 
WHERE { ?worker a ex:Worker ; 
       ex:name ?name ; 
       ex:employment [ ex:forCompany ex:apple ; 
           ex:startDate ?start ; 
           ex:endDate ?end ] . 
     FILTER (?start > "200T00:00:00Z"^^xsd:dateTime) 
     FILTER (?end < "20120101T00:00:00Z"^^xsd:dateTime 
} 

(그런데, 위의 프로그램을 다시하는 이유 거북이를 사용하는 것은 좋은 생각입니다 : 거북이 구문과 SPARQL 쿼리 언어는 매우 가깝게 일치합니다 - 한 번 y 하나는 이해하고 다른 하나는 자연스럽게 따른다).

+0

상세한 답변을 해주셔서 대단히 감사합니다. 그러나 RDF/XML 구문을 OWL로 처리 했으므로 지금 코드가 더 크기 때문에 돌아갈 수 없습니다. 날짜 간격을 설명하기 위해 RDF/XML 구문을 보여 주시겠습니까? 예를 들어, 여기 내 코드의 일부이며 직원의 시작일과 종료일을 추가하고 싶습니다. –

+0

< rdf : type rdf : resource = "http://rdf.pozitron.com/people/"/> Ozge Akbulut 인턴 <사람 : <조직 : 조직 이름> Pozitron <조직 : 위치> 이스탄불 <조직 이름 : organization : rdf : resource = "http : //rdf.pozitron을 사용하십시오. 시맨틱 웹

+0

물론 돌아갈 수도 있습니다. 코드도 달라지지 않을 것입니다. 다른 파서/작성기로 전환하십시오. 기존 데이터를 참깨 저장소에로드 한 다음 내보내기 만하면 쉽게 변환 할 수 있습니다. 그러나 요점은 필자가 모든 데이터를 변환해야한다는 것은 아니지만 아이디어).하지만 터틀에서 (또는 좀 더 정확하게는 추상적 인 RDF 모델 즉 그래프 구조에서) * 생각하는 것보다 더 많이 생각해야합니다. –