Rowlex에는 직렬화 된 객체에서 "RDF : DataType"을 제거하는 방법이 있습니까?
문제
Rowlex에서 각 속성의 "RDF : DataType"속성을 제거하거나 대신 공통 RDF 스키마를 사용할 수 있습니까?
예시:
<MyOntology:Channel>
<MyOntology:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">My news</MyOntology:title>
<MyOntology:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">My desc</MyOntology:description>
</MyOntology:Channel>
해결책
질문은 매우 불분명하므로 일반적인 답변을 얻을 수 있습니다. :) 모든 올빼미 속성은 데이터 유형 또는 객체 유형이어야합니다.
- 객체 유형 속성은 그래프의 두 노드, 즉 피사체뿐만 아니라 트리플의 객체도 URI (또는 빈 노드)를 연결합니다.
- 데이터 유형 속성 : 트리플의 객체는 문자열, 정수, 날짜 시간 등이 될 수있는 구체적인 값입니다.이 콘크리트 값을 "리터럴"-S라고합니다. 기본 유형의 리터럴은 "문자 그럴"이며, 이들은 구체적인 유형 (문자열, 정수, datetime ...)입니다.
온톨로지를 정의 할 때, 데이터 유형 속성을 특정 문자 유형으로 제한하도록 요구되지 않습니다. 모든 종류의 리터럴을 수용하면서 일반적인 상태로 유지할 수 있습니다. Rowlex는 이것을 지원합니다. 일반적인 rdfliteral 클래스와 rdfliteralstring, rdfliteraldateTime 등과 같은 특정 문자 클래스의 호스트가 있습니다. 모든 특정 문자 클래스에는 .NET 유형을 문학적 및 뒤로 변환하기 위해 명시적이고 암시적인 캐스트 구현이 포함되어 있습니다. 따라서 Rowlex에서는 다음을 쓸 수 있습니다.
RdfDocument rdfDoc = new RdfDocument();
// Assuming that Person class and DateOfBirth data type property
// are autogenerated from your person-ontology, AND
// your DateOfBirth data type property is restricted to DateTime
Person p = new Person("joe", rdfDoc);
// Implicit casting from DateTime to RdfLiteralDateTime
p.DateOfBirth = new Sytem.DateTime(1946, 12, 31); // Compiles OK
p.DateOfBirth = 26; // Compiler error
p.DateOfBirth = "Hello World"; // Compiler error
온톨로지의 날짜 데이터 유형 속성이 DateTime으로 제한되지 않으면 위의 모든 줄은 오류없이 컴파일합니다. 그러나 내 개인적인 견해는 더 구체적 일 수 있다면 오류와 잘못된 의사 소통을 방지 할 수 있기 때문에 더 구체적으로 수행 할 수 있다는 것입니다.
제휴하지 않습니다 StackOverflow